MySQL数据库优化(四)
慢查询
慢查询是MySQL提供的一种查询SQL执行效率的工具,通过该工具的设置可以获取SQL执行的信息。
查看慢查询
mysql> SHOW GLOBAL VARIABLES LIKE 'slow_query_log';
开启/关闭慢查询
mysql> SET GLOBAL slow_query_log = 1; #开启 mysql> SET GLOBAL slow_query_log = 0; #关闭
查看慢查询时间
mysql> SHOW GLOBAL VARIABLES LIKE 'long_query_time';
设置慢查询时间
mysql> SET GLOBAL long_query_time = 5;
查看慢查询日志测次数
mysql> SHOW STATUS LIKE 'slow_queries';
查看没有使用索引的查询
mysql> SET GLOBAL log_queries_not_using_indexes = 1; #开启 mysql> SET GLOBAL log_queries_not_using_indexes = 0; #关闭
如果值设置为ON,则会记录所有没有利用索引的查询(注意:如果只是将log_queries_not_using_indexes设置为ON,而将slow_query_log设置为OFF,此时该设置也不会生效,即该设置生效的前提是slow_query_log的值设置为ON),一般在性能调优的时候会暂时开启。
设置慢查询输出格式
mysql> SHOW VARIABLES LIKE '%log_output%' mysql> SET GLOBAL log_output = 'TABLE'
可以为FILE、TABLE或FILE,TABLE
查看文件地址
mysql> SHOW VARIABLES LIKE 'slow_query_log_file'
如果是TABLE,在mysql库里slow_log表
慢查询日志分析工具mysqldumpslow
mysqldumpslow --help 查看帮助信息 或者man mysqldumpslow
whereis mysqldumpslow 查看linux命令安装在哪个目录
-s:排序
t:查询时间
c:访问次数
l:锁定定时
r:返回的记录
-g:后边可以跟正则表达式,用于过滤
-t NUM :显示的条数
案例:
1、取出耗时最长的前2条sql
[root@localhost ~]# mysqldumpslow -s t -t 2 test-slow.log
2、–g从结果中过滤-g后面的正则表达式的内容
[root@localhost ~]# mysqldumpslow -s t -t 2 -g 'exists' test-slow.log
show profile
用于分析当前会话中语句执行的资源消耗情况
查看profile
mysql> SHOW GLOBAL VARIABLES LIKE 'profiling';
开启/关闭profile
mysql> SET GLOBAL profiling = 1; #开启 mysql> SET GLOBAL profiling = 0; #关闭
显示当前执行的语句和时间
mysql> SHOW PROFILES;
显示当前查询语句执行的时间和系统资源消耗
mysql> SHOW PROFILE cpu, block io FOR QUERY 1;