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;
posted @ 2017-12-19 21:22  huanStephen  阅读(235)  评论(0编辑  收藏  举报