MySQL 自带 slow log 的分析工具 mysqldumpslow ,但是没有说明。本文通过分析该脚本,介绍了其用法。
[-o!mC)L0slow log 是 MySQL 根据 SQL 语句的执行时间设定,写入的一个文件,用于分析执行较慢的语句。
*[&Gi:l8Lb!E9O0LUPA开源社区j
l)Y9]v],Kf只要在 my.cnf 文件中配置好:
4?I+AD+@|R0log-slow-queries = [slow_query_log_filename]
E#dXnD0即可记录超过默认的 10s 执行时间的 SQL 语句。
6D5B)u
ZX s0tfx0如果要修改默认设置,可以添加:
n7{^5f*v_EcM(N0long_query_time = 5
LUPA开源社区E:[7Q Y2p;M
q设定为 5s 。
T$B.})qj0LUPA开源社区yov"Tx$u\N如果要记录所有 SQL 语句,可以写入:
0^dO9VU2VOB0log-long-format
~0J2@9MP\03~`9H/J/n Y*I0)w3F*kyY\I0T&i$}7CqO3pf0# t=time, l=lock time, r=rows
LUPA开源社区t+r]i|p;J ]# at, al, 以及 ar 是对应的平均值
LUPA开源社区vx1~h7T5v-Z-NkI3s_@
I)Y~9o0mysqldumpslow 可以接受的参数有:
v/F;B*P"}V$?2T0'v+', # verbose
LUPA开源社区tI0JiI'd+', # debug
LUPA开源社区'@0Iy!rh's=s', # 排序 (t, at, l, al, r, ar etc)
!x _1CW@9z"G0'r!', # 倒排序 (largest last instead of first)
LUPA开源社区 WxK,RX;wj't=i', # 显示最高的 n 个查询
LUPA开源社区)f m0e9i0W2~\l'a!', # 不把所有的数字以 N ,字符串以 'S' 显示
"lc6k+\v0'n=i', # abstract numbers with at least n digits within names
LUPA开源社区
G ?0xJX F!I},p'g=s', # grep: only consider stmts that include this string
LUPA开源社区Q1i6Gju7q"\'h=s', # hostname of db server for *-slow.log filename (can be wildcard)
LUPA开源社区x4~Y/Yu'i=s', # name of server instance (if using mysql.server startup scrīpt)
}/R)CURu0'l!', # don't subtract lock time from total time
%Z(`7R]y0LUPA开源社区%e/Cv'VT"}h