参数log_output指定了慢查询输出的格式 , 默认为file,可以将它设置成table , 将变成了上面的slow_log中
mysql> show variables like "log_output";+---------------+-------+| Variable_name | Value |+---------------+-------+| log_output | FILE |+---------------+-------+1 row in set (0.19 sec)
但是多数情况下这样做没什么必要 , 这不但对性能有较大影响 , 而且 MySQL 5.1 在将慢查询记录到文件中时已经支持微秒级别的信息 , 然而将慢查询记录到表中会导致时间粒度退化为只能到秒级 , 而秒级别的慢查询日志没有太大的意义
慢查询日志分析工具mysqldumpslow命令
当越来越多的SQL查询被记录到慢查询日志文件中 , 这时候直接看日志文件就不容易了 , MySQL提供了mysqldumpslow 命令解决:
[root@iz2zeaf3cg1099kiidi06mz mysql]# mysqldumpslow iz2zeaf3cg1099kiidi06mz-slow.logReading mysql slow query log from iz2zeaf3cg1099kiidi06mz-slow.logCount: 1 Time=60.02s (60s) Lock=0.00s (0s) Rows=149272.0 (149272), root[root]@[117.136.86.151] select * from vote_record_memoryCount: 1 Time=14.85s (14s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@[117.136.86.151] CALL add_vote_memory(N)Count: 1 Time=1.72s (1s) Lock=0.00s (0s) Rows=0.0 (0), root[root]@[117.136.86.151] INSERT into vote_record SELECT * from vote_record_memoryCount: 1 Time=0.02s (0s) Lock=0.00s (0s) Rows=142.0 (142), root[root]@[117.136.86.151] select * from vote_record_memory where vote_id = N
更多关于 mysqldumpslow 命令的介绍 , 请参阅 :
https://github.com/luisedware/Archives/issues/7pt-query-digest 工具
pt-query-digest 是分析MySQL查询日志最有力的工具 , 该工具功能强大 , 它可以分析binlog , Generallog , slowlog , 也可以通过show processlist或者通过 tcpdump 抓取的MySQL协议数据来进行分析 , 比 mysqldumpslow 更具体 , 更完善 。以下是使用pt-query-digest的示例:
//直接分析慢查询文件pt-query-digest slow.log > slow_report.log
该工具可以将查询的剖析报告打印出来 , 可以分析结果输出到文件中 , 分析过程是先对查询语句的条件进行参数化 , 然后对参数化以后的查询进行分组统计 , 统计出各查询的执行时间 , 次数 , 占比等 , 可以借助分析结果找出问题进行优化 。更多关于pt-query-digest的安装与使用 , 请参阅 :
www.ywnds.com/?p=8179查询日志查看日志记录了所有对 MySQL 数据库请求的信息 , 不论这些请求是否得到了正确的执行 。默认为 主机名.log
mysql> show variables like "general_log%";+------------------+--------------------------------------------+| Variable_name | Value |+------------------+--------------------------------------------+| general_log | OFF || general_log_file | /var/lib/mysql/iz2zeaf3cg1099kiidi06mz.log |+------------------+--------------------------------------------+2 rows in set (0.24 sec)
默认情况下不启动查询日志 , 必须要先开启 。mysql> set global general_log='ON';Query OK, 0 rows affected (0.05 sec)mysql> show variables like "general_log%";+------------------+--------------------------------------------+| Variable_name | Value |+------------------+--------------------------------------------+| general_log | ON || general_log_file | /var/lib/mysql/iz2zeaf3cg1099kiidi06mz.log |+------------------+--------------------------------------------+2 rows in set (0.11 sec)
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 分析2.5万篇博客后,来看看后端程序员每天都在写什么
- 炎炎夏日必备七歀凉饮 清淡养生促健康
- 轻巧简约,超强待机!家装网盘必备~优越者S105A硬盘底座拆机简评
- 程序员当独立开发者开发几个月的作息及收支等总结体会
- 家常土豆饼
- 含完整源代码和开发文档 人工智能图像识别绘本阅读方案
- Redis企业级开发与运维-初识Redis
- 要成为一名成功的开发人员,您应该放弃的22件事
- 聊聊Spring boot2.X开发环境搭建和基本开发
- 冬天吃什么早餐?推荐几款必备的御寒早餐