对SQL查询语句进行执行性能分析:
1、set profiling=1; 开启性能统计
2、show profiles; 显示统计结果
如果是root用户,可以直接查看information_schema的PROFILING表,可以看到每步具体对应于源码的哪一行。
基本上耗时的在Sending data上,这步官方说是在磁盘执行查找数据的过程,优化就是尽量走索引,一全表扫就慢。
对表进行优化(磁盘整理):
红色标记的是优化的SQL,目的是整理磁盘中的文件,紫色标记的是优化前后的对比。
show processlist; 查看正在执行的操作(看哪些阻塞)
执行计划分析SQL(看有没有走索引、where等):
explain 出现 Using filesort 原因是order没有使用索引,使用了外部的文件排序,这也会影响性能,可以增加复合索引
MySQL中复合索引中列的顺序对性能的影响(原英文):
Reorganizes the physical storage of table data and associated index data, to reduce storage space and improve I/O efficiency
when accessing the table. The exact changes made to each table depend on the storage engineused by that table.(大致意思:减少了磁盘IO操作,提高性能)。