- 通过show status了解各种sql的执行频率
我们比较关心的几个统计参数如下- Com_select,执行select操作的次数,一次查询只累加1
- Com_inseart,执行inseat操作的次数
- Com_update,执行update操作的次数
- Com_delete,执行delete操作的次数
- Com_select,执行select操作的次数,一次查询只累加1
可以用下面语句,了解当前数据库是更新和插入为主,还是以查询操作为主,以及各种类型的sql大致执行比例多少
show status like 'Com_%'
定位执行效率低的sql语句
- 通过慢查询日志定位那些执行效率较低的sql,mysqlid写一个包含所有执行时间超过long_query_time秒的sql语句的日志文件
- 慢查询是执行之后才会记录,所以应用执行效率出现问题的时候查询慢查询日志并不能定位问题,可以使用show processlist命令查看当前mysql在执行的线程包含线程的状态,是否锁表等,实时查看sql的执行情况,同时对一些锁表操作进行优化
- 通过慢查询日志定位那些执行效率较低的sql,mysqlid写一个包含所有执行时间超过long_query_time秒的sql语句的日志文件
通过explain分析低效率sql的执行计划
select_type.表示select的类型,常见的取值simple(简单表,即不用表连接或者子查询).primary(主查询,即外层查询),union(UNION的第二个或后面的查询语句),subquery(子查询中的第一个select)- 通过show profile分析sql
- 通过trace分析优化器如何选择执行计划
- 对于order by 优化
