ホームページ >データベース >mysql チュートリアル >MySQL の pt-query-digest ツールの使用記録の分析例

MySQL の pt-query-digest ツールの使用記録の分析例

藏色散人
藏色散人転載
2022-11-30 17:07:011640ブラウズ

この記事では、mysql に関する関連知識をお届けします。主に、mysql のスロー クエリ ログを分析するためのツール pt-query-digest を紹介します。一緒に見てみましょう。皆さんのお役に立てれば幸いです。

1. はじめに

pt-query-digest は、mysql のスロー クエリ ログを分析するために使用されるツールで、「SHOW PROCESSLIST」および MySQL プロトコルからのクエリも分析できます。 tcpdump内のデータ。解析ログを指定したファイルに出力し、ログファイルを解析することで対応する最適化などを行うことができます。

2. ダウンロードしてインストールします

  • さまざまなシステムに応じてインストールします。私のシステムは 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

3. インストール完了

  • MySQL の pt-query-digest ツールの使用記録の分析例

##4. 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
    • – because: 開始時刻を示します
    • –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: データベース ホスト
    • D: データベース名
    • t: 生成されたテーブル名
  • 5. 結果分析

    パート 1: 一般的な分析の概要

    全体: クエリは合計で何個ありますか
    • 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
      说明:查询的字符数

    • パート 2: 分析

    Rank: すべてのステートメントのランキング。デフォルトではクエリ時間の降順に並べられ、-order-by
    • -order-by で指定されます。 Query_time:sum: 合計クエリ時間で逆順に並べ替えます

      ソートパラメータの概要:
        sum 属性値の合計/合計 (デフォルト値)
      • min 属性値の最小値 (最小値)
        max 属性値の最大値 (最小値)
        cnt ソートの頻度/数クエリ (SQL の出現回数による)


      クエリ ID: ステートメント ID (余分なスペースとテキスト文字を削除し、ハッシュ値を計算します)
    • ##応答: 合計応答時間
    • 時間: クエリは次のとおりです。この分析における合計時間の割合
    • 呼び出し:実行数、つまり、この分析におけるこのタイプのクエリ ステートメントの合計数
    • R/Call: 実行ごとの平均応答時間
    • V/M: 応答時間の分散対平均の比率
    • 項目: クエリ オブジェクト
    • # 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>

      パート 3: 特定の SQL 統計および分析

    pct: この SQL ステートメントの特定の実行属性が、すべての遅いクエリの原因となっています。 ステートメントの実行属性のパーセンテージ
    • total : SQL 文の実行属性のすべての属性時刻。
    • Count: SQL ステートメントが実行された回数。対応する pct は、この SQL ステートメントの実行回数がすべてのスロー クエリ ステートメントの実行回数 (下図では 69%) の % を占めることを示し、対応する合計は、合計 30988 回が実行されたことを示します。実行されました。
    • 実行時間: SQL の実行時間
    • ロック時間: SQL が実行中にロックされる時間
    • 送信された行: 送信された有効なデータは、選択クエリ ステートメント内でのみ値を持ちます。
    • 行の検査: クエリされたデータの合計、非ターゲット データ。
    • #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 执行期间被

      6 ビュー オフセット

    オフセットを使用して、スロー クエリ ログ ファイル内の特定の SQL ステートメントを見つけることができます。検索方法は次のとおりです:

    えー

    以上がMySQL の pt-query-digest ツールの使用記録の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。