一、定位慢查询SQL
截取SQL语句的方式:
全面日志查询
慢SQL日志查询
二进制日志查询
进程列表查询
引擎状态
TCP/IP
注意:关注运行最慢的SQL查询并不是SQL语句优化的唯一技术需求,优化执行频率高的语句同样能够显著改进系统性能,因为这样可以让你的数据库系统能够处理更多的SQL语句。
慢SQL日志查询
1、开启慢查询日志
进程列表查询
二、分析SQL
三、调优
对表或SQL的调优,要基于数据量多少来判断是否有调优的必要
1、SQL性能关注层面:SQL对应业务有无优化空间、表设计是否合理、索引失效是否可以优化
2、SQL问题分析步骤:确认SQL对应业务->确认表数据量大小->查看表索引使用情况->查看SQL执行计划
SQL的优化:
1. 索引的优化(索引的类型\使用条件)
2. 执行计划的优化
3. 减少没有必要的SQL
4. 在业务层能处理的尽可能在业务层处理(limit的分页\绑定变量)
5. 表结构的设计是否合理(尽可能使用int型主键\不存大数据的字段\字段类型的选择)
6. 数据库系统文件类型的选择
7. 数据库服务器本身的性能
8. 当你无法决定使用哪些索引,使用哪些表连接的时候,请交给mysql自己决定
现在主流的sql优化方向是:
1. 业务本身有没有优化的空间
2. 表的设计是否合理
3. 索引失效的情况优化
1、索引失效优化
2、数据库表结构设计不合理
ID不是int,字段内容过大,字段过多,磁盘IO性能差,不必要的数据库操作。