詳解MySQL慢日志(下) 選項(xiàng)
參數(shù)篇:
http://blog.itpub.net/29773961/viewspace-2147352/
〇 long_query_time
場(chǎng)景:
如下圖,該圖為部分
binlog截取:
9:42:25 后,還有幾個(gè)6:35:30的event

但是這些event如圖中最后一條。
exec_time為11216,但并未被記錄到slow log中。
long_query_time 為一個(gè)MySQL選項(xiàng)參數(shù)。
這個(gè)參數(shù)不用說(shuō)了,記錄超過(guò)執(zhí)行時(shí)間超過(guò)該值以上的SQL。
但這個(gè)坑在于:是按真正執(zhí)行的時(shí)間(real time),不包括等待鎖的時(shí)間。
舉個(gè)簡(jiǎn)單的例子:
如果long_query_time設(shè)置為1秒
一個(gè)insert被lock了10秒,執(zhí)行只耗了0.5秒,那么不會(huì)被記錄到慢日志。
測(cè)試,以下分為三個(gè)會(huì)話,分別被命名為
lock>,
query>,
slow_log>,下同:
目前創(chuàng)新互聯(lián)公司已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、富順網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
-
lock
>
FLUSH
TABLE
WITH READ LOCK
;
-
Query OK
,
0 rows affected
(
0
.
00 sec
)
-
query
>
SET
profiling
=
1
,
SESSION long_query_time
=
0
.
5
;
-
Query OK
,
0 rows affected
,
1 warning
(
0
.
00 sec
)
-
query
>
INSERT
INTO
t0
SELECT
null
,
create_time
,
uuid
FROM
t1 LIMIT 1
;
-
{
此時(shí)hang住
}
-
lock
>
UNLOCK
TABLE
;
-
query
>
{
返回
}
-
Query OK
,
1 row affected
(
9
.
42 sec
)
-
Records: 1 Duplicates: 0 Warnings: 0
此處看到,整條SQL花費(fèi)了9.42秒完成,其中包括長(zhǎng)時(shí)間的鎖等待。
再看一下具體的profile:
-
query
>
SHOW
PROFILES
;
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
|
Query_ID
|
Duration
|
Query
|
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
|
1
|
9
.
41687900
|
INSERT
INTO
t0
SELECT
null
,
create_time
,
uuid
FROM
t1 LIMIT 1
|
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
1 row
in
set
,
1 warning
(
0
.
00 sec
)
-
query
>
SHOW
PROFILE
FOR
QUERY 1
;
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
|
Status
|
Duration
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
|
starting
|
0
.
000101
|
-
|
checking permissions
|
0
.
000009
|
-
|
checking permissions
|
0
.
000005
|
-
|
Opening tables
|
0
.
000016
|
-
|
Waiting
for
global read lock
|
9
.
412835
|
-
|
Opening tables
|
0
.
000540
|
-
|
init
|
0
.
000033
|
-
|
System lock
|
0
.
000014
|
-
|
optimizing
|
0
.
000006
|
-
|
statistics
|
0
.
000020
|
-
|
preparing
|
0
.
000016
|
-
|
executing
|
0
.
000004
|
-
|
Sending data
|
0
.
000241
|
-
|
end
|
0
.
000006
|
-
|
query
end
|
0
.
002504
|
-
|
closing tables
|
0
.
000012
|
-
|
freeing items
|
0
.
000025
|
-
|
logging slow query
|
0
.
000009
|
-
|
Opening tables
|
0
.
000113
|
-
|
System lock
|
0
.
000362
|
-
|
cleaning up
|
0
.
000011
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
21 rows
in
set
,
1 warning
(
0
.
00 sec
)
可以看到,等待全局讀鎖花了9.412835s,總執(zhí)行時(shí)間約為9.42。
再在slow_log表中查一下……什么都沒(méi)有:
-
slow_log
>
SELECT
start_time
,
query_time
,
lock_time
,
sql_text
FROM
mysql
.
slow_log
;
-
Empty
set
(
0
.
00 sec
)
-
query
>
SELECT
9
.
41687900-9
.
412835
;
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
|
9
.
41687900-9
.
412835
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
|
0
.
00404400
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
1 row
in
set
(
0
.
00 sec
)
tips:
此時(shí)SQL執(zhí)行時(shí)間為0.00404400s,故沒(méi)有被記錄到slow log中。
也可以解釋圖中,某些event執(zhí)行了3個(gè)小時(shí),但又無(wú)法在slow log中查詢到。
〇 lock_time與query_time
為slow log中所記錄的兩個(gè)屬性:
lock_time:waiting for xxx lock的時(shí)間
query_time:real time + lock time的總時(shí)間
-
query
>
SET
SESSION long_query_time
=
0
;
-
Query OK
,
0 rows affected
(
0
.
00 sec
)
-
lock
>
LOCK
TABLE
test
.
t0 WRITE
;
-
Query OK
,
0 rows affected
(
0
.
00 sec
)
-
query
>
SELECT
*
FROM
t0 LIMIT 1
;
-
{
此時(shí)hang住
}
-
lock
>
LOCK
TABLE
test
.
t0 WRITE
;
-
Query OK
,
0 rows affected
(
0
.
00 sec
)
-
query
>
{
返回
}
-
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
|
id
|
create_time
|
uuid
|
-
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
|
2
|
2017-11-14 15:13:33
|
994e4592-93b4-11e7-bff9-525400b3819a
|
-
+
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
1 row
in
set
(
28
.
89 sec
)
-
slow_log
>
SELECT
start_time
,
query_time
,
lock_time
,
sql_text
FROM
mysql
.
slow_log
;
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
|
start_time
|
query_time
|
lock_time
|
sql_text
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
|
2017-11-15 17:13:12
.
252836
|
00:00:28
.
894675
|
00:00:28
.
894516
|
SELECT
*
FROM
t0 LIMIT 1
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
可以看到做一個(gè)簡(jiǎn)單查詢,query_time也很長(zhǎng):
實(shí)際上query_time記錄的是lock_time + real time。
query_time ≥ lock_time
〇 start_time
為slow log中所記錄的屬性:
start_time:看字面意思很容易會(huì)被誤認(rèn)為“sql開(kāi)始的時(shí)間”…
但實(shí)際上記錄的是sql結(jié)束的時(shí)間。
測(cè)試一下:
-
query
>
SET
SESSION long_query_time
=
0
;
-
Query OK
,
0 rows affected
(
0
.
00 sec
)
-
query
>
SELECT
sysdate
(
)
,
sleep
(
8
)
,
sysdate
(
)
;
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
|
sysdate
(
)
|
sleep
(
8
)
|
sysdate
(
)
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
|
2017-11-15 17:05:15
|
0
|
2017-11-15 17:05:23
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
1 row
in
set
(
8
.
00 sec
)
可以看到,該sql開(kāi)始時(shí)間是17:05:15,結(jié)束時(shí)間是17:05:23
那么記錄在slow log中,實(shí)際上是:
-
slow_log
>
SELECT
start_time
,
query_time
,
lock_time
,
sql_text
FROM
mysql
.
slow_log
;
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
|
start_time
|
query_time
|
lock_time
|
sql_text
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
|
2017-11-15 17:05:23
.
633771
|
00:00:08
.
000359
|
00:00:00
.
000000
|
SELECT
sysdate
(
)
,
sleep
(
8
)
,
sysdate
(
)
|
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
-
1 row
in
set
(
0
.
00 sec
)
可以看到,start_time實(shí)際上是sql執(zhí)行完成的時(shí)間。
真正的開(kāi)始時(shí)間計(jì)算的方法也很簡(jiǎn)單:
start_time - query_time 即為sql真正開(kāi)始的時(shí)間。
tips:
一般OLTP場(chǎng)景下,大部分query_time都會(huì)很短。
但在某些糟糕的場(chǎng)景下,如某一條OLAP語(yǔ)句執(zhí)行時(shí)間很長(zhǎng),如30分鐘。
如果需要確認(rèn)在某個(gè)時(shí)段的sql,在查詢slow log時(shí)指定錯(cuò)誤的start_time,可能就無(wú)法找到合適的sql了。
作者微信公眾號(hào)(持續(xù)更新)

文章名稱:詳解MySQL慢日志(上)query_time\start_time\lock_time的坑
轉(zhuǎn)載注明:http://chinadenli.net/article30/jgggso.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷推廣、網(wǎng)站導(dǎo)航、移動(dòng)網(wǎng)站建設(shè)、標(biāo)簽優(yōu)化、、定制開(kāi)發(fā)
廣告
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源:
創(chuàng)新互聯(lián)