當(dāng)前位置:首頁(yè) > IT技術(shù) > 數(shù)據(jù)庫(kù) > 正文

mysql17-sql優(yōu)化-慢查詢?nèi)罩?br>2021-10-11 15:07:33

1.什么是慢查詢?nèi)罩?/span>
MySQL的慢查詢?nèi)罩臼荕ySQL提供的一種日志記錄,它用來(lái)記錄在MySQL中響應(yīng)時(shí)間超過(guò)閥值的語(yǔ)句,具體指運(yùn)行時(shí)間超過(guò)long_query_time值的SQL,會(huì)被記錄到慢查詢?nèi)罩局校?span style="font-size: 14pt">long_query_time的默認(rèn)值為10,意思是運(yùn)行10秒以上的語(yǔ)句。默認(rèn)情況下,MySQL數(shù)據(jù)庫(kù)沒(méi)有開(kāi)啟慢查詢?nèi)罩?,需要我們手?dòng)來(lái)設(shè)置相關(guān)參數(shù)slow_query_log。當(dāng)然,如果不是調(diào)優(yōu)需要的話,一般不建議啟動(dòng)該參數(shù),因?yàn)殚_(kāi)啟慢查詢?nèi)罩緯?huì)或多或少帶來(lái)一定的性能影響。慢查詢?nèi)罩局С謱⑷罩居涗泴?xiě)入文件

?

2.開(kāi)啟慢查詢?nèi)罩?/strong>

2.1查看參數(shù)

SHOW VARIABLES LIKE '%slow_query_log%'

?如果是off,需要手動(dòng)開(kāi)啟

?

2.2開(kāi)啟

SET  GLOBAL slow_query_log = 1

?

2.3查看時(shí)長(zhǎng)閥值

SHOW VARIABLES LIKE '%long_query_time%'

?默認(rèn)是10秒,但是我們不會(huì)允許sql這么長(zhǎng)的時(shí)間,一般需要調(diào)小

?

2.4設(shè)置時(shí)長(zhǎng)閥值

SET  GLOBAL long_query_time = 2

這里設(shè)置好了,打開(kāi)新的連接窗口查看,值才會(huì)更新

?

3.查詢當(dāng)前系統(tǒng)中有多少條慢查詢記錄

show global status like '%Slow_queries%';

?

4.慢查詢?nèi)罩韭窂?/span>

SHOW VARIABLES LIKE '%slow_query_log_file%'

?

5.日志分析工具mysqldumpslow

在生產(chǎn)環(huán)境中,如果要手工分析慢查詢?nèi)罩?,查找、分析SQL,顯然是個(gè)體力活,MySQL提供了日志分析工具mysqldumpslow。

?

5.1語(yǔ)法格式

mysqldumpslow [ OPTS... ] [ LOGS... ]  -- 后跟參數(shù)以及l(fā)og文件的絕對(duì)地址;

?

5.2參數(shù)

1)s: 是表示按照何種方式排序;

2)c: 訪問(wèn)次數(shù)

3)l: 鎖定時(shí)間

4)r: 返回記錄

5)t: 查詢行數(shù)

6)al:平均鎖定時(shí)間

7)ar:平均返回記錄數(shù)

8)at:平均查詢時(shí)間

9)t:即為返回前面多少條的數(shù)據(jù);

10)g:后邊搭配一個(gè)正則匹配模式,大小寫(xiě)不敏感的;

?

5.3示例

1)得到返回記錄集最多的10個(gè)SQL

mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log


2)得到訪問(wèn)次數(shù)最多的10個(gè)SQL

mysqldumpslow -s c -t 10 /var/lib/mysql/atguigu-slow.log


3)得到按照時(shí)間排序的前10條里面含有左連接的查詢語(yǔ)句

mysqldumpslow -s t -t 10 -g "left join" /var/lib/mysql/atguigu-slow.log


4)另外建議在使用這些命令時(shí)結(jié)合 | 和more 使用 ,否則有可能出現(xiàn)爆屏情況

mysqldumpslow -s r -t 10 /var/lib/mysql/atguigu-slow.log | more

?

?



?

本文摘自 :https://www.cnblogs.com/

開(kāi)通會(huì)員,享受整站包年服務(wù)立即開(kāi)通 >