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本身配置优化方面







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


非原创,学习整理

浙公网安备 33010602011771号