mysql運維利器percona-toolkit工具之pt-query-digest

wisdomone1發表於2019-11-17

本文目錄

  •    前提條件

  •    開啟慢查詢

  •    執行sql

  •    pt-query-digest語法

  •    使用pt-query-digest分析慢查詢日誌

  •    相關文章

  •    聯絡方式


前提條件

  •    mysql版本5.7.21

  •    redhat 6.8


開啟慢查詢

啟用慢查詢

mysql> set global slow_query_log=on;
Query OK, 0 rows affected (0.01 sec)

啟用未使用索引慢查詢

mysql> set global log_queries_not_using_indexes=on;
Query OK, 0 rows affected (0.00 sec)

執行sql

建立測試表

mysql> use zxydb;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql>  insert into t_slow select * from t_slow;
Query OK, 8388608 rows affected (35.04 sec)
Records: 8388608  Duplicates: 0  Warnings: 0


執行sql查詢

mysql> select count(*) from zxydb.t_slow;
+----------+
| count(*) |
+----------+
| 16777216 |
+----------+
1 row in set (6.48 sec)


pt-query-digest語法

查詢pt-query-digest選項

[root@three57 percona-toolkit-3.1.0]# pt-query-digest --help
pt-query-digest analyzes MySQL queries from slow, general, and binary log files.
It can also analyze queries from C<SHOW PROCESSLIST> and MySQL protocol data
from tcpdump.  By default, queries are grouped by fingerprint and reported in
descending order of query time (i.e. the slowest queries first).  If no C<FILES>
are given, the tool reads C<STDIN>.  The optional C<DSN> is used for certain
options like L<"--since"> and L<"--until">.  For more details, please use the
--help option, or try 'perldoc /usr/local/bin/pt-query-digest' for complete
documentation.
Usage: pt-query-digest [OPTIONS] [FILES] [DSN]
Options:
  --ask-pass                   Prompt for a password when connecting to MySQL
  --attribute-aliases=a        List of attribute|alias,etc (default db|Schema)
  --attribute-value-limit=i    A sanity limit for attribute values (default 0)
  --charset=s              -A  Default character set
  --config=A                   Read this comma-separated list of config files;
                               if specified, this must be the first option on
                               the command line


獲取完整pt-query-digest全部語義資訊

[root@three57 percona-toolkit-3.1.0]# man pt-query-digest>/pt-query.log


使用pt-query-digest分析慢查詢日誌

[root@three57 percona-toolkit-3.1.0]# pt-query-digest  /var/lib/mysql/three57-slow.log 
使用者時間分佈及程式內程記憶體
# 100ms user time, 10ms system time, 21.88M rss, 173.04M vsz
當前系統時間
# Current date: Wed Nov 13 15:29:44 2019
主機名稱
# Hostname: three57
慢查詢日誌
# Files: /var/lib/mysql/three57-slow.log
QPS及併發
# Overall: 1 total, 1 unique, 0 QPS, 0x concurrency ______________________
# Time range: all events occurred at 2019-11-13T07:28:59
屬性:全部,最小,最大,平均,95%,平均利差,中差
# Attribute          total     min     max     avg     95%  stddev  median
# ============     ======= ======= ======= ======= ======= ======= =======
SQL執行時間
# Exec time             7s      7s      7s      7s      7s       0      7s
鎖定時間
# Lock time          127us   127us   127us   127us   127us       0   127us
SQL產生結果個數
# Rows sent              1       1       1       1       1       0       1
SQL掃描表記錄
# Rows examine      16.00M  16.00M  16.00M  16.00M  16.00M       0  16.00M
查詢大小
# Query size            33      33      33      33      33       0      33
符合慢查詢SQL的概述,極重要,排版一個字,棒
# Profile
RANK為排名編號 query id為具體SQL response time為sql響應時間 calls為SQL執行次數
r/call為每次SQL執行的響應時間,具體的SQL語句
# Rank Query ID                           Response time Calls R/Call V/M  
# ==== ================================== ============= ===== ====== =====
#    1 0xAC104A376C0A55B1F56FDA6E706E555F 6.7433 100.0%     1 6.7433  0.00 SELECT zxydb.t_slow
具體慢查詢SQL語句
# Query 1: 0 QPS, 0x concurrency, ID 0xAC104A376C0A55B1F56FDA6E706E555F at byte 0
# This item is included in the report because it matches --limit.
# Scores: V/M = 0.00
# Time range: all events occurred at 2019-11-13T07:28:59
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count        100       1
SQL執行時間為7s
# Exec time    100      7s      7s      7s      7s      7s       0      7s
SQL鎖定時間為127us,此值如極高,需要針對性分析
# Lock time    100   127us   127us   127us   127us   127us       0   127us
# Rows sent    100       1       1       1       1       1       0       1
全表掃描相關
# Rows examine 100  16.00M  16.00M  16.00M  16.00M  16.00M       0  16.00M
# Query size   100      33      33      33      33      33       0      33
# String:
產生SQL的主機及使用者
# Hosts        localhost
# Users        root
SQL不同時間範圍分佈,極好極好
可見如上SQL執行時間在1S左右
# Query_time distribution
#   1us
#  10us
# 100us
#   1ms
#  10ms
# 100ms
#    1s  ################################################################
#  10s+
# Tables
#    SHOW TABLE STATUS FROM `zxydb` LIKE 't_slow'\G
#    SHOW CREATE TABLE `zxydb`.`t_slow`\G
# EXPLAIN /*!50100 PARTITIONS*/
select count(*) from zxydb.t_slow\G
[root@three57 percona-toolkit-3.1.0]#


相關文章  
redhat 6.8安裝mysql運維利器GitHub percona-toolkit    
percona toolkit pt-variable-advisor驗證mysql variable是否配置合理  
redhat 6.5 deploying percona toolkit 3.0.9 pt-mysql-summary


聯絡方式

mysql運維利器percona-toolkit工具之pt-query-digest

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-2664531/,如需轉載,請註明出處,否則將追究法律責任。

相關文章