专栏首页开源优测MySQL诊断调优常用SQL语

MySQL诊断调优常用SQL语

在很多时候,我们需要通过SQL语句来查看MySQL执行SQL的情况,例如查看SQL执行队列,是否存在慢查询等等。

先看下基础配置,监控mysql执行的sql语句需要先开启相关日志

linux系统

可以在/etc/mysqld中添加如下:

指定日志路径

log =/usr/local/mysql/mysql.log (这个路径自定义即可)

就可以使用:

tail -f mysql.log

如果需要监控慢查询可以添加如下内容:

添加慢查下记录

log-slow-queries = /usr/local/mysql/slowquery.log(这个路径自定义即可)

long_query_time = 1

windows系统

修改my.ini,在mysqld下添加log一行,

[mysqld] log = "D:/tmp/mysql_log/mysql_log.sql" (这里路径自定义即可)

然后,重新启动mysql,就可以实时看到myql服务器当前正在执行的语句了。

常用的SQL,用于诊断排查问题

注:下列SQL在执行时,可能还需要你开启MySQL相应的配置项,请根据提示进行配置

1. 查看当前应用连接,连接数突增排查

select user,SUBSTRING_INDEX(host,':',1) as ip , count(*) as count,db from information_schema.processlist where host not in ('localhost') and user not in ('replicater') group by ip order by count;

2. 当前有没有锁

select * from information_schema.innodb_locks;

3. 查看哪些sql执行最多

SELECT SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,SUM_ROWS_SENT,SUM_ROWS_EXAMINED,FIRST_SEEN,LAST_SEEN FROM performance_schema.events_statements_summary_by_digest where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' ORDER BY COUNT_STAR desc LIMIT 1;

4. 哪个SQL扫描的行数最多(IO消耗)

SELECT SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,AVG_TIMER_WAIT,SUM_ROWS_SENT,SUM_ROWS_EXAMINED,FIRST_SEEN,LAST_SEEN FROM performance_schema.events_statements_summary_by_digest where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' ORDER BY SUM_ROWS_EXAMINED desc LIMIT 1\G

5. 哪个SQL使用的临时表最多

SELECT SCHEMA_NAME,DIGEST_TEXT,SUM_CREATED_TMP_DISK_TABLES,SUM_CREATED_TMP_TABLES,FIRST_SEEN,LAST_SEEN FROM performance_schema.events_statements_summary_by_digest where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' ORDER BY SUM_CREATED_TMP_DISK_TABLES desc LIMIT 1\G

6. 哪个SQL排序数最多(CPU消耗)

SELECT SCHEMA_NAME,DIGEST_TEXT,COUNT_STAR,SUM_ROWS_SENT,SUM_SORT_ROWS,FIRST_SEEN,LAST_SEEN FROM performance_schema.events_statements_summary_by_digest where SCHEMA_NAME is not null and SCHEMA_NAME !='information_schema' ORDER BY SUM_SORT_ROWS desc LIMIT 1\G

7. 哪个索引使用最多

SELECT OBJECT_NAME, INDEX_NAME, COUNT_FETCH, COUNT_INSERT, COUNT_UPDATE, COUNT_DELETE FROM performance_schema.table_io_waits_summary_by_index_usage ORDER BY SUM_TIMER_WAIT DESC limit 1;

8. 哪个索引没有使用过

SELECT OBJECT_SCHEMA, OBJECT_NAME, INDEX_NAME FROM performance_schema.table_io_waits_summary_by_index_usage WHERE INDEX_NAME IS NOT NULL AND COUNT_STAR = 0 AND OBJECT_SCHEMA <> 'mysql' ORDER BY OBJECT_SCHEMA,OBJECT_NAME;

9. 哪个表、文件逻辑IO最多(热数据)

SELECT FILE_NAME,EVENT_NAME,COUNT_READ,SUM_NUMBER_OF_BYTES_READ,COUNT_WRITE,SUM_NUMBER_OF_BYTES_WRITE FROM performance_schema.file_summary_by_instance ORDER BY SUM_NUMBER_OF_BYTES_READ+SUM_NUMBER_OF_BYTES_WRITE DESC LIMIT 2\G

10. 查看某条sql各阶段执行时间,可开启profiling功能

set global profiling=on;

其他的,大家可以去搜索下,更多的SQL性能分析、调优方面的常用语句

大家可以自己动手去试试上面的语句,看看是什么样的输出,如果发现语句有问题,可以加下面的微信,进去一起交流。

扫一扫加我微信,入群一起讨论交流各种开源测试技术、工具、经验和解决方案。

大数据测试过程、策略及挑战

大数据测试之ETL测试入门

软件测试工程师又一大挑战:大数据测试

jmeter入门系列v1.0电子版

Python3接口测试pdf+源码免费领

快学Python3系列

本文分享自微信公众号 - 开源优测(DeepTest),作者:苦叶子

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • [快学Python3]目录与文件操作

    概述 本文就os和path模块中常用的方法进行了说明和列举,更多的方法和技巧请参加官方文档 os模块常用方法 我们先看看os模块所提供的目录操作方法,直接上代码...

    苦叶子
  • PyCharm常用技巧集合

    地址:http://note.youdao.com/noteshare?id=d3736a71e42ff2a9c338830a1ba0e3fd&sub=C7E4...

    苦叶子
  • Faker Providers使用及自定义开发

    前面两篇文章,一篇介绍了利用Python原生生成测试数据基于Python生成中文测试数据,一篇介绍了Faker库生成测试数据基于Faker生成中文测试数据实例,...

    苦叶子
  • .NET Core的日志[4]:将日志写入EventLog

    面向Windows的编程人员应该不会对Event Log感到陌生,以至于很多人提到日志,首先想到的就是EventLog。EventLog不仅仅记录了Window...

    蒋金楠
  • 本地存储之localStorage

      存储上限限制:不同的浏览器存储的上限也不一样,但大多数浏览器把上限限制在5MB以下。

    ProsperLee
  • BI技术调研----工具对比及Surperset 之 docker安装

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangyaninglm/article/detail...

    流川疯
  • 不止有董小姐,格力还要PK美的机器人业务

    格力不只有董事长董明珠才是当红明星,这不,在一份特定对象调研的投资者关系活动记录表中,格力电器公司方面称,从营收角度,机器人在短期内不可能有显著贡献,只是一个业...

    机器人网
  • Linux 服务器快速屏蔽指定国家的IP段访问

    ipset是iptables的扩展,它允许你创建匹配整个IP地址集合的规则。可以快速的让我们屏蔽某个IP段。这里分享个屏蔽指定国家访问的方法,有时候还可以有效的...

    周俊辉
  • phpstorm配置debug

    写代码前先配置好debug的开发环境是一个良好的开始,也是一个好习惯,遇到问题时要比去写各种echo,prinr_r去一步一步打印要方便很多,下面就为大家介绍如...

    槽痞
  • pymysql KeyError:25

    没有找到出错的具体原因,所以只能更换一个引擎,在这里找到了一个临时方案: 安装新的引擎:

    py3study

扫码关注云+社区

领取腾讯云代金券