mysql_SQL性能分析
1、sql执行频率
MySQL客户端连接成功后,通过show [ sessionlglobal ] status 命令可以提供服务器状态信息。通过如下指令,可以查询当前数据库的 insert 、UPDATE 、DELETE 、SELECT 的访问频次。
SHOW GLOBAL STATUS LIKE 'com_______'; (7个下划线)
2、慢查询日志
慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志。
MySQL的慢查询日志默认没有开启,需要MySQL的配置文件(/etc/my.cnf)中配置。
查询是否开启: show variables like 'slow_query_log';
配置中加入如下:(配置完后重启sql)
# 开启MySQL慢日志查询开关 show_query_log=1 # 设置慢日志的时间为2秒,sql语句执行时间超过2秒,就会视为慢查询,记录慢查询日志。 long_query_time=2
3、profile详情
show profile 能够在做sql优化时帮助我们了解事件都耗费在哪里了。通过have_profiling 参数,能够看到当前mysql是否支持profile操作。
show @@have_profiling;
默认profiling是关闭的,可以通过set语句在session/global级别开启profiling.
set profiling = 1;
执行一系列的业务sql的操作,然后通过如下指令查看的执行耗时;
查看每一条sql的耗时基本情况: show profiles;
查看指定query_id 的sql语句各个阶段的耗时情况: show profile for query_id;
查看指定query_id 的sql语句CPU的使用情况: show profile cpu for query query_id;
4、explain执行计划
explain 或者desc ,命令获取mysql如何执行select语句的信息,包括在select语句执行过程中表如何连接和连接的顺序。
直接在select语句之前加上关键字explain / desc。