首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Percona Toolkit 系統與性能診斷工具箱:pt-diskstats、pt-stalk、pt-index-usage、pt-visual-explain 實戰

     編輯:MySQL 資料庫相關知識

系統類工具

1. pt-diskstats:交互式磁盤 I/O 監控(增強版 iostat)

# 監控所有磁盤
pt-diskstats

# 僅監控 sda2
pt-diskstats --devices-regex sda2

交互界面按鍵:d 切換設備、r 切換讀/寫、q 退出。支持遠程采集文件分析。

2. pt-fifo-split:大文件分塊流式導入利器

模擬命名管道,按指定行數切割大文件流式傳遞給 LOAD DATA INFILE,避免單次大事務阻塞。

# 每 100 萬行切一塊,默認 fifo /tmp/pt-fifo-split
pt-fifo-split --lines 1000000 hugefile.txt
while [ -e /tmp/pt-fifo-split ]; do cat /tmp/pt-fifo-split; done

# 指定 fifo 並直接導入 MySQL
pt-fifo-split infile.txt --fifo /tmp/my-fifo --lines 1000000
while [ -e /tmp/my-fifo ]; do
  mysql -e "SET foreign_key_checks=0; SET sql_log_bin=0; SET unique_checks=0; LOAD DATA LOCAL INFILE '/tmp/my-fifo' INTO TABLE load_test FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' (col1, col2);"
  sleep 1;
done

原理:生產者寫入 fifo 達行數發 EOF,消費者讀完關閉,生產者重建 fifo 繼續,實現流控。

3. pt-summary:系統配置硬件信息一鍵收集報告

pt-summary

以 root 運行最佳,收集 CPU/內存/磁盤/網絡/內核參數等,輸出易對比/郵件分享的文本報告。

4. pt-stalk:間歇性故障自動診斷數據收集器

守護進程模式,觸發條件滿足時自動收集全套診斷數據包(GLOBAL STATUS/VARIABLES、InnoDB STATUS、processlist、top、vmstat、lsof、netstat、pmap 等)。

# 觸發條件:Threads_running > 20,數據存 /tmp/test
pt-stalk --function status --variable Threads_running --threshold 20 --dest /tmp/test -- -uroot -pzhang@123 -h192.168.3.135

# 觸發條件:Processlist 中 State=statistics 超過 20 個
pt-stalk --function processlist --variable State --match statistics --threshold 20 --dest /tmp/test -- -uroot -pzhang@123 -h192.168.3.135

生成文件列表示例:2012_06_04_17_31_49-{df,diskstats,innodbstatus1,processlist,top,vmstat,...}

性能類工具

1. pt-index-usage:慢查詢索引使用情況分析

# 分析慢查詢日志,輸出未被使用的索引報告
pt-index-usage /data/dbdata/localhost-slow.log --host=localhost --user=root --password=zhang@123

# 結果存入數據庫 (自動建表)
pt-index-usage /data/dbdata/localhost-slow.log --host=localhost --user=root --password=zhang@123 --no-report --create-save-results-database

輸入 SQL 格式需與慢查詢一致,否則先用 pt-query-digest 轉換。

2. pt-pmp:進程堆棧聚合分析(診斷卡頓/CPU 高)

pt-pmp -p 21933
pt-pmp -b /usr/local/mysql/bin/mysqld_safe

3. pt-visual-explain:EXPLAIN 執行計劃樹狀可視化

# 解析包含 EXPLAIN 結果的文件
pt-visual-explain aaa

# 解析包含 SQL 的文件 (自動連接執行 EXPLAIN)
pt-visual-explain --connect aaa --user=root --password=zhang@123

# 管道直通
mysql -uroot -pzhang@123 -e "EXPLAIN SELECT email FROM test.collect_data WHERE id=101992419" | pt-visual-explain

輸出樹狀結構,清晰展示掃描類型、連接順序、索引使用、Rows 預估等,極大降低閱讀門檻。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved