首页 / Mysql / 详解MySQL 慢查询

详解MySQL 慢查询

查询mysql的操作信息查询mysql的操作信息show [session|global] status like …. 如果你不写 [session|global] 默认是session 会话,只取出当前窗口的执行,如果你想看所有(从mysql 启动到现在,则应该 global)

查询mysql的操作信息

查询mysql的操作信息show [session|global] status like …. 如果你不写 [session|global] 默认是session 会话,只取出当前窗口的执行,如果你想看所有(从mysql 启动到现在,则应该 global)

通过查询mysql的读写比例,可以做相应的配置优化;

慢查询

当Mysql性能下降时,通过开启慢查询来获得哪条SQL语句造成的响应过慢,进行分析处理。当然开启慢查询会带来CPU损耗与日志记录的IO开销,所以我们要间断性的打开慢查询日志来查看Mysql运行状态。

慢查询能记录下所有执行超过long_query_time时间的SQL语句, 用于找到执行慢的SQL, 方便我们对这些SQL进行优化.

慢查询开启设置

也可以在配置文件中更改
修改mysql配置文件my.ini[windows]/my.cnf[Linux]加入,注意必须在[mysqld]后面加入

使用慢查询

Example1:

Example2:

利用存储过程构建一个大的数据库来进行测试;

数据准备

开启慢查询后每天都有可能有好几G的慢查询日志,这个时候去人工的分析明显是不实际的;

慢查询分析工具:

mysqldumpslow

该工具是慢查询自带的分析慢查询工具,一般只要安装了mysql,就会有该工具;

常见用法

注意: 使用mysqldumpslow的分析结果不会显示具体完整的sql语句,只会显示sql的组成结构;

假如: SELECT * FROM sms_send WHERE service_id=10 GROUP BY content LIMIT 0, 1000;
mysqldumpslow来显示

pt-query-digest

说明

pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的MySQL协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进行优化。
pt-query-digest是一个perl脚本,只需下载并赋权即可执行。

安装

语法及重要选项

第一部分:总体统计结果:

标准分析报告解释

详解MySQL 慢查询

Overall: 总共有多少条查询,上例为总共266个查询。
Time range: 查询执行的时间范围。
unique: 唯一查询数量,即对查询条件进行参数化以后,总共有多少个不同的查询,该例为4。
total: 总计 min:最小 max: 最大 avg:平均
95%: 把所有值从小到大排列,位置位于95%的那个数,这个数一般最具有参考价值。
median: 中位数,把所有值从小到大排列,位置位于中间那个数。

第二部分: 查询分组统计结果:

详解MySQL 慢查询

这部分对查询进行参数化并分组,然后对各类查询的执行情况进行分析,结果按总执行时长,从大到小排序。
Response: 总的响应时间。
time: 该查询在本次分析中总的时间占比。
calls: 执行次数,即本次分析总共有多少条这种类型的查询语句。
R/Call: 平均每次执行的响应时间。
Item : 查询对象

第三部分:每一种查询的详细统计结果:

详解MySQL 慢查询

由上图可见,1号查询的详细统计结果,最上面的表格列出了执行次数、最大、最小、平均、95%等各项目的统计。
Databases: 库名
Users: 各个用户执行的次数(占比)
Query_time distribution : 查询时间分布, 长短体现区间占比,本例中1s-10s之间查询数量没有,全部集中在10S里面。
Tables: 查询中涉及到的表
Explain: 该条查询的示例

用法示例

(1)直接分析慢查询文件:

(2)分析最近12小时内的查询:

(3)分析指定时间范围内的查询:

(4)分析只含有select语句的慢查询

(5) 针对某个用户的慢查询

(6) 查询所有所有的全表扫描或full join的慢查询

(7)把查询保存到test数据库的query_review表,如果没有的话会自动创建;

(8)把查询保存到query_history表

(9)通过tcpdump抓取mysql的tcp协议数据,然后再分析

(10)分析binlog

(11)分析general log

以上就是详解MySQL 慢查询的详细内容,更多关于MySQL 慢查询的资料请关注我是攻城狮其它相关文章!

本文来自网络,不代表我是攻城狮立场,转载请注明出处:https://www.54gcs.cn/sql/mysql/5934.html

helwo作者

上一篇
下一篇

为您推荐

发表评论

联系我们

联系我们

在线咨询: QQ交谈

邮箱: web@5vo.cn

工作时间:周一至周五,9:00-17:30,节假日休息
关注微信
微信扫一扫关注我们

微信扫一扫关注我们

手机访问
手机扫一扫打开网站

手机扫一扫打开网站

返回顶部
跳至工具栏