MySQL的优化与实战

一、MySQL优化概括

MySQL的优化与实战

 

二、SQL优化

MySQL的优化与实战

 

实践:

 

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

show variables like 'slow_query_log'

 MySQL的优化与实战

 

没有开启

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

show variables like '%log%';

 MySQL的优化与实战

 

没有开启

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

show variables like 'long_query_time';

 MySQL的优化与实战

 

4.查看慢查询日志位置

MySQL的优化与实战

 

5.开启上面的一些配置

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

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

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

 MySQL的优化与实战

 

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

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

 MySQL的优化与实战

 

8.如何分析SQL查询

 MySQL的优化与实战

MySQL的优化与实战

MySQL的优化与实战

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

 MySQL的优化与实战

MySQL的优化与实战

 

10.具体的SQL优化

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

(2)子查询优化

(3)group by的优化

(4)Limit查询的优化

(5)等等

三、索引优化

 MySQL的优化与实战

 

解释上面3个为什么:

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

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

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

MySQL的优化与实战

 

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

 MySQL的优化与实战

 

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

MySQL的优化与实战

 

四、数据库结构优化

1.

 MySQL的优化与实战

 

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

 MySQL的优化与实战

MySQL的优化与实战

 

2.垂直拆分

 MySQL的优化与实战

 

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

3.水平拆分

 MySQL的优化与实战

 

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

 MySQL的优化与实战

 

五、系统配置优化

1.操作系统方面

 MySQL的优化与实战

MySQL的优化与实战

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

 

2.MySQL本身配置优化方面

 MySQL的优化与实战

MySQL的优化与实战

MySQL的优化与实战

MySQL的优化与实战

MySQL的优化与实战

MySQL的优化与实战

MySQL的优化与实战

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

 

六、硬件优化

 MySQL的优化与实战

MySQL的优化与实战

 

 非原创,学习整理