pt-query-digest 實踐(轉)

来源:http://www.cnblogs.com/Aiapple/archive/2016/08/07/5745899.html
-Advertisement-
Play Games

mysql slowlog 使用與介紹 slow_query_log =1 是否打開 slow_query_log_file = /data/mysql_data/node-1/mysql-slow.log --位置 long_query_time=5 閾值時間 log_output = {file ...


mysql slowlog 使用與介紹
  • slow_query_log =1-----是否打開
  • slow_query_log_file = /data/mysql_data/node-1/mysql-slow.log --位置
  • long_query_time=5-----閾值時間
  • log_output = {file|table|none}
    使用pt-query-digest分析慢查詢
  • 使用tcpdump抓取mysql協議包(伺服器端抓,網路中訪問本伺服器資料庫的語句)
    • tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt
  • 使用pt-query-digest分析包(用於分析不熟悉的庫,現在的情況)
    • pt-query-digest  --type tcpdump --limit 100 --watch-server 192.168.1.11:3306 mysql.tcp.txt > mysql.slow.sql
  • 使用pt-query-digest分析慢日誌
    • pt-query-digest  --type  slowlog  --order-by Rows_examined:sum/ --order-by Query_time:cnt  /tmp/mysql-slow.log  > /tmp/slow3306.sql
   

pt-query-digest查詢日誌分析工具(轉)

1. 工具簡介
  pt-query-digest是用於分析mysql慢查詢的一個工具,它可以分析binlog、General log、slowlog, 也可以通過SHOWPROCESSLIST或者通過tcpdump抓取的MySQL協議數據來進行分析。 可以把分析結果輸出到文件中,分析過程是先對查詢語句的條件進行參數化,然後對參數化 以後的查詢進行分組統計,統計出各查詢的執行時間、次數、占比等,可以藉助分析結果找出問題進行優化。   pt-query-digest是一個perl腳本,只需下載並賦權即可執行。  
[root@test1 ]# wget percona.com/get/pt-query-digest 
[root@test1 ]# chmod u+x pt-query-diges

 

2.語法及重要選項

 

pt-query-digest [OPTIONS] [FILES] [DSN]

--create-review-table  當使用--review參數把分析結果輸出到表中時,如果沒有表就自動創建。
--create-history-table  當使用--history參數把分析結果輸出到表中時,如果沒有表就自動創建。
--filter  對輸入的慢查詢按指定的字元串進行匹配過濾後再進行分析
--limit限制輸出結果百分比或數量,預設值是20,即將最慢的20條語句輸出,如果是50%則按總響應時間占比從大到小排序,輸出到總和達到50%位置截止。
--host  MySQL伺服器地址
--user  mysql用戶名
--password  mysql用戶密碼
--history 將分析結果保存到表中,分析結果比較詳細,下次再使用--history時,如果存在相同的語句,且查詢所在的時間區間和歷史表中的不同,則會記錄到數據表中,可以通過查詢同一CHECKSUM來比較某類型查詢的歷史變化。
--review 將分析結果保存到表中,這個分析只是對查詢條件進行參數化,一個類型的查詢一條記錄,比較簡單。當下次使用--review時,如果存在相同的語句分析,就不會記錄到數據表中。
--output 分析結果輸出類型,值可以是report(標準分析報告)、slowlog(Mysql slow log)、json、json-anon,一般使用report,以便於閱讀。
--since 從什麼時間開始分析,值為字元串,可以是指定的某個”yyyy-mm-dd [hh:mm:ss]”格式的時間點,也可以是簡單的一個時間值:s(秒)、h(小時)、m(分鐘)、d(天),如12h就表示從12小時前開始統計。
--until 截止時間,配合—since可以分析一段時間內的慢查詢。

3.標準分析報告解釋


第一部分總體統計結果,如下圖



Overall: 總共有多少條查詢,上例為總共266個查詢。
Time range: 查詢執行的時間範圍。
unique: 唯一查詢數量,即對查詢條件進行參數化以後,總共有多少個不同的查詢,該例為55。
total: 總計   min:最小   max: 最大  avg:平均
95%: 把所有值從小到大排列,位置位於95%的那個數,這個數一般最具有參考價值。 median: 中位數,把所有值從小到大排列,位置位於中間那個數。     第二部分:查詢分組統計結果,如下圖   由上圖可見,這部分對查詢進行參數化並分組,然後對各類查詢的執行情況進行分析,結果按總執行時長,從大到小排序。 Response: 總的響應時間。
time: 該查詢在本次分析中總的時間占比。
calls: 執行次數,即本次分析總共有多少條這種類型的查詢語句。
R/Call: 平均每次執行的響應時間。
Item : 查詢對象

第三部分:每一種查詢的詳細統計結果,如下圖:

 

由上圖可見,12號查詢的詳細統計結果,最上面的表格列出了執行次數、最大、最小、平均、95%等各項目的統計。
Databases: 庫名
Users: 各個用戶執行的次數(占比)
Query_time distribution : 查詢時間分佈, 長短體現區間占比,本例中1s-10s之間查詢數量是10s以上的兩倍。
Tables: 查詢中涉及到的表
Explain: 示例
 
4.用法示例

 
(1)直接分析慢查詢文件:
pt-query-digest slow.log > slow_report.log
 
(2)分析最近12小時內的查詢:

pt-query-digest  --since=12h  slow.log > slow_report2.log

 

(3)分析指定時間範圍內的查詢:

pt-query-digest slow.log --since '2014-04-17 09:30:00' --until '2014-04-17 10:00:00'> > slow_report3.log

(4)分析指含有select語句的慢查詢
pt-query-digest--filter '$event->{fingerprint} =~ m/^select/i' slow.log> slow_report4.log

(5) 針對某個用戶的慢查詢
pt-query-digest--filter '($event->{user} || "") =~ m/^root/i' slow.log> slow_report5.log

(6) 查詢所有所有的全表掃描或full join的慢查詢
pt-query-digest--filter '(($event->{Full_scan} || "") eq "yes") ||(($event->{Full_join} || "") eq "yes")' slow.log> slow_report6.log

(7)把查詢保存到query_review表
pt-query-digest  --user=root –password=abc123 --review  h=localhost,D=test,t=query_review--create-review-table  slow.log

(8)把查詢保存到query_history表
pt-query-digest  --user=root –password=abc123 --review  h=localhost,D=test,t=query_ history--create-review-table  slow.log_20140401
pt-query-digest  --user=root –password=abc123--review  h=localhost,D=test,t=query_history--create-review-table  slow.log_20140402

(9)通過tcpdump抓取mysql的tcp協議數據,然後再分析
tcpdump -s 65535 -x -nn -q -tttt -i any -c 1000 port 3306 > mysql.tcp.txt
pt-query-digest --type tcpdump mysql.tcp.txt> slow_report9.log

(10)分析binlog
mysqlbinlog mysql-bin.000093 > mysql-bin000093.sql
pt-query-digest  --type=binlog  mysql-bin000093.sql > slow_report10.log

(11)分析general log
pt-query-digest  --type=genlog  localhost.log > slow_report11.log

 

官方文檔:http://www.percona.com/doc/percona-toolkit/2.2/pt-query-digest.html
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Android中圖片的左右切換隨處可見,今天我也試著查閱資料試著做了一下,挺簡單的一個小Demo,卻也發現了一些問題,話不多說,上代碼~: 只是用了一個ImageView作為顯示圖片的容器 ...
  • Swift - UITableView狀態切換效果 效果 源碼 https://github.com/YouXianMing/Swift-Animations ...
  • 1.數學函數:操作一個數據,返回一個結果 --取上限ceiling select code,name,ceiling(price) from car ; --取下限 floor select floor(price) from car --ABS 絕對值 --派 PI(),圓周率,括弧里不需要加東西 ...
  • 一、資料庫操作 create database 資料庫名稱 ——創建drop database 資料庫名稱 ——刪除use 資料庫名稱 ——使用go 兩條SQL語句之間分隔 二、表的操作 create table 表名( 列名 類型 其它,列名 id類型 其它 ) ——使用primary key — ...
  • 1.索引添加索引,設計界面,在任何一列前右鍵--索引/鍵--點擊進入添加某一列為索引 2.視圖 視圖就是我們查詢出來的虛擬表創建視圖:create view 視圖名 as SQL查詢語句,分組,排序,in 等都不能寫視圖的用法: select * from 視圖名 3.SQL編程 定義變數:decl ...
  • mysql簡介 1、什麼是資料庫 ? 資料庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生於距今六十多年前,隨著信息技術和市場的發展,特別是二十世紀九十年代以後,數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。資料庫有很多種類型,從最簡單的存儲有各種 ...
  • 介紹 本篇文章主要介紹搭建MMM方案以及MMM架構的原理。這裡不介紹主從、主主的搭建方法,MMM方案不適用對數據一致性要求很高的業務。 架構 部署 1.修改hosts 在所有的伺服器中執行相同的操作。 vim /etc/hosts 192.168.137.10 master 192.168.137. ...
  • 24 MySQL sys框架 24 MySQL sys框架... 1 24.1 sys框架的前提條件... 1 24.2 使用sys框架... 2 24.3 sys框架進度報告... 3 24.4 sys框架的對象... 3 24.4.1所有sys下的對象... 3 24.4.2 sys框架的表和觸 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...