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 パスワードなしでログインする方法

推薦する

Reactは適応性の高い仮想リストを実装する

目次変換前:変換後: 0x0の基本0x1 「固定高さ」の仮想リストを実装する原理:最適化: 0x2 ...

WiFi 開発 | WiFi ワイヤレス テクノロジーの紹介

目次WiFiワイヤレステクノロジーの紹介1. WiFiテクノロジーの概要2. ESP8266の紹介W...

Web プロジェクト開発 JS 機能の手ぶれ補正とスロットリングのサンプル コード

目次安定導入手ぶれ補正シーン1(マウスの動き込み)手ぶれ補正シーン2(キーボードのキー)関数のスロッ...

2048 ゲームを実装するためのネイティブ js

2048ミニゲーム、参考までに具体的な内容は以下のとおりですまず、2048ゲームは16のグリッドか...

国内SNSのホームページを比較・分析して得た経験をみんなで共有(写真)

この記事では、ソーシャル ウェブサイトのホームページを比較分析することで洞察を得て、ソーシャル ウェ...

docker-compose を使用して MySQL を実行する方法

ディレクトリ構造 。 │ .env │ docker-compose.yml │ └─mysql ├...

JavaScript は div マウス ドラッグ効果を実装します

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

UbuntuでOpenCVをコンパイルしてインストールする方法

opencv2 の簡単なインストール: conda インストール --channel https:/...

nginxを使用して取得したIPアドレスが127.0.0.1である問題を解決する

IPツールを取得 lombok.extern.slf4j.Slf4j をインポートします。 org....

今日と昨日の 0:00 タイムスタンプを取得する MySQL の例

以下のように表示されます。昨日: UNIX_TIMESTAMP(CAST(SYSDATE() AS ...

MySQL が InnoDB テーブルが独立したテーブルスペースか共有テーブルスペースかを判断する方法の詳細な説明

序文InnoDB はデータをテーブルスペースに保存します。デフォルト設定では、初期サイズが 10 M...

JSはプログレスバーをドラッグして要素の透明度を変更することを実装しています

今日ご紹介したいのは、ネイティブ JS を使用してプログレス バーをドラッグし、要素の透明度を変更す...