Mysql 进阶学习笔记

目录

 

MySQL体系结构和引擎

范式:

索引

索引的使用:

视图:

触发器:

SQL优化步骤:

SQL优化:

应用优化:

内存管理及优化:

Mysql锁

SQL技巧:

Mysql日志:

Mysql复制:

MySQL体系结构和引擎

Mysql 进阶学习笔记_第1张图片

整个流程是,上层代码获取连接池连接,数据库获取sql语句,解析,自动优化,放入缓存。调用存储引擎。在底层文件系统操作数据。

Mysql 进阶学习笔记_第2张图片

存储引擎:

Mysql 进阶学习笔记_第3张图片

重点看InnoDB和MyISAM。都是表级的索引,而非数据库级别

Mysql 进阶学习笔记_第4张图片

InnoDB特性:外键。

Mysql 进阶学习笔记_第5张图片

Mysql 进阶学习笔记_第6张图片

InnoDB存储方式:

Mysql 进阶学习笔记_第7张图片

InnoDB还支持事务。

MyISAM:

Mysql 进阶学习笔记_第8张图片

Mysql 进阶学习笔记_第9张图片

以下两个仅了解:

Mysql 进阶学习笔记_第10张图片

Mysql 进阶学习笔记_第11张图片

 

范式:

Mysql 进阶学习笔记_第12张图片

以下表为例:

Mysql 进阶学习笔记_第13张图片

系这一列不满足第一范式,因为这一列又分割成了两列,所以修改后如下:

Mysql 进阶学习笔记_第14张图片

满足第一范式之后依旧存在的问题:

 Mysql 进阶学习笔记_第15张图片

因此考虑如何满足第二范式:

Mysql 进阶学习笔记_第16张图片

因为学号和课程名称可以确定其他所有列是唯一,所以这两个接近码,不过这个码并没有实现完全依赖,即单学号就可以确定姓名,姓名不依赖于课程。所以要消除部分依赖。因此要对表进行拆分。

Mysql 进阶学习笔记_第17张图片

改造后满足第二范式,但不满足第三范式:需要消除传递依赖即系名依赖于学号,系主任依赖于系名。因此需要再拆分出一张表。

Mysql 进阶学习笔记_第18张图片

 

索引

简单概念看图,索引如何加快查找。innodb底层由B+树实现。

Mysql 进阶学习笔记_第19张图片

Mysql 进阶学习笔记_第20张图片Mysql 进阶学习笔记_第21张图片

B树的构造:

Mysql 进阶学习笔记_第22张图片

Mysql 进阶学习笔记_第23张图片

Mysql 进阶学习笔记_第24张图片

Mysql 进阶学习笔记_第25张图片

Mysql 进阶学习笔记_第26张图片

B+树

Mysql 进阶学习笔记_第27张图片

Mysql 进阶学习笔记_第28张图片

索引的分类:

Mysql 进阶学习笔记_第29张图片

创建索引:默认自动创建主键索引的

 

Mysql 进阶学习笔记_第30张图片

Mysql 进阶学习笔记_第31张图片

Mysql 进阶学习笔记_第32张图片

Mysql 进阶学习笔记_第33张图片

索引设计原则:

Mysql 进阶学习笔记_第34张图片

Mysql 进阶学习笔记_第35张图片

索引的使用:

Mysql 进阶学习笔记_第36张图片

注意查询复合索引时的具体列。最左原则,必须要复合索引的第一个列才会使用索引。

Mysql 进阶学习笔记_第37张图片

Mysql 进阶学习笔记_第38张图片

Mysql 进阶学习笔记_第39张图片

Mysql 进阶学习笔记_第40张图片

Mysql 进阶学习笔记_第41张图片

Mysql 进阶学习笔记_第42张图片

Mysql 进阶学习笔记_第43张图片

Mysql 进阶学习笔记_第44张图片

解决方案:仅查找索引内的列:覆盖索引

如果查的列,某一条数据占用的比例较大,比如99%都是,则不走索引。

Mysql 进阶学习笔记_第45张图片

底层会自动判断走不走,主要看数据占数据表的比例。多则不走索引。

Mysql 进阶学习笔记_第46张图片

Mysql 进阶学习笔记_第47张图片

Mysql 进阶学习笔记_第48张图片

查看索引使用情况:

Mysql 进阶学习笔记_第49张图片

视图:

Mysql 进阶学习笔记_第50张图片

触发器:

Mysql 进阶学习笔记_第51张图片

Mysql 进阶学习笔记_第52张图片

Mysql 进阶学习笔记_第53张图片

Mysql 进阶学习笔记_第54张图片

Mysql 进阶学习笔记_第55张图片

Mysql 进阶学习笔记_第56张图片

SQL优化步骤:

Mysql 进阶学习笔记_第57张图片

查询特定表的影响的行数:global是历史以来,不加为当前连接。

Mysql 进阶学习笔记_第58张图片

Mysql 进阶学习笔记_第59张图片

Mysql 进阶学习笔记_第60张图片

Mysql 进阶学习笔记_第61张图片

Mysql 进阶学习笔记_第62张图片

这个id指定了表实际的查询顺序。

Mysql 进阶学习笔记_第63张图片

Mysql 进阶学习笔记_第64张图片

从上往下,效率越来越低。

Mysql 进阶学习笔记_第65张图片

Mysql 进阶学习笔记_第66张图片

Mysql 进阶学习笔记_第67张图片

Mysql 进阶学习笔记_第68张图片

Mysql 进阶学习笔记_第69张图片

filesort和temporary需要优化。

Mysql 进阶学习笔记_第70张图片

Mysql 进阶学习笔记_第71张图片

Mysql 进阶学习笔记_第72张图片

trace分析优化器:

Mysql 进阶学习笔记_第73张图片

SQL优化:

Mysql 进阶学习笔记_第74张图片

Mysql 进阶学习笔记_第75张图片

Mysql 进阶学习笔记_第76张图片

如果建表有唯一索引,默认会启用唯一性校验。手动关闭可加速。

Mysql 进阶学习笔记_第77张图片

Mysql 进阶学习笔记_第78张图片

Mysql 进阶学习笔记_第79张图片

Mysql 进阶学习笔记_第80张图片

order by优化:

Mysql 进阶学习笔记_第81张图片

用到的还是索引覆盖。如果查询的数据在索引内会有用。

Mysql 进阶学习笔记_第82张图片

多字段排序,如果一个升序,一个降序不会走索引。

Mysql 进阶学习笔记_第83张图片

Mysql 进阶学习笔记_第84张图片

Mysql 进阶学习笔记_第85张图片

Mysql 进阶学习笔记_第86张图片

建议使用union来替换:求并集。

Mysql 进阶学习笔记_第87张图片

Mysql 进阶学习笔记_第88张图片

Mysql 进阶学习笔记_第89张图片

思路二需要主键自增,且不能出现断层。

Mysql 进阶学习笔记_第90张图片

Mysql 进阶学习笔记_第91张图片

忽略索引:

Mysql 进阶学习笔记_第92张图片

注意和use index的区别。force是强制使用的。

Mysql 进阶学习笔记_第93张图片

应用优化:

Mysql 进阶学习笔记_第94张图片

Mysql 进阶学习笔记_第95张图片

Mysql 进阶学习笔记_第96张图片

Mysql 进阶学习笔记_第97张图片

Mysql 进阶学习笔记_第98张图片

Mysql 进阶学习笔记_第99张图片

Mysql 进阶学习笔记_第100张图片

Mysql 进阶学习笔记_第101张图片

Mysql 进阶学习笔记_第102张图片

Mysql 进阶学习笔记_第103张图片

内存管理及优化:

Mysql 进阶学习笔记_第104张图片

Mysql 进阶学习笔记_第105张图片

 Mysql 进阶学习笔记_第106张图片

注意两者区别,Innodb还缓存数据块和索引块,myisam只缓存索引块。

Mysql 进阶学习笔记_第107张图片

Mysql 进阶学习笔记_第108张图片

Mysql锁

Mysql 进阶学习笔记_第109张图片

Mysql 进阶学习笔记_第110张图片

Mysql 进阶学习笔记_第111张图片

加了写锁,其他事务读写都得等。

Mysql 进阶学习笔记_第112张图片

Mysql 进阶学习笔记_第113张图片

Mysql 进阶学习笔记_第114张图片

InnoDB行锁:

Mysql 进阶学习笔记_第115张图片

Mysql 进阶学习笔记_第116张图片

Mysql 进阶学习笔记_第117张图片

Mysql 进阶学习笔记_第118张图片

Mysql 进阶学习笔记_第119张图片

Mysql 进阶学习笔记_第120张图片

Mysql 进阶学习笔记_第121张图片

Mysql 进阶学习笔记_第122张图片

Mysql 进阶学习笔记_第123张图片

SQL技巧:

Mysql 进阶学习笔记_第124张图片

Mysql 进阶学习笔记_第125张图片

Mysql 进阶学习笔记_第126张图片

Mysql 进阶学习笔记_第127张图片

Mysql 进阶学习笔记_第128张图片

日期函数:

Mysql 进阶学习笔记_第129张图片

Mysql 进阶学习笔记_第130张图片

Mysql日志:

Mysql 进阶学习笔记_第131张图片

Mysql 进阶学习笔记_第132张图片

Mysql 进阶学习笔记_第133张图片

Mysql 进阶学习笔记_第134张图片

Mysql 进阶学习笔记_第135张图片

Mysql 进阶学习笔记_第136张图片

Mysql 进阶学习笔记_第137张图片

Mysql复制:

Mysql 进阶学习笔记_第138张图片

Mysql 进阶学习笔记_第139张图片

Mysql 进阶学习笔记_第140张图片

Mysql 进阶学习笔记_第141张图片

 Mysql 进阶学习笔记_第142张图片

Mysql 进阶学习笔记_第143张图片

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(网站开发)