SQL優(yōu)化之慢查詢

什么是慢查詢

慢查詢,顧名思義禁漓,就是查詢慢的sql語句跟衅,是指mysql記錄所有執(zhí)行超過long_query_time參數(shù)設(shè)定的時間閾值的SQL語句的日志。該日志能為SQL語句的優(yōu)化帶來很好的幫助播歼。默認情況下伶跷,慢查詢?nèi)罩臼顷P(guān)閉的,要使用慢查詢?nèi)罩竟δ芗远瘢紫纫_啟慢查詢?nèi)罩竟δ堋?/p>

慢查詢配置

慢查詢基本配置

  • slow_query_log 啟動停止技術(shù)慢查詢?nèi)罩?/li>
  • slow_query_log_file 指定慢查詢?nèi)罩镜么鎯β窂郊拔募J和數(shù)據(jù)文件放一起)
  • long_query_time 指定記錄慢查詢?nèi)罩維QL執(zhí)行時間得伐值(單位:秒撩穿,默認10秒)
  • log_queries_not_using_indexes 是否記錄未使用索引的SQL
  • log_output 日志存放的地方【TABLE】【FILE】【FILE,TABLE】

配置了慢查詢后,它會記錄符合條件的SQL谒撼,包括:

  • 查詢語句
  • 數(shù)據(jù)修改語句
  • 已經(jīng)回滾的SQL

通過下面命令查看下上面的配置:

  • show VARIABLES like '%slow_query_log%'

  • show VARIABLES like '%slow_query_log_file%'

  • show VARIABLES like '%long_query_time%'

  • show VARIABLES like '%log_queries_not_using_indexes%'

  • show VARIABLES like 'log_output'

  • set global long_query_time=0; -- 默認10秒食寡,這里為了演示方便設(shè)置為0

  • set GLOBAL slow_query_log = 1; -- 開啟慢查詢?nèi)罩?/p>

  • set global log_output='FILE' -- 項目開發(fā)中日志只能記錄在日志文件中,不能記表中

慢查詢?nèi)罩疚募治?/h1>

設(shè)置完成后廓潜,通過 show VARIABLES like 'datadir'來查看數(shù)據(jù)文件存放的位置抵皱。日志文件中的內(nèi)容格式如下:

# User@Host: [root] @ localhost [127.0.0.1]
# Query_time: 0.000997  
# Lock_time: 0.000000 
# Rows_sent: 5  
# Rows_examined: 5
SET timestamp=1539153057;
SELECT * FROM `t_users` LIMIT 0, 1000;
  • 第一行:用戶名 善榛、用戶的IP信息、線程ID號
  • 第二行:執(zhí)行花費的時間【單位:毫秒】
  • 第三行:執(zhí)行獲得鎖的時間
  • 第四行:獲得的結(jié)果行數(shù)
  • 第五行:掃描的數(shù)據(jù)行數(shù)
  • 第六行:這SQL執(zhí)行的具體時間
  • 第七行:具體的SQL語句

慢查詢分析工具

Mysqldumpslow

linux系統(tǒng)在mysql的bin目錄下執(zhí)行

./mysqldumpslow -s r -t 5 /usr/local/mysql/data/70KG-224-slow.log


可以看出查詢總時間均為0S呻畸,是因為語句查詢時間太短移盆,實際上是按時間倒序來排的。

參數(shù)說明:

mysqldumpslow -s r -t 10 slow-mysql.log
-s order (c,t,l,r,at,al,ar) 
         c:總次數(shù)
         t:總時間
         l:鎖的時間
         r:總數(shù)據(jù)行
         at(每次執(zhí)行sql耗費的時間),al(每次執(zhí)行sql加鎖用的時間),ar(每次獲取數(shù)據(jù)行數(shù)所用時間)【例如:at = 總時間/總次數(shù)】其中a表示average平均
  -t  top   指定取前面幾天作為結(jié)果輸出

pt_query_digest

這個工具安裝起來比較復(fù)雜伤为,非專業(yè)sql人員感覺沒必要玩~

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末咒循,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子绞愚,更是在濱河造成了極大的恐慌叙甸,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,036評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件位衩,死亡現(xiàn)場離奇詭異裆蒸,居然都是意外死亡,警方通過查閱死者的電腦和手機糖驴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,046評論 3 395
  • 文/潘曉璐 我一進店門僚祷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人贮缕,你說我怎么就攤上這事辙谜。” “怎么了感昼?”我有些...
    開封第一講書人閱讀 164,411評論 0 354
  • 文/不壞的土叔 我叫張陵筷弦,是天一觀的道長。 經(jīng)常有香客問我抑诸,道長,這世上最難降的妖魔是什么爹殊? 我笑而不...
    開封第一講書人閱讀 58,622評論 1 293
  • 正文 為了忘掉前任蜕乡,我火速辦了婚禮,結(jié)果婚禮上梗夸,老公的妹妹穿的比我還像新娘层玲。我一直安慰自己,他們只是感情好反症,可當我...
    茶點故事閱讀 67,661評論 6 392
  • 文/花漫 我一把揭開白布辛块。 她就那樣靜靜地躺著,像睡著了一般铅碍。 火紅的嫁衣襯著肌膚如雪润绵。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,521評論 1 304
  • 那天胞谈,我揣著相機與錄音尘盼,去河邊找鬼憨愉。 笑死,一個胖子當著我的面吹牛卿捎,可吹牛的內(nèi)容都是我干的配紫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,288評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼午阵,長吁一口氣:“原來是場噩夢啊……” “哼躺孝!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起底桂,我...
    開封第一講書人閱讀 39,200評論 0 276
  • 序言:老撾萬榮一對情侶失蹤植袍,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后戚啥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體奋单,經(jīng)...
    沈念sama閱讀 45,644評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,837評論 3 336
  • 正文 我和宋清朗相戀三年猫十,在試婚紗的時候發(fā)現(xiàn)自己被綠了览濒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,953評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡拖云,死狀恐怖贷笛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情宙项,我是刑警寧澤乏苦,帶...
    沈念sama閱讀 35,673評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站尤筐,受9級特大地震影響汇荐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜盆繁,卻給世界環(huán)境...
    茶點故事閱讀 41,281評論 3 329
  • 文/蒙蒙 一掀淘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧油昂,春花似錦革娄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,889評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至安寺,卻和暖如春厕妖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背我衬。 一陣腳步聲響...
    開封第一講書人閱讀 33,011評論 1 269
  • 我被黑心中介騙來泰國打工叹放, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留饰恕,地道東北人。 一個月前我還...
    沈念sama閱讀 48,119評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親酒请。 傳聞我的和親對象是個殘疾皇子喻频,可洞房花燭夜當晚...
    茶點故事閱讀 44,901評論 2 355