mysql 必須掌握的工具pt-query-digest
古人云:工欲善其事,必先利其器。作為一名優秀的mysql dba也需要有掌握幾個好用的mysql管理工具,所以我也一直在整理和查詢一些能夠便於管理mysql的利器。以後的一段時間內,將會花一大部分的精力去搜尋這些工具。
效能的管理一直都是擺在第一位的,dba的很多工作管理層都看不到也沒有辦法衡量價值,但是如果一個系統慢的跟蝸牛一樣,dba透過監控調優把系統從崩潰邊緣重新拉回到高鐵時代。這種價值和觸動應該是巨大的。(很多企業的領導認為系統跑不動了就需要換更快的CPU、更大的記憶體、更快的儲存,而且這還不是少數,所以DBA的價值也一直體現不出來,薪水自然也就不會很高)
mysql的日誌是跟蹤mysql效能瓶頸的最快和最直接的方式了,系統效能出現瓶頸的時候,首先要開啟慢查詢日誌,進行跟蹤;這段時間關於慢查詢日誌的管理和檢視已經整理過兩篇文章了,不經意間又發現了一個檢視慢查詢日誌的工具:mk-query-digest,這個工具網上號稱mysql dba必須掌握的十大工具之首。
以下是軟體的介紹:
1、軟體的安裝,下載地址:
2、連結: 密碼:ybtm
2、軟體的使用,pt-query-digest --help
Usage: pt-query-digest [OPTIONS] [FILES] [DSN]
常用的查詢語句:
- pt-query-digest JOEONE-IPOSDS-SLOW.LOG> JOEONE-IPOSDS-SLOW1.log 把當前的結果輸出到檔案slow_report.log
- pt-query-digest --since=24h JOEONE-IPOSDS-SLOW.LOG > slow_report2.log 分析最近24小時的結果
- pt-query-digest --since '2015-01-09 09:30:00' --until '2015-02-01 09:30:00' JOEONE-IPOSDS-SLOW.LOG> slow_report3.log 分析規定時間段的結果
- pt-query-digest --filter '(($event->{Full_scan} || "") eq "yes") ||(($event->{Full_join} || "") eq "yes")' JOEONE-IPOSDS-SLOW.LOG> slow_report6.log 所有的全表掃描或full join的慢查詢
加入引數create-review-table,可以把結果寫到mysql的表中
pt-query-digest --user=root --password=123456 --review h=localhost,D=test,t=query_table --create-review-table JOEONE-IPOSDS-SLOW.LOG
3、分析結果的檢視
慢查詢日誌的結果可以分為三個部分:整體的概要、總體的sql語句、每條sql語句的詳細情況
3.1 整體的概要
# 21.9s user time, 80ms system time, 95.84M rss, 270.52M vsz |
上面摘要顯示/data/IPOSDS-SLOW.LOG中共有27940次SQL語句(27.94k),其中181條跳語句是不重複的;
Exec time總時間表示這些SQL的總體執行時間,這部分時間參考Time range,可以大概知道系統的壓力情況;
Lock time 顯示鎖的時間,太長的鎖等待,說明程式設計有問題;
Rows sent 傳送客戶端的行數
Rows examine 表示掃描的行數,Rows examine和Rows sent的比值,可以初步判斷索引的選擇性問題;
Query size:查詢語句的字元數
以上的那些數值主要參考95%的資料平均結果;
3.2 語句整體概況
# Profile |
--Rank:分析的所有查詢語句的排名,預設按查詢時間降序排序,可以透過--order-by指定排序方式
--Query ID:查詢語句的指紋,去掉了多餘空格、和文字字元
--Response time:響應時間,佔所有響應時間的百分比 (UPDATE SELECT spkcb com_base_guige? com_base_shangpin com_base_kehu這條語句佔用了54.9%的時間,首要調優物件)
--Calls:查詢執行的次數
--R/Call:每次執行的平均響應時間
--V/M:響應時間Variance-to-mean的比率
--Item:查詢語句
--最後一行沒有包括在報告中的查詢合計統計資訊,如使用了選項--limit和—outliers
第三部分,詳細的執行語句
# Query 1: 0.01 QPS, 0.19x concurrency, ID 0xB6CE88A271A1C8C5 at byte 37907885 (Query 1按照第二部分的順序進行排序) ###############################完整的SQL語句############################################# |
透過以上分析,再執行explain可以檢視這個語句的執行計劃;
總結:pt-query-digest語句給出的報告,相對於前面的2種方式,已經有了明顯的改進,最主要體現在可以從宏觀去看每條語句對系統的影響情況;
相信根據步驟分析了整個慢日誌檔案後,應該可以知道,哪種型別的語句、那種幾條語句消耗了效能,這些語句是突發的還是平時執行都是這種情況的。
透過檢視這些表的結構和語句的執行計劃後,可以進行相應的調優;
........................................................................................................................................................................
本文作者:JOHN,某上市公司DBA,業餘時間專注於資料庫的技術管理,從管理的角度去運用技術。
ORACLE技術部落格:ORACLE 獵人筆記 資料庫技術群:367875324 (請備註ORACLE管理 )
........................................................................................................................................................................
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/25723371/viewspace-1447826/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- sed、awk——運維必須掌握的兩個工具運維
- Mysql系列第三講 管理員必備技能(必須掌握)MySql
- 老司機也必須掌握的MySQL最佳化指南MySql
- Git中~你必須掌握的!Git
- Java Annotation 必須掌握的特性Java
- PMD外掛:你必須掌握的程式碼質量工具!
- CSS中那些必須掌握的概念CSS
- 前端必須掌握的知識點前端
- 學習Linux必須掌握的命令!Linux
- 必須掌握的10個Linux命令!Linux
- git 必須要熟練掌握的命令Git
- MySQL效能剖析工具(pt-query-digest)MySql
- 從事Python資料分析師,必須掌握的Python工具!Python
- 要想做好自媒體 你必須掌握的八大工具
- 必須掌握的Linux使用者組Linux
- JavaScript必須要掌握的知識-作用域JavaScript
- Java必須掌握的Spring常用註解JavaSpring
- AS3開發必須掌握的內容S3
- 必須懂的mysql知識MySql
- 技術人必須掌握能力——深度思考
- Linux必須掌握的shell指令碼基礎Linux指令碼
- C語言必須掌握的判斷題 | 4C語言
- C語言必須掌握的判斷題 | 10C語言
- 外貿小白必須掌握的基礎知識
- 6. 你必須掌握Dart中的陣列Dart陣列
- shell程式設計必須要掌握的命令-xargs程式設計
- 學習web前端,必須要掌握的CSS原理Web前端CSS
- Linux系統中必須掌握的特殊字元!Linux字元
- 前端工程師必須掌握的設計模式前端工程師設計模式
- 10 個你必須掌握的超酷 VI 命令技巧
- Oracle10g rac 必須掌握的知識Oracle
- Android Application物件必須掌握的七點AndroidAPP物件
- 前端必須知道的除錯工具前端除錯
- Android 之 Notification 必須掌握知識點Android
- Java經典常用類總結(必須掌握!)Java
- 24個必須掌握的資料庫面試問題~資料庫面試
- JavaScript大師必須掌握的12個知識點JavaScript
- 必須掌握的Linux使用者組知識Linux