MySQL优化与实践

一、MySQL优化概括

MySQL优化与实践_第1张图片

 

二、SQL优化

MySQL优化与实践_第2张图片

 

实践:

 

1.查看是否开启了慢查询日志

show variables like 'slow_query_log'

 MySQL优化与实践_第3张图片

 

没有开启

2.查看是否开启了未使用索引SQL记录到日志

show variables like '%log%';

 MySQL优化与实践_第4张图片

 

没有开启

3.查看慢查询多少秒才记录到日志

show variables like 'long_query_time';

 MySQL优化与实践_第5张图片

 

4.查看慢查询日志位置

MySQL优化与实践_第6张图片

 

5.开启上面的一些配置

set global slow_query_log=on;//开启慢查询日志

set global log_queries_not_using_indexes=on;//开启记录没有用索引的SQL到慢查询

set global long_query_time=1;//超过1秒的查询记录到日志

 MySQL优化与实践_第7张图片

 

6.MySQL慢查询日志分析工具mysqldumpslow,官方的

7.MySQL慢查询日志分析工具pt-query-digest,第三方、更好。SQL次数、百分比、具体SQL

 MySQL优化与实践_第8张图片

 

8.如何分析SQL查询

 MySQL优化与实践_第9张图片

MySQL优化与实践_第10张图片

MySQL优化与实践_第11张图片

9.explain实践,查看计划(SQL执行前都有执行计划)

 

MySQL优化与实践_第12张图片

 

10.具体的SQL优化

(1)count()和Max()的优化

(2)子查询优化

(3)group by的优化

(4)Limit查询的优化

(5)等等

三、索引优化

 MySQL优化与实践_第13张图片

 

解释上面3个为什么:

1.一个索引包含了查询的所有列,那么称这个索引为覆盖索引。覆盖索引效率高

2.字段多导致一次索引获取数据量大,IO操作成本就会高

3.怎么知道离散度?select distinct,越高的离散度越好,排前面

MySQL优化与实践_第14张图片

 

重复冗余的索引不仅影响插入而且影响查询

 MySQL优化与实践_第15张图片

 

复制粘贴,只要输入密码即可

MySQL优化与实践_第16张图片

 

四、数据库结构优化

1.

 MySQL优化与实践_第17张图片

 

innodb中,对于Null的字段需要额外存储,尽量not null

 MySQL优化与实践_第18张图片

MySQL优化与实践_第19张图片

 

2.垂直拆分

 MySQL优化与实践_第20张图片

 

字段很多,拆分多个表,用外键(无论是不是物理上的)关联

3.水平拆分

 

 

把数据分到多个结构一致的表里去,上下太长(数据量多)需要水平切割。

 MySQL优化与实践_第21张图片

 

五、系统配置优化

1.操作系统方面

 MySQL优化与实践_第22张图片

MySQL优化与实践_第23张图片

表比较多的话,查询会占用文件数

 

2.MySQL本身配置优化方面

 MySQL优化与实践_第24张图片

MySQL优化与实践_第25张图片

MySQL优化与实践_第26张图片

MySQL优化与实践_第27张图片

一个网站,点进去 向导式地教你,然后下载配置文件

 

六、硬件优化

 MySQL优化与实践_第28张图片

MySQL优化与实践_第29张图片

 

 非原创,学习整理

你可能感兴趣的:(MySQL优化与实践)