相关参数
slow_query_log [= {0 | 1}]:是否开启慢查询日志,0为关闭,1为开启。
long_query_time:慢查询阈值,当查询时间多于设定的阈值时,记录日志。
slow_query_log_file:提定日志目标。可以不设置该参数,系统则会默认给一个缺省的文件host_name-slow.log
log-output[={FILE|TABLE}]:指定日志存到文件,还是表格。
log_queries_not_using_indexes:未使用索引的查询也被记录到慢查询日志中(可选项)。
log-slow-admin-statements:在写入慢查询日志的语句中包含慢管理语句(可选项)。
min_examined_row_limit:检查少于此行数的查询不会记录到慢速查询日志中。
慢查询配置
mysql> show variables like ‘%slow_query_log%‘;
+---------------------+----------------------------------------+
| Variable_name | Value |
+---------------------+----------------------------------------+
| slow_query_log | ON |
| slow_query_log_file | /usr/local/mysql/var/huosuSDK-slow.log |
+---------------------+----------------------------------------+
2 rows in set (0.00 sec)
slow_query_log的值为OFF表示慢查询禁用,ON表示慢查询开启。
set global slow_query_log=1
全局开启慢查询,但mysql如果重启,为失效。如果要永久生效,得在/ect/my.cnf下配置
log-output=FILE 保存文件
slow_query_log=1 开启慢查询
long_query_time=2 时间2秒
log_queries_not_using_indexes=1 没有索引的也记录
然后重启mysql。
如果你想查询有多少条慢查询记录,可以使用系统变量。
show global status like ‘%Slow_queries%‘;
也可以用工具官方提供的工具来分析慢查询
mysqldumpslow
mysqldumpslow解析MySQL慢查询日志文件并打印其内容摘要。
通常情况下,mysqldumpslow组查询除了数字和字符串数据值的特定值之外是相似的。 显示汇总输出时,将这些值“提取”为N和“S”。 -a和-n选项可用于修改值抽象行为。
像这样调用mysqldumpslow:
shell> mysqldumpslow [options] [log_file ...]
mysqldumpslow支持以下选项。
Format Description
-a 不要把所有的数字都抽象成N和字符串S
-n 至少指定数字的抽象数字
--debug 编写调试信息
-g 只考虑符合模式的语句
--help 显示帮助信息并退出
-h 日志文件名中的服务器的主机名
-i 服务器实例的名称
-l 不要从总时间中减去锁定时间
-r 颠倒排序顺序
-s 如何排序输出
-t 仅显示第一个数字查询
--verbose 详细模式
原文:http://blog.51cto.com/xtceetg/2064188