MySQL でプロファイルを使用する方法のチュートリアル

MySQL でプロファイルを使用する方法のチュートリアル

プロフィールとは何ですか?

特定の SQL のパフォーマンスを分析したい場合に使用できます。

プロファイリングは MySQL 5.0.3 以降でのみ利用可能です。

プロファイルを開始すると、誤った記述を含むすべてのクエリが記録されます。

セッションを閉じるか、profiling=0 を設定してセッションを閉じます。 (profiling_history_size パラメータを 0 に設定すると、MySQL プロファイリングもオフになります。)

このツールを使用すると、SQL 実行ステータス、システム ロックやテーブル ロックに費やされた時間などを照会できます。

ステートメントの I/O 消費量と CPU 消費量を見つけることは非常に重要です。 (SQL ステートメントの実行によって消費される 2 つの最大のリソースは IO と CPU です)

--MySQL 5.7以降、プロファイル情報は徐々に廃止されます。MySQLではパフォーマンススキーマの使用を推奨しています。

MySQL公式サイトの定義

SHOW PROFILE および SHOW PROFILES ステートメントは、現在のセッション中に実行されたステートメントのリソース使用量を示すプロファイリング情報を表示します。

簡単に言えば、現在のセッション リソースの消費量です。

注意: show profile と show Profiles は推奨されておらず、MySQL の以降のバージョンでは削除される可能性があります。公式 Web サイトではパフォーマンス スキーマの使用を推奨しています。

使い方

このプロファイルはデフォルトで無効になっており、実稼働環境に推奨されます。

現在の環境のプロファイル設定を表示する

mysql> '%profiling%' のような変数を表示します。
+------------------------+-------+
| 変数名 | 値 |
+------------------------+-------+
| プロファイリングあり | はい |
| プロファイリング | オフ |
| プロファイリング履歴のサイズ | 15 |
+------------------------+-------+

profiling off はプロファイリングがオフになっていることを意味し、profiling_history_size 15 は最新の 15 個の SQL ステートメントのリソース消費を保存することを意味します。

プロファイル機能を有効にするには、次のコマンドを使用します。

グローバルプロファイリングを 1 に設定します。

次のコマンドを使用できます

プロフィールを表示します。

最新の 15 個の SQL ステートメントを表示します。

特定の項目の具体的な状況を表示する場合の SQL 形式は次のようになります。

プロフィールを表示 [タイプ [, タイプ] ... ]
 [クエリn]
 [LIMIT row_count [OFFSET offset]]

タイプ: {
 全て
 | ブロックIO
 | コンテキストスイッチ
 | CPU
 |IPC
 | メモリ
 | ページフォールト
 | ソース
 | スワップ
}

公式サイトでは、typeの各フィールドについて以下のように説明されています。

ALL すべての情報を表示します

BLOCK IOはブロック入力と出力操作のカウントを表示します。

CONTEXT SWITCHESは、自発的および非自発的なコンテキストスイッチの数を表示します。

CPUはユーザーとシステムのCPU使用時間を表示します

IPCは送受信されたメッセージの数を表示します

MEMORYは現在実装されていません

PAGE FAULTSはメジャーページフォールトとマイナーページフォールトの数を表示します。

SOURCEは、ソースコード内の関数名と、関数が存在するファイルの名前と行番号を表示します。

SWAPSはスワップカウントを表示します

プロファイリングはセッションごとに有効です。セッションが終了すると、現在のプロファイリング情報は失われます。

ユースケース

mysql> プロファイルを表示します。
+----------+-------------+----------------------------+
| Query_ID | 期間 | クエリ |
+----------+-------------+----------------------------+
| 1 | 0.00060275 | 顧客から*を選択 |
| 2 | 0.00222450 | テーブルを表示 |
| 3 | 0.00567425 | オフィスから*を選択 |
| 4 | 0.0005205​​0 | テーブルを表示 |
| 5 | 0.01123300 | 支払いから*を選択 |
| 6 | 0.00111675 | テーブルを表示 |
| 7 | 0.02049625 | 製品ラインから*を選択 |
+----------+-------------+----------------------------+

SQL 実行のトラブルシューティングを行う場合、またはどの SQL の実行が非常に遅いか、どこで遅いかを調べる場合、プロファイルは非常に便利なツールです。

SQL文がどこで使われているかを表示します

mysql> クエリ 7 のプロファイルを表示します。
+----------------------+----------+
| ステータス | 期間 |
+----------------------+----------+
| 開始 | 0.000043 |
| 権限を確認中 | 0.000005 |
| オープニングテーブル | 0.014552 |
| 初期化 | 0.000025 |
| システムロック | 0.000009 |
| 最適化中 | 0.000004 |
| 統計 | 0.000011 |
| 準備中 | 0.000010 |
| 実行中 | 0.000003 |
| データ送信中 | 0.005653 |
| 終了 | 0.000010 |
| クエリ終了 | 0.000009 |
| テーブルのクローズ | 0.000020 |
| アイテムを解放 | 0.000121 |
| クリーンアップ | 0.000023 |
+----------------------+----------+

情報が一目でわかるので、SQL 実行の概要を把握できます。

要約する

上記はこの記事の全内容です。この記事の内容が皆さんの勉強や仕事に一定の参考学習価値を持つことを願っています。ご質問があれば、メッセージを残してコミュニケーションしてください。123WORDPRESS.COM を応援していただきありがとうございます。

以下もご興味があるかもしれません:
  • MySQL パフォーマンス分析ツール プロファイルの使用チュートリアル
  • SHOW PROFILE コマンドを使用して MySQL のパフォーマンスを分析する方法
  • MySQL でのプロファイル クエリ パフォーマンスの使用に関するチュートリアル
  • プロファイルを使用して遅い SQL を分析する MySQL の詳細な説明 (グループ左結合はサブクエリよりも効率的です)

<<:  Vue Element UI カスタム説明リストコンポーネント

>>:  Linux サーバーに SSH パスワードなしでログインする方法

推薦する

MySQL における in と exists の違いの詳細な説明

1. 事前に準備する便宜上、ここで 2 つのテーブルを作成し、そこにいくつかのデータを追加します。果...

vue-cli でレスポンシブ レイアウトを実装する方法

フロントエンド開発を行うと、PCとモバイル端末の適応に必然的に直面することになります。このような問題...

Nodejsはgitee実装コードに自動的に同期するドキュメント同期ツールを作成します

本来の意図このツールを作った理由は、コンピューターを使用しているときにいつでも毎日の仕事や生活を記録...

マウスのドラッグ効果を実現するJavaScript

この記事では、マウスドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...

CentOS6.9 での MySQL 5.7.17 のインストールと設定のチュートリアル

CentOS6.9はMysql5.7をインストールします。参考までに、詳細は次のとおりです。 1. ...

Vueは秒殺しのカウントダウンコンポーネントを実装する

この記事では、2番目のキルカウントダウンコンポーネントを実装するためのVueの具体的なコードを参考ま...

MySQL のロックとトランザクションの簡単な分析

MySQL 自体はファイルシステムに基づいて開発されましたが、ロックの存在が異なります。データベース...

JS配列の一般的な方法とテクニックを学び、マスターになりましょう

目次splice() メソッドjoin() メソッド逆() メソッドevery() メソッド削減()...

仮想マシン VMware に Kali Linux をインストールする最新の超詳細なグラフィック チュートリアル

目次1. システムイメージファイルをダウンロードする2. 新しい仮想マシンを作成する3. Kali ...

Vue-Element-Adminはログインジャンプを実現するために独自のインターフェースを統合しています

1. まずリクエスト設定ファイルを見て、axios.createメソッドを見てください。baseUR...

UrlRewriter のキャッシュ問題と関連する一連の調査

ウェブサイト機能を開発する場合、セッション キャッシュを時間内にクリアできません。一連の探索が始まり...

WEB2.0の片手ルール

<br />前回のCSSに関する記事は、多くの人にあまり理解されませんでした。そのため、...

Alibaba Cloud SSHリモート接続がしばらくすると切断される問題を解決

問題の再現Alibaba Cloud Server は、Finalshell リモート接続を使用して...

Vueの子コンポーネントが親コンポーネントのメソッドを呼び出す場合の詳細な説明

1. 子コンポーネントのthis.$parent.eventを通じて親コンポーネントメソッドを直接呼...

Docker で Redis センチネル モードを構成する方法 (複数のサーバー上)

目次序文状態DockerをインストールするRedisのマスターノードとスレーブノードを構成する序文以...