搜尋
首頁資料庫mysql教程實例分析MySQL中pt-query-digest工具的使用記錄

這篇文章為大家帶來了關於mysql的相關知識,其中主要介紹了一個用於分析mysql慢查詢日誌的工具pt-query-digest,下面一起來看一下,希望對大家有幫助。

一、簡介

pt-query-digest是用來分析mysql慢查詢日誌的工具,它也可以分析來自「SHOW PROCESSLIST」和MySQL的查詢tcpdump中的協定資料。我們可以把分析日誌輸出到指定的檔案中,透過分析日誌檔案做對應的最佳化等操作。

二、下載並且安裝

  • 根據不同的系統安裝,我的系統是centos,所以直接選擇centos安裝,點擊下載
  • 直接使用yum安裝
> wget https://downloads.percona.com/downloads/percona-toolkit/3.4.0/binary/redhat/7/x86_64/percona-toolkit-3.4.0-3.el7.x86_64.rpm
> yum install percona-toolkit-3.4.0-3.el7.x86_64.rpm
  • 或使用原始碼包編譯安裝
> wget https://downloads.percona.com/downloads/percona-toolkit/3.4.0/source/debian/percona-toolkit-3.4.0.tar.gz
> tar -zxvf percona-toolkit-3.4.0.tar.gz
> cd percona-toolkit-3.4.0
> perl Makefile.PL PREFIX=/usr/local/percona-toolkit
> make && make install

三、安裝完成

  • 實例分析MySQL中pt-query-digest工具的使用記錄

四、分析msql的慢查詢日誌

  • pt-query-digest參數可以使用perldoc指令查看
    perldoc /usr/bin/pt-query-digest
  • 分析整個慢日誌檔
    pt-query-digest mysql-slow.log > slow_report.log
  • #分析指定時間的日誌since~until
    pt-query-digest mysql-slow.log --since '2022-10-01 00:00:00' --until '2022-11-05 00:00:00'  > slow_report_date_20221021-202221105.log
    • –since: 表示開始時間
    • –until: 表示結束時間
  • 分析慢日誌,並且儲存分析結果到mysql資料表
    pt-query-digest --user=root --password=123456 --history 
    h=192.168.33.10,D=local_test_db,t=query_review --create-history-table  mysql-slow.log  --since 
    '2022-11-01 00:00:00' --until '2022-11-05 00:00:00'
    • –user: 資料庫使用者名稱
    • –password: 資料庫密碼
    • h: 資料庫host
    • D:資料庫名稱
    • t: 產生的表名

五、結果分析

第一部分: 總的一個分析概況

  • Overall:總共有多少條查詢

  • Time range:查詢執行的時間範圍

  • unique:唯一查詢數量,即對查詢條件進行參數化以後,總共有多少個不同的查詢

  • total:所有查詢總計長度

  • #min:所有查詢最小時長

  • ##max:所有查詢最大時長

  • avg:所有查詢平均時長

  • #95%:將所有時長值從小到大排列,位置位於95% 的那個時長數,這個數一般最具有參考價值

  • median:中位數,把所有時長值從小到大排列,位置位於中間那個時長數

  • # A software update is available:
    
    # 23.7s user time, 15.8s system time, 35.67M rss, 249.01M vsz
    说明:
    执行过程中,在用户中所花费的所有时间
    执行过程中,在内核空间中所花费的所有时间
    pt-query-digest 进程所分配的内存大小
    pt-query-digest 进程所分配的虚拟内存大小
    
    # Current date: Mon Nov  7 09:01:23 2022
    说明:当前时间
    # Hostname: localhost.localdomain
    说明:执行pt-query-digest的主机名
    # Files: mysql-slow.log
    说明:被分析的文件名称
    # Overall: 44.78k total, 54 unique, 0.01 QPS, 0.07x concurrency __________
    说明:
    total: 语句总数量
    unique: 唯一语句数量
    QPS: 每秒查询量
    concurrency: 查询的并发
    
    # Time range: 2022-10-01 00:00:03 to 2022-11-04 16:05:24
    说明:执行过程中日志记录的时间范围
    # Attribute          total     min     max     avg     95%  stddev  median
    说明:属性            总计      最小值   最大值  平均值   95%  标准差   中位数
    95%: 把所有时长值从小到大排列,位置位于 95% 的那个时长数,这个数一般最具有参考价值
    median: 中位数,把所有时长值从小到大排列,位置位于中间那个时长数
    
    # ============     ======= ======= ======= ======= ======= ======= =======
    # Exec time        204553s      3s   1540s      5s     10s      8s      3s
    说明:执行时间
    # Lock time             8s       0   107ms   186us    80us     2ms    36us
    说明:锁占用时间
    # Rows sent        238.87M       0   2.88M   5.46k   11.95  68.22k    0.99
    说明:发送到客户端的行数
    # Rows examine      73.56G       0   5.01M   1.68M   3.86M 724.49k   1.32M
    说明:扫描的语句行数
    # Query size         8.18M      30   4.36k  191.46  511.45  224.63   72.65
    说明:查询的字符数
第二部分:分析

  • #Rank:所有語句的排名,預設按查詢時間降序排列,透過–order-by 指定

      –order-by Query_time:sum :按總查詢時間的倒序
    • 排序參數介紹:
      sum       Sum/total attribute value(預設值)
      min       Minimum attribute value (最小值)
      max       Maximum attribute value(最小值)
      cnt       Frequency/count of the query(按出現sql次數)
  • 的ID(去掉多餘空格和文字字符,計算hash 值)

  • Response:總的回應時間

  • time:此查詢在本次分析中總的時間佔比

  • Calls:執行次數,即本分析總共有多少條這種類型的查詢語句

  • R/Call:平均每次執行的回應時間

  • V/M:回應時間Variance-to-mean 的比率

  • Item :查詢物件

  • # Profile
    说明:分析
    # Rank Query ID                            Response time    Calls R/Call  
    # ==== =================================== ================ ===== ======= 
    #    1 0xC000AA97F210B2AEAE4933AF9B00296A  104236.2061 5... 30988  3.3638  0.03 SELECT xxx
    #    2 0x974C6E6D54DB8B0DF505CA7BDC508686  32167.9607 15.7%  3418  9.4113  1.34 SELECT xxx 
    #    3 0x6BE180C5804B585F25BB16550447DC6C  18453.0185  9.0%  2499  7.3842  0.92 SELECT xxx
    #    4 0xADF16E3E9EB5D6B08245E39FF1428C9F  17873.4338  8.7%  3114  5.7397  0.84 SELECT xxx 
    #    5 0x2964CD629A24595719659BDAEBCF0E6F  10648.5404  5.2%  1437  7.4103  0.93 SELECT xxx
    #    6 0x50566E6DCF8FA562B88AE41AB1E32DC6   7424.3855  3.6%   303 24.5029 15.41 SELECT xxx
    #    7 0xDB0A3D60F85C2212C476B144E1678AB8   5327.8370  2.6%  1627  3.2746  0.05 SELECT xxx
    #    8 0x04BB0B332CEED517298AB06DE2A30AD6   3190.6822  1.6%   657  4.8564  1.36 SELECT xxx    
    #   10 0xDAB0AF524151C621DC0E9B92AC002C38    526.6288  0.3%   140  3.7616  0.01 SELECT xxx 
    # MISC 0xMISC                               1807.1067  0.9%    57 31.7036   0.0 <27 ITEMS>
第三部分:具體的sql統計與分析

  • pct:該sql 語句某執行屬性佔所有慢查詢語句某執行屬性的百分比

  • total:該sql 語句某執行屬性的所有屬性時間。

  • Count:sql 語句執行的次數。對應的 pct 表示此 sql 語句執行次數佔所有慢查詢語句執行次數的 % 比(下圖為 69%),對應的 total 表示總共執行了 30988 次。

  • Exec time:sql 執行時間

  • #Lock time:sql 執行期間被鎖定的時間

  • Rows sent:傳輸的有效數據,在select 查詢語句中才有值

  • #Rows examine:總共查詢的數據,非目標數據。

  • Query_time distribution:查詢時間分佈

  • #SQL 語句:下圖中為select sleep(7)\G

  • #
    # Query 1: 0.01 QPS, 0.03x concurrency, ID 0xC000AA97F210B2AEAE4933AF9B00296A at byte 221452362
    说明:查询队列1:每秒查询量,查询的并发,队列1的ID值,对应第二部分的Query ID, 221452362表示偏移量(查看方法看下面的“查看偏移”)
    # This item is included in the report because it matches --limit.
    # Scores: V/M = 0.03
    # Time range: 2022-10-01 00:00:05 to 2022-11-04 16:05:24
    说明:sql语句在慢日志文件mysql_slow.log出现的时间范围
    # Attribute    pct   total     min     max     avg     95%  stddev  median
    说明:属性      占整个 总数      最小值  最大值   平均值  95%   标准差  中间值
               分析中
               的百分
               比                
    # ============ === ======= ======= ======= ======= ======= ======= =======
    # Count         69   30988
    说明:执行语句总数量
    # Exec time     50 104236s      3s      7s      3s      4s   303ms      3s
    说明:执行时间
    # Lock time     24      2s    22us    93ms    65us    66us   775us    38us
    说明:锁占用时间
    # Rows sent      0  70.53k       0     799    2.33    3.89   16.60    0.99
    说明:发送到客户端的行数
    # Rows examine  54  40.28G   1.32M   1.35M   1.33M   1.32M  15.65k   1.32M
    说明:扫描语句的行数
    # Query size    26   2.16M      73      73      73      73       0      73
    说明:查询的字符数
    # String:
    # Hosts        localhost
    说明:使用的数据主机IP
    # Users        xxx
    说明:使用的用户
    # Query_time distribution
    #   1us
    #  10us
    # 100us
    #   1ms
    #  10ms
    # 100ms
    #    1s  ################################################################
    #  10s+
    说明:查询时间分布
    # Tables
    #    SHOW TABLE STATUS LIKE &#39;xxx&#39;\G
    #    SHOW CREATE TABLE `xxx`\G
    # EXPLAIN /*!50100 PARTITIONS*/
    select * from `table_name` where `updated_at` >= &#39;2022-10-15 00:00:40&#39;\G
    说明:查询的mysql语句
    第三部分是每一种查询比较慢的 sql 的详细统计结果
    pct:该 sql 语句某执行属性占所有慢查询语句某执行属性的百分比
    total:该 sql 语句某执行属性的所有属性时间。
    Count:sql 语句执行的次数。
    Exec time:sql 执行时间
    Lock time:sql 执行期间被

六查看偏移

    可以利用偏移量在慢查詢日誌檔中到查找到具體的SQL 語句,查找方法如下:
  • [localhost]# tail -c +221452362 ./mysql-slow.log | head
    t: root[root] @ localhost []  Id: 13704150
    # Query_time: 7.058835  Lock_time: 0.000040 Rows_sent: 2  Rows_examined: 1392521
    SET timestamp=1665763267;
    select * from `xxxxxx` where `updated_at` >= &#39;2022-10-15 00:00:40&#39;;
    # User@Host: root[localhost] @ localhost []  Id: 13704174
    # Query_time: 7.445741  Lock_time: 0.000015 Rows_sent: 3  Rows_examined: 2214002
    SET timestamp=1665763267;
    select xxx from table where xxx
    # Time: 221015 008
    # User@Host: root[localhost] @ localhost []  Id: 13704414

以上是實例分析MySQL中pt-query-digest工具的使用記錄的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:learnku。如有侵權,請聯絡admin@php.cn刪除
MySQL中的存儲過程是什麼?MySQL中的存儲過程是什麼?May 01, 2025 am 12:27 AM

存儲過程是MySQL中的預編譯SQL語句集合,用於提高性能和簡化複雜操作。 1.提高性能:首次編譯後,後續調用無需重新編譯。 2.提高安全性:通過權限控制限制數據表訪問。 3.簡化複雜操作:將多條SQL語句組合,簡化應用層邏輯。

查詢緩存如何在MySQL中工作?查詢緩存如何在MySQL中工作?May 01, 2025 am 12:26 AM

MySQL查詢緩存的工作原理是通過存儲SELECT查詢的結果,當相同查詢再次執行時,直接返回緩存結果。 1)查詢緩存提高數據庫讀取性能,通過哈希值查找緩存結果。 2)配置簡單,在MySQL配置文件中設置query_cache_type和query_cache_size。 3)使用SQL_NO_CACHE關鍵字可以禁用特定查詢的緩存。 4)在高頻更新環境中,查詢緩存可能導致性能瓶頸,需通過監控和調整參數優化使用。

與其他關係數據庫相比,使用MySQL的優點是什麼?與其他關係數據庫相比,使用MySQL的優點是什麼?May 01, 2025 am 12:18 AM

MySQL被廣泛應用於各種項目中的原因包括:1.高性能與可擴展性,支持多種存儲引擎;2.易於使用和維護,配置簡單且工具豐富;3.豐富的生態系統,吸引大量社區和第三方工具支持;4.跨平台支持,適用於多種操作系統。

您如何處理MySQL中的數據庫升級?您如何處理MySQL中的數據庫升級?Apr 30, 2025 am 12:28 AM

MySQL數據庫升級的步驟包括:1.備份數據庫,2.停止當前MySQL服務,3.安裝新版本MySQL,4.啟動新版本MySQL服務,5.恢復數據庫。升級過程需注意兼容性問題,並可使用高級工具如PerconaToolkit進行測試和優化。

您可以使用MySQL的不同備份策略是什麼?您可以使用MySQL的不同備份策略是什麼?Apr 30, 2025 am 12:28 AM

MySQL備份策略包括邏輯備份、物理備份、增量備份、基於復制的備份和雲備份。 1.邏輯備份使用mysqldump導出數據庫結構和數據,適合小型數據庫和版本遷移。 2.物理備份通過複製數據文件,速度快且全面,但需數據庫一致性。 3.增量備份利用二進制日誌記錄變化,適用於大型數據庫。 4.基於復制的備份通過從服務器備份,減少對生產系統的影響。 5.雲備份如AmazonRDS提供自動化解決方案,但成本和控制需考慮。選擇策略時應考慮數據庫大小、停機容忍度、恢復時間和恢復點目標。

什麼是mySQL聚類?什麼是mySQL聚類?Apr 30, 2025 am 12:28 AM

MySQLclusteringenhancesdatabaserobustnessandscalabilitybydistributingdataacrossmultiplenodes.ItusestheNDBenginefordatareplicationandfaulttolerance,ensuringhighavailability.Setupinvolvesconfiguringmanagement,data,andSQLnodes,withcarefulmonitoringandpe

如何優化數據庫架構設計以在MySQL中的性能?如何優化數據庫架構設計以在MySQL中的性能?Apr 30, 2025 am 12:27 AM

在MySQL中優化數據庫模式設計可通過以下步驟提升性能:1.索引優化:在常用查詢列上創建索引,平衡查詢和插入更新的開銷。 2.表結構優化:通過規範化或反規範化減少數據冗餘,提高訪問效率。 3.數據類型選擇:使用合適的數據類型,如INT替代VARCHAR,減少存儲空間。 4.分區和分錶:對於大數據量,使用分區和分錶分散數據,提升查詢和維護效率。

您如何優化MySQL性能?您如何優化MySQL性能?Apr 30, 2025 am 12:26 AM

tooptimizemysqlperformance,lofterTheSeSteps:1)inasemproperIndexingTospeedUpqueries,2)使用ExplaintplaintoAnalyzeandoptimizequeryPerformance,3)ActiveServerConfigurationStersLikeTlikeTlikeTlikeIkeLikeIkeIkeLikeIkeLikeIkeLikeIkeLikeNodb_buffer_pool_sizizeandmax_connections,4)

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具