1.查看SQL执行频率:
mysql客户端连接成功后,可通过 show[session | global] status 命令查看服务器状态信息。show [session | global] status可以根据需要加上参数“session”或者“global”来显示当前连接session级的计结果和global级(从上次数据库启动到现在)的统计结果。如果不写,默认使用参数显Sessionr.
连接mysql:
mysql> use dome_02; ----使用表
2.显示当前session中所有统计参数的值:(即是统计查看增删改查等操作次数)
show status like 'Com_______'
命令中有7个下划线(_);
3.查看全局的(自数据库上次启动至今)的统计结果:
show global status like 'Com_______'
4.对于Innodb数据库引擎的执行命令:(操作中影响行插入 / 读 的统计)
show global status like 'Innodb_rows_%'
以上操作用于定位数据库以什么操作为主!
5.定位执行效率低的SQL:
1)慢查询日志:查看执行的日志文件,定位出执行时间长的低效SQL语句;
2)explain分析执行计划:在任何SQL语句前加上explain
explain select * from tb_item where id = 1;
6.show profile分析SQL(5.0版本): show profile / show profiles
show profiles能够在做SQL优化时帮助我们了解时间都消耗到哪了?
通过have_profiling 参数,能够看到当前mysql是否支持profile;
默认profiling是关闭的,可以通过set语句在Session级别开启profiling;
mysql> set profiling=1;
可以执行类似以下命令后,再执行 show profiles,来查看SQL语句执行的耗时。
7.trace分析优化器执行计划:在mysql体系结构的优化器(Optimizer),而trace就是用来分析优化器的执行计划。
用法:打开trace,设置格式为JSON,并设置trace最大能够使用的内存大小,避免解析过程中因为默认内存过小而不能完全展示。
SET optimizer_trace="enabled=on",end_markers_in_json=on; -- 开启
SET optimizer_trace_max_mem_size = 1000000; -- 设置
-- 执行SQL语句:
select * from tb_item where id < 5;
-- 最后,检查information_schema.optimizer_trace就可以知道mysql是怎么执行SQL的。
select * from information_schema.optimizer_trace\G;