MySQL优化与实践

一、MySQL优化概括

二、SQL优化

实践:

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

show variables like 'slow_query_log'

 

没有开启

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

show variables like '%log%';

 

没有开启

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

show variables like 'long_query_time';

 

4.查看慢查询日志位置

5.开启上面的一些配置

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

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

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

 

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

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

 

8.如何分析SQL查询

 

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

 

10.具体的SQL优化

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

(2)子查询优化

(3)group by的优化

(4)Limit查询的优化

(5)等等

三、索引优化

 

解释上面3个为什么:

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

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

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

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

 

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

四、数据库结构优化

1.

 

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

 

2.垂直拆分

 

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

3.水平拆分

 

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

 

五、系统配置优化

1.操作系统方面

 

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

2.MySQL本身配置优化方面

 

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

六、硬件优化

 

 非原创,学习整理

猜你喜欢

转载自www.cnblogs.com/chz-blogs/p/9381221.html