Maison > base de données > tutoriel mysql > Exemple d'analyse des enregistrements d'utilisation de l'outil pt-query-digest dans MySQL

Exemple d'analyse des enregistrements d'utilisation de l'outil pt-query-digest dans MySQL

藏色散人
Libérer: 2022-11-30 17:07:01
avant
1640 Les gens l'ont consulté

Cet article vous apporte des connaissances pertinentes sur MySQL. Il présente principalement un outil pt-query-digest pour analyser les journaux de requêtes lentes de MySQL. J'espère qu'il sera utile à tout le monde.

1. Introduction

pt-query-digest est un outil utilisé pour analyser les journaux de requêtes lentes MySQL. Il peut également analyser les données de protocole dans tcpdump à partir des requêtes "SHOW PROCESSLIST" et MySQL. Nous pouvons générer le journal d'analyse dans un fichier spécifié et effectuer l'optimisation correspondante et d'autres opérations en analysant le fichier journal.

2. Téléchargez et installez

  • Selon les différentes installations du système, mon système est centos, alors choisissez directement l'installation centos, Cliquez pour télécharger
  • Utilisez yum pour installer directement
> 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
Copier après la connexion
  • ou utilisez le code source package pour compiler Installation
> 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
Copier après la connexion

3. Installation terminée

  • Exemple danalyse des enregistrements dutilisation de loutil pt-query-digest dans MySQL

4. Analyser le journal des requêtes lentes de msql

  • paramètre pt-query-digest Vous pouvez utiliser la commande perldoc pour afficher
    perldoc /usr/bin/pt-query-digest
    Copier après la connexion
  • Analyse l'intégralité du fichier journal lent
    pt-query-digest mysql-slow.log > slow_report.log
    Copier après la connexion
  • analyse les journaux de l'heure spécifiée depuis~jusqu'à
    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
    Copier après la connexion
    • –depuis : indique l'heure de début
    • –jusqu'à : indique l'heure de fin
  • analyse le journal lent et enregistre le résultats de l'analyse vers la table de données MySQLrreee
    • –utilisateur : nom d'utilisateur de la base de données
    • –mot de passe : mot de passe de la base de données
    • h : hôte de la base de données
    • D : nom de la base de données
    • t : nom de la table générée

5. Analyse des résultats

Partie 1 : Un aperçu général de l'analyse

  • Global : combien de requêtes y a-t-il au total

  • Plage de temps : la plage de temps d'exécution des requêtes

  • unique : le nombre de requêtes uniques, c'est-à-dire , combien de requêtes différentes y a-t-il au total après avoir paramétré les conditions de requête

  • total : Durée totale de toutes les requêtes

  • min : Durée minimale de toutes les requêtes

  • max : Durée maximale de toutes les requêtes

  • avg : Durée moyenne de toutes les requêtes

  • 95% : Combiner toutes les valeurs de durée Classé de petit à grand, le nombre de durée situé à 95%, ce nombre est généralement le plus précieux pour référence

  • médiane : Médiane, toutes les valeurs de durée sont classées de petite à grande, le numéro de durée situé au milieu

  • 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'
    Copier après la connexion

Partie 2 : Analyse

  • Rang : Classement de toutes les instructions, par défaut par ordre décroissant du temps de requête, spécifié par –order-by

    • –order-by Query_time:sum : Par ordre décroissant de la durée totale de la requête
      Introduction aux paramètres de tri :
      sum Somme/valeur totale de l'attribut (valeur par défaut)
      min Valeur minimale de l'attribut (valeur minimale)
      max Valeur maximale de l'attribut (valeur minimale)
      cnt Fréquence/nombre de la requête (par le nombre d'occurrences SQL)
  • ID de requête : ID de l'instruction (supprime les espaces et les caractères de texte supplémentaires, calcule la valeur de hachage)

  • Response : Temps de réponse total

  • time : La proportion de temps total de cette requête dans cette analyse

  • Calls : Le nombre d'exécutions, c'est-à-dire le nombre total d'instructions de requête de ce type dans cette analyse

  • R/Call : Le temps de réponse moyen de chaque exécution

  • V/M : Temps de réponse Variance-to- Le rapport de la moyenne

  • Item : Objet de requête

# 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
说明:查询的字符数
Copier après la connexion

Partie 3 : Spécifique Statistiques et analyses SQL

  • pct : Le pourcentage d'un attribut d'exécution de l'instruction SQL par rapport à un attribut d'exécution de toutes les instructions de requête lentes

  • total : Tous les temps d'attribut d'un attribut d'exécution de l'instruction SQL.

  • Count : Le nombre de fois que l'instruction SQL est exécutée. Le pourcentage correspondant indique le nombre de fois que cette instruction SQL est exécutée en pourcentage du nombre de fois que toutes les instructions de requête lentes sont exécutées (69 % dans la figure ci-dessous), et le total correspondant indique un total de 30 988 exécutions.

  • Exec time : temps d'exécution SQL

  • Lock time : temps de verrouillage SQL pendant l'exécution

  • Lignes envoyées : les données valides transmises n'ont de valeur que dans l'instruction de requête de sélection

  • Lignes examinées : Total interrogé données, données non cibles.

  • Distribution Query_time : distribution du temps de requête

  • Instruction SQL : dans la figure ci-dessous, sélectionnez sleep(7)G

# 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>
Copier après la connexion

Six View Offset

  • Vous pouvez utiliser le décalage dans la requête lente log Pour trouver l'instruction SQL spécifique dans le fichier, la méthode de recherche est la suivante :
# 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 执行期间被
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal