MySQL のスロークエリログの pt-query-digest 分析の詳細な紹介
この記事では主に MySQL スロークエリログの pt-query-digest 分析に関する関連情報を紹介します。記事内の紹介は非常に詳細であり、必要な方は以下を参照してください。 。 バー。
1. はじめに
pt-query-digest は、mysql のスロークエリを分析するためのツールであり、binlog、一般ログ、slowlog を分析でき、SHOWPROCESSLIST または tcpdump を通じて MySQL のプロトコル データをキャプチャすることもできます。分析。分析結果はファイルに出力できます。分析プロセスでは、まずクエリ ステートメントの条件をパラメータ化し、次にパラメータ化されたクエリに対してグループ統計を実行して、各クエリの実行時間、回数、割合を計算できます。分析 その結果、問題が特定され、最適化されます。
2.perlモジュールをインストールします方法1: rpmインストール
yum install -y perl-CPAN perl-Time-HiRes
cd /usr/local/src wget percona.com/get/percona-toolkit.rpm yum install -y percona-toolkit.rpm
(1) スロークエリログ分析統計
cd /usr/local/src wget percona.com/get/percona-toolkit.tar.gz tar zxf percona-toolkit.tar.gz cd percona-toolkit-2.2.19 perl Makefile.PL PREFIX=/usr/local/percona-toolkit make && make install
pt-query-digest /usr/local/mysql/data/slow.log
pt-summary
pt-diskstats
pt- query-digest [OPTIONS ] [FILES] [DSN]
- --create-review-table --review パラメータを使用して分析結果をテーブルに出力する場合、テーブルが存在しない場合は自動的に作成されます。
- --create-history-table --history パラメータを使用して分析結果をテーブルに出力する場合、テーブルが存在しない場合は自動的に作成されます。
- --filter 指定された string
- に従って入力スロークエリを照合およびフィルターし、分析します。 --limit 出力結果のパーセンテージまたは数を制限します。デフォルト値は 20 です。最も遅い 20 ステートメントが出力されます。50% の場合、合計応答時間に応じて大きい順にソートされ、合計が 50% に達すると出力が打ち切られます。
- --ホストmysqlサーバーアドレス
- --user mysqlユーザー名
- --password mysqlユーザーパスワード
- --history 分析結果をテーブルに保存します。分析結果はより詳細になります。 , 次回 --history を使用すると、同じステートメントが存在し、クエリの時間間隔が履歴テーブルの時間間隔と異なる場合、データ テーブルに記録され、特定の種類の履歴の変更を比較できます。同じ CHECKSUM をクエリすることによってクエリの内容を確認します。
- --review 分析結果をテーブルに保存します。この分析では 1 つのクエリ条件のみをパラメータ化します。これは比較的単純です。次回 --review を使用した場合、同じステートメント分析が存在する場合、データテーブルには記録されません。
- -- 出力分析結果の出力タイプ。値はレポート (標準分析レポート)、slowlog (Mysql スロー ログ)、 json
- 、json-anon にすることができます。通常は読みやすいようにレポートを使用します。 --since は、分析が開始されてからの時刻です。値は、「yyyy-mm-dd [hh:mm:ss]」の形式で指定された時点です。値は単純な時間です: s (秒)、h (時間)、m (分)、d (日)。たとえば、12h は 12 時間前に開始された統計を意味します。
- -- 期限まで、 -- と組み合わせると、一定期間にわたる遅いクエリを分析できます。
パート 1: 全体的な統計結果
全体: 合計でクエリの数は何ですか? 時間範囲:クエリ実行
pt-mysql-summary -- --user=root --password=root
パート 2: クエリグループの統計結果
ランク: すべてのステートメントのランキング。デフォルトではクエリ時間で降順に並べ替えられ、--order-by で指定されます。
クエリ ID: ステートメントの ID、 (余分なスペースとテキスト文字を削除し、
ハッシュ値を計算します)
Response: 合計応答時間
Item:查询对象
# Profile # Rank Query ID Response time Calls R/Call V/M Item # ==== ================== ============= ===== ====== ===== =============== # 1 0xF9A57DD5A41825CA 2.0529 76.2% 1 2.0529 0.00 SELECT # 2 0x4194D8F83F4F9365 0.6401 23.8% 1 0.6401 0.00 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 1000 port 3306 > 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 分析の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQLは、インストールが簡単で、強力で管理しやすいため、初心者に適しています。 1.さまざまなオペレーティングシステムに適した、単純なインストールと構成。 2。データベースとテーブルの作成、挿入、クエリ、更新、削除などの基本操作をサポートします。 3.参加オペレーションやサブクエリなどの高度な機能を提供します。 4.インデックス、クエリの最適化、テーブルパーティション化により、パフォーマンスを改善できます。 5。データのセキュリティと一貫性を確保するために、バックアップ、リカバリ、セキュリティ対策をサポートします。

MySQLは、オープンソースのリレーショナルデータベース管理システムです。 1)データベースとテーブルの作成:createdatabaseおよびcreateTableコマンドを使用します。 2)基本操作:挿入、更新、削除、選択。 3)高度な操作:参加、サブクエリ、トランザクション処理。 4)デバッグスキル:構文、データ型、およびアクセス許可を確認します。 5)最適化の提案:インデックスを使用し、選択*を避け、トランザクションを使用します。

次の手順でphpmyadminを開くことができます。1。ウェブサイトコントロールパネルにログインします。 2。phpmyadminアイコンを見つけてクリックします。 3。MySQL資格情報を入力します。 4.「ログイン」をクリックします。

NAVICATプレミアムを使用してデータベースを作成します。データベースサーバーに接続し、接続パラメーターを入力します。サーバーを右クリックして、[データベースの作成]を選択します。新しいデータベースの名前と指定された文字セットと照合を入力します。新しいデータベースに接続し、オブジェクトブラウザにテーブルを作成します。テーブルを右クリックして、データを挿入してデータを挿入します。

MySQLとSQLは、開発者にとって不可欠なスキルです。 1.MYSQLはオープンソースのリレーショナルデータベース管理システムであり、SQLはデータベースの管理と操作に使用される標準言語です。 2.MYSQLは、効率的なデータストレージと検索機能を介して複数のストレージエンジンをサポートし、SQLは簡単なステートメントを通じて複雑なデータ操作を完了します。 3.使用の例には、条件によるフィルタリングやソートなどの基本的なクエリと高度なクエリが含まれます。 4.一般的なエラーには、SQLステートメントをチェックして説明コマンドを使用することで最適化できる構文エラーとパフォーマンスの問題が含まれます。 5.パフォーマンス最適化手法には、インデックスの使用、フルテーブルスキャンの回避、参加操作の最適化、コードの読み取り可能性の向上が含まれます。

手順に従って、NAVICATで新しいMySQL接続を作成できます。アプリケーションを開き、新しい接続(CTRL N)を選択します。接続タイプとして「mysql」を選択します。ホスト名/IPアドレス、ポート、ユーザー名、およびパスワードを入力します。 (オプション)Advanced Optionsを構成します。接続を保存して、接続名を入力します。

データベースから直接削除された行を直接回復することは、バックアップまたはトランザクションロールバックメカニズムがない限り、通常不可能です。キーポイント:トランザクションロールバック:トランザクションがデータの回復にコミットする前にロールバックを実行します。バックアップ:データベースの定期的なバックアップを使用して、データをすばやく復元できます。データベーススナップショット:データベースの読み取り専用コピーを作成し、データが誤って削除された後にデータを復元できます。削除ステートメントを使用して注意してください:誤って削除されないように条件を慎重に確認してください。 WHERE句を使用します:削除するデータを明示的に指定します。テスト環境を使用:削除操作を実行する前にテストします。

Redisは、単一のスレッドアーキテクチャを使用して、高性能、シンプルさ、一貫性を提供します。 I/Oマルチプレックス、イベントループ、ノンブロッキングI/O、共有メモリを使用して同時性を向上させますが、並行性の制限、単一の障害、および書き込み集約型のワークロードには適していません。
