开启mysql慢查询日志
相关指令:
//查看是否慢查询
show variables like 'slow_query_log';
//设置慢查询日志保存位置
set global slow_query_log_file = '/home/mysql/sql_log/mysql-slow.log';
//设置是否记录没有使用索引的搜索
set global log_queries_not_using_indexes=on;
//设置慢查询记录事件,0为记录所有
//注意,这个设置后使用show variables like 'long_query_time'查看可能没变
//只需要退出mysql重新登录查看就可以看到已经发生了改变
set global long_query_time=0.01;
将慢查询打开以后,可以使用tail -50 mysql-slow.log
来查看慢查询日志,格式如下:
# Time: 2017-03-07T13:34:19.800916Z
# User@Host: root[root] @ localhost [] Id: 6
# Query_time: 0.000217 Lock_time: 0.000111 Rows_sent: 2 Rows_examined: 2
SET timestamp=1488893659;
select * from store limit 10;
//各部分的内容说明,从上到下分别为
//执行的时间
//执行SQL的主机信息
//SQL的执行信息
//SQL执行时间
//SQL内容
分析工具mysqldump
在实际生产环境中,可能一天要产生几个G的慢查询日志,单靠人工查看慢查询日志的方式显然效率太低。
可以使用mysql自带的mysqldumpslow工具来进行分析
使用mysqldumpsql -h
可以查看自带帮助说明
Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
Parse and summarize the MySQL slow query log. Options are
--verbose verbose
--debug debug
--help write this text to standard output
-v verbose
-d debug
-s ORDER what to sort by (al, at, ar, c, l, r, t), 'at' is default
al: average lock time
ar: average rows sent
at: average query time
c: count
l: lock time
r: rows sent
t: query time
-r reverse the sort order (largest last instead of first)
-t NUM just show the top n queries
-a don't abstract all numbers to N and strings to 'S'
-n NUM abstract numbers with at least n digits within names
-g PATTERN grep: only consider stmts that include this string
-h HOSTNAME hostname of db server for *-slow.log filename (can be wildcard),
default is '*', i.e. match all
-i NAME name of server instance (if using mysql.server startup script)
-l don't subtract lock time from total time
//常用的参数
//-s 指定顺序
//-t 指定显示的条数
//结果示例
Count: 1 Time=1.03s (1s) Lock=0.00s (0s) Rows=1.0 (1), root[root]@localhost
select sleep(N)
Count: 1 Time=0.10s (0s) Lock=0.02s (0s) Rows=0.0 (0), root[root]@localhost
CREATE TABLE test.documents
(
id INTEGER PRIMARY KEY NOT NULL AUTO_INCREMENT,
group_id INTEGER NOT NULL,
group_id2 INTEGER NOT NULL,
date_added DATETIME NOT NULL,
title VARCHAR(N) NOT NULL,
content TEXT NOT NULL
)
分析工具pt-query-digest 2.2.7
安装方法:
ubuntu下可直接使用apt-get install percona-toolkit
使用方法:
直接分析查看:pt-query-digest slow.log
示例:
分析结果由三部分组成,第一部分是汇总信息包括总的查询数、跨越的时间、发送的行数和扫描的行数等信息。
第二部分,是统计慢查询所在的表和查询的类型以及相应的时间和时间占比等信息。
第三部分是具体慢查询情况。
# 240ms user time, 20ms system time, 25.61M rss, 88.04M vsz
# Current date: Fri Mar 10 10:43:11 2017
# Hostname: iZ9460e7nt4Z
# Files: mysql-slow.log
# Overall: 89 total, 24 unique, 0.00 QPS, 0.00x concurrency ______________
# Time range: 2017-03-08 14:22:58 to 2017-03-10 10:39:22
# Attribute total min max avg 95% stddev median
# ============ ======= ======= ======= ======= ======= ======= =======
# Exec time 1s 68us 1s 15ms 6ms 105ms 332us
# Lock time 113ms 0 51ms 1ms 103us 7ms 22us
# Rows sent 1.82k 0 1000 20.98 34.95 102.01 5.75
# Rows examine 6.52k 0 1000 74.99 136.99 105.76 76.28
# Query size 7.15k 15 489 82.26 192.76 66.57 72.65
# Profile
# Rank Query ID Response time Calls R/Call V/M Item
# ==== ================== ============= ===== ====== ===== ===============
# 1 0xF9A57DD5A41825CA 1.0255 77.5% 1 1.0255 0.00 SELECT
# 2 0x357470D8BF5D185D 0.1252 9.5% 1 0.1252 0.00 CREATE TABLE test.documents
# 3 0x7395165C3563CA41 0.0535 4.0% 2 0.0268 0.05 SELECT documents
# 4 0xDB11785DC0044597 0.0456 3.4% 7 0.0065 0.00 SELECT discussions catagories
# 5 0x7FF1B2B54A693E87 0.0427 3.2% 1 0.0427 0.00 SELECT INFORMATION_SCHEMA.FILES INFORMATION_SCHEMA.PARTITIONS
# MISC 0xMISC 0.0312 2.4% 77 0.0004 0.0 <19 ITEMS>
# Query 1: 0 QPS, 0x concurrency, ID 0xF9A57DD5A41825CA at byte 12423 ____
# Scores: V/M = 0.00
# Time range: all events occurred at 2017-03-09 15:20:44
# Attribute pct total min max avg 95% stddev median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count 1 1
# Exec time 77 1s 1s 1s 1s 1s 0 1s
# Lock time 0 0 0 0 0 0 0 0
# Rows sent 0 1 1 1 1 1 0 1
# Rows examine 0 0 0 0 0 0 0 0
# Query size 0 15 15 15 15 15 0 15
# String:
# Databases test
# Hosts localhost
# Users root
# Query_time distribution
# 1us
# 10us
# 100us
# 1ms
# 10ms
# 100ms
# 1s ################################################################
# 10s+
# EXPLAIN /*!50100 PARTITIONS*/
select sleep(1)\G
输出到文件:pt-query-digest slow.log > slow_log.report
输出到数据库表:
pt-query-digest slow.log --review \
h=127.0.0.1, D=test, p=root, P=3306, u=root, t=query_review \
--create-review-table \
windows下配置mysql慢查询
wamp 下mysql的配置文件放置在C:\wamp64\bin\mysql\mysql5.7.14\my.ini
开启慢查询,需要在mysqld下面添加如下配置:
[mysqld]
port = 3306
long_query_time = 1
slow_query_log = ON
slow_query_log_file = C:/wamp64/bin/mysql/mysql5.7.14/mysql_slow_query.log
注意,先创建mysql_slow_query.log文件,同时需要将目录\
变更成/
参考网站:
慢查询
登陆发表评论