久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

mysql中pt

140次閱讀
沒有評論

共計 6108 個字符,預計需要花費 16 分鐘才能閱讀完成。

這篇文章主要介紹 mysql 中 pt-query-digest 如何安裝使用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

pt-query-digest 安裝使用

一、簡介

pt-query-digest 是用于分析 mysql 慢查詢的一個工具,它可以分析 binlog、General log、slowlog,也可以通過 SHOWPROCESSLIST 或者通過 tcpdump 抓取的 MySQL 協議數據來進行分析。可以把分析結果輸出到文件中,分析過程是先對查詢語句的條件進行參數化,然后對參數化以后的查詢進行分組統計,統計出各查詢的執行時間、次數、占比等,可以借助分析結果找出問題進行優化。

二、安裝 pt-query-digest

1. 下載頁面:

https://www.percona.com/doc/percona-toolkit/3.0/installation.html
 

2. 配置 yum 庫

Configuring      Percona Repository

Enabling Testing      and Experimental Repositories

yum install
http://www.percona.com/downloads/percona-release/redhat/0.1-6/percona-release-0.1-6.noarch.rpm

3.yum 方式安裝

yum install percona-toolkit

默認安裝到:/usr/bin

[root@tqsrv122 yum]# ls /usr/bin/pt-*

/usr/bin/pt-align  /usr/bin/pt-ioprofile  /usr/bin/pt-slave-delay

/usr/bin/pt-archiver  /usr/bin/pt-kill  /usr/bin/pt-slave-find

/usr/bin/pt-config-diff  /usr/bin/pt-mext  /usr/bin/pt-slave-restart

/usr/bin/pt-deadlock-logger  /usr/bin/pt-mongodb-query-digest  /usr/bin/pt-stalk

/usr/bin/pt-diskstats  /usr/bin/pt-mongodb-summary  /usr/bin/pt-summary

/usr/bin/pt-duplicate-key-checker  /usr/bin/pt-mysql-summary  /usr/bin/pt-table-checksum

/usr/bin/pt-fifo-split  /usr/bin/pt-online-schema-change  /usr/bin/pt-table-sync

/usr/bin/pt-find  /usr/bin/pt-pmp  /usr/bin/pt-table-usage

/usr/bin/pt-fingerprint  /usr/bin/pt-query-digest  /usr/bin/pt-upgrade

/usr/bin/pt-fk-error-logger  /usr/bin/pt-secure-collect  /usr/bin/pt-variable-advisor

/usr/bin/pt-heartbeat  /usr/bin/pt-show-grants  /usr/bin/pt-visual-explain

/usr/bin/pt-index-usage  /usr/bin/pt-sift

4. 各工具用法簡介(詳細內容:https://www.percona.com/doc/percona-toolkit/3.0/index.html)

(1) 慢查詢日志分析統計

pt-query-digest /usr/local/mysql/data/slow.log

(2) 服務器摘要

pt-summary

(3) 服務器磁盤監測

pt-diskstats

(4)mysql 服務狀態摘要

pt-mysql-summary — –user=root –password=root

三、pt-query-digest 語法及重要選項

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 可以分析一段時間內的慢查詢。

四、分析 pt-query-digest 輸出結果

第一部分:總體統計結果

Overall:總共有多少條查詢

Time range:查詢執行的時間范圍

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

total:總計   min:最小   max:最大   avg:平均

95%:把所有值從小到大排列,位置位于 95% 的那個數,這個數一般最具有參考價值

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

#
該工具執行日志分析的用戶時間,系統時間,物理內存占用大小,虛擬內存占用大小

# 340ms user time, 140ms system time, 23.99M rss, 203.11M vsz

#
工具執行時間

# Current date: Fri Nov 25 02:37:18 2016

#
運行分析工具的主機名

# Hostname: localhost.localdomain

#
被分析的文件名

# Files: slow.log

#
語句總數量,唯一的語句數量,QPS,并發數

# Overall: 2 total, 2 unique, 0.01 QPS, 0.01x concurrency ________________

#
日志記錄的時間范圍

# Time range: 2016-11-22 06:06:18 to 06:11:40

#
屬性  
總計  
最小  
最大  
平均   95% 
標準  
中等

# Attribute  total  min  max  avg  95%  stddev  median

# ============  ======= ======= ======= ======= ======= ======= =======

#
語句執行時間

# Exec time  3s  640ms  2s  1s  2s  999ms  1s

#
鎖占用時間

# Lock time  1ms  0  1ms  723us  1ms  1ms  723us

#
發送到客戶端的行數

# Rows sent  5  1  4  2.50  4  2.12  2.50

# select 語句掃描行數

# Rows examine  186.17k  0 186.17k  93.09k 186.17k 131.64k  93.09k

#
查詢的字符數

# Query size  455  15  440  227.50  440  300.52  227.50

第二部分:查詢分組統計結果

Rank:所有語句的排名,默認按查詢時間降序排列,通過 –order-by 指定

Query ID:語句的 ID,(去掉多余空格和文本字符,計算 hash 值)

Response:總的響應時間

time:該查詢在本次分析中總的時間占比

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

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

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

Item:查詢對象

# Profile
# Rank Query ID  Response time Calls R/Call V/M  Item
# ==== ================== ============= ===== ====== ===== ===============

1 0xF9A57DD5A41825CA 
2.0529 76.2% 
1 2.0529 
SELECT

2 0x4194D8F83F4F9365 
0.6401 23.8% 
1 0.6401 
SELECT wx_member_base

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

由下面查詢的詳細統計結果,最上面的表格列出了執行次數、最大、最小、平均、95% 等各項目的統計。

ID:查詢的 ID 號,和上圖的 Query ID 對應

Databases:數據庫名

Users:各個用戶執行的次數(占比)

Query_time distribution
:查詢時間分布,
長短體現區間占比,本例中 1s-10s 之間查詢數量是 10s 以上的兩倍。

Tables:查詢中涉及到的表

Explain:SQL 語句

# Query 1: 0 QPS, 0x concurrency, ID 0xF9A57DD5A41825CA at byte 802 ______

# This item is included in the report because it matches –limit.

# Scores: V/M = 0.00

# Time range: all events occurred at 2016-11-22 06:11:40

# Attribute  pct  total  min  max  avg  95%  stddev  median

# ============ === ======= ======= ======= ======= ======= ======= =======

# Count  50  1

# Exec time  76  2s  2s  2s  2s  2s  0  2s

# Lock time  0  0  0  0  0  0  0  0

# Rows sent  20  1  1  1  1  1  0  1

# Rows examine  0  0  0  0  0  0  0  0

# Query size  3  15  15  15  15  15  0  15

# String:

# Databases  test

# Hosts  192.168.8.1

# Users  mysql

# Query_time distribution

#  1us

#  10us

# 100us

#  1ms

#  10ms

# 100ms

#  1s  ################################################################

#  10s+

# EXPLAIN /*!50100 PARTITIONS*/

select sleep(2)\G

五、用法示例

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
2017-01-07 09:30:00
–until
2017-01-07 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_0001
pt-query-digest  –user=root –password=abc123 –review  h=localhost,D=test,t=query_history–create-review-table  slow.log_0002

9. 通過 tcpdump 抓取 mysql 的 tcp 協議數據,然后再分析

tcpdump -s
65535
-x -nn -q -tttt -i any -c
port
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

以上是“mysql 中 pt-query-digest 如何安裝使用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-27發表,共計6108字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 蓝田县| 凌源市| 九寨沟县| 云浮市| 平舆县| 六枝特区| 阿尔山市| 宿迁市| 广平县| 龙胜| 连州市| 汕头市| 大庆市| 准格尔旗| 辽宁省| 边坝县| 诸暨市| 方山县| 彭泽县| 苗栗市| 江永县| 潼关县| 会昌县| 吐鲁番市| 大渡口区| 吉木乃县| 咸宁市| 施甸县| 西乌珠穆沁旗| 蚌埠市| 定安县| 墨玉县| 武乡县| 巴林左旗| 青浦区| 扎赉特旗| 平山县| 抚顺县| 平罗县| 礼泉县| 诸暨市|