MySQL 8.0 リファレンスマニュアル


13.7.7.15 SHOW ENGINE ステートメント

SHOW ENGINE engine_name {STATUS | MUTEX}

SHOW ENGINE は、ストレージエンジンに関する動作情報を表示します。 これには PROCESS 権限が必要です。 このステートメントは、次のバリアントがあります。

SHOW ENGINE INNODB STATUS
SHOW ENGINE INNODB MUTEX
SHOW ENGINE PERFORMANCE_SCHEMA STATUS

SHOW ENGINE INNODB STATUS は、InnoDB ストレージエンジンの状態に関する InnoDB 標準モニターからの広範囲にわたる情報を表示します。 InnoDB の処理に関する情報を提供する標準モニターやその他の InnoDB モニターについては、セクション15.17「InnoDB モニター」を参照してください。

SHOW ENGINE INNODB MUTEX は、InnoDB 相互排他ロックおよび読み書きロックの統計を表示します。

注記

InnoDB mutex および rwlocks は、Performance Schema テーブルを使用してモニターすることもできます。 セクション15.16.2「パフォーマンススキーマを使用した InnoDB Mutex 待機のモニタリング」を参照してください。

相互排他統計収集は、次のオプションを使用して動的に構成されます:

  • mutex 統計の収集を有効にするには、次のコマンドを実行します:

    SET GLOBAL innodb_monitor_enable='latch';
  • mutex 統計をリセットするには、次のコマンドを実行します:

    SET GLOBAL innodb_monitor_reset='latch';
  • mutex 統計の収集を無効にするには、次のコマンドを実行します:

    SET GLOBAL innodb_monitor_disable='latch';

SHOW ENGINE INNODB MUTEX の mutex 統計の収集は、innodb_monitor_enable='all'を設定して有効にすることも、innodb_monitor_disable='all'を設定して無効にすることもできます。

SHOW ENGINE INNODB MUTEX 出力には、次のカラムがあります:

  • Type

    常に InnoDB です。

  • Name

    mutex の場合、Name フィールドには mutex 名のみがレポートされます。 rwlocks の場合、Name フィールドは rwlock が実装されているソースファイルと rwlock が作成されたファイル内の行番号を報告します。 この行番号は、使用している MySQL のバージョンに固有です。

  • Status

    相互排他ロックのステータス。 このフィールドには、スピン、待機、およびコールの数が報告されます。 InnoDB の外部で実装される低レベルのオペレーティングシステム相互排他ロックの統計はレポートされません。

    • spins はスピンの数を示します。

    • waits は相互排他ロック待機の数を示します。

    • calls は、mutex がリクエストされた回数を示します。

バッファプールが大きいシステムでは出力量が過度に多いため、SHOW ENGINE INNODB MUTEX では各バッファプールブロックの mutex および rw ロックはリストされません。 ただし、SHOW ENGINE INNODB MUTEX はバッファープールブロック相互排他ロックおよび rw-lock の集約 BUF_BLOCK_MUTEX スピン、待機、および呼び出しの値を出力します。 SHOW ENGINE INNODB MUTEX はまた、待機されなかった (os_waits=0) 相互排他ロックまたは読み書きロックも一覧表示しません。 そのため、SHOW ENGINE INNODB MUTEX は、OS レベルの待機を少なくとも 1 回は発生させた、バッファープールの外部の相互排他ロックと読み書きロックに関する情報のみを表示します。

SHOW ENGINE PERFORMANCE_SCHEMA STATUS を使用して、パフォーマンススキーマコードの内部操作を検査します。

mysql> SHOW ENGINE PERFORMANCE_SCHEMA STATUS\G
...
*************************** 3. row ***************************
  Type: performance_schema
  Name: events_waits_history.size
Status: 76
*************************** 4. row ***************************
  Type: performance_schema
  Name: events_waits_history.count
Status: 10000
*************************** 5. row ***************************
  Type: performance_schema
  Name: events_waits_history.memory
Status: 760000
...
*************************** 57. row ***************************
  Type: performance_schema
  Name: performance_schema.memory
Status: 26459600
...

このステートメントは、さまざまなパフォーマンススキーマオプションがメモリー要件に与える効果について、DBA が理解できるようにすることを目的としています。

Name 値は、それぞれ、内部バッファーとバッファー属性を指定する 2 つの部分で構成されます。 バッファー名は、次のように解釈します。

  • テーブルとして公開されていない内部バッファーは括弧内に指定されます。 例: (pfs_cond_class).size(pfs_mutex_class).memory

  • performance_schema データベース内のテーブルとして公開されている内部バッファーは、そのテーブル名で (括弧なしで) 指定されます。 例: events_waits_history.sizemutex_instances.count

  • 全体としてのパフォーマンススキーマに適用される値は、performance_schema で始まります。 例: performance_schema.memory

バッファー属性には、次の意味があります。

  • size は、テーブル内の行のサイズなど、実装で使用される内部レコードのサイズです。size の値は変更できません。

  • count は、テーブルの行数などの内部レコードの数です。count の値は、パフォーマンススキーマの構成オプションを使用して変更できます。

  • テーブルの場合、tbl_name.memorysize および count の製品です。 全体としてのパフォーマンススキーマの場合、performance_schema.memory は、使用されているすべてのメモリーの合計 (ほかのすべての memory 値の合計) です。

場合によっては、パフォーマンススキーマの構成パラメータと SHOW ENGINE 値の間に直接の関係が存在します。 たとえば、events_waits_history_long.countperformance_schema_events_waits_history_long_size に対応します。 その他の場合、この関係はより複雑です。 たとえば、events_waits_history.count は、performance_schema_events_waits_history_size (スレッド当たりの行数) に performance_schema_max_thread_instances (スレッド数) を掛けた値に対応します。

SHOW ENGINE NDB STATUS.  サーバーで NDB ストレージエンジンが有効になっている場合、SHOW ENGINE NDB STATUS は、接続されているデータノードの数、クラスタの接続文字列、クラスタバイナリログのエポックや、クラスタに接続したときに MySQL Server によって作成されたさまざまなクラスタ API オブジェクトの数などのクラスタステータス情報を表示します。 このステートメントからのサンプル出力を次に示します。

mysql> SHOW ENGINE NDB STATUS;
+------------+-----------------------+--------------------------------------------------+
| Type       | Name                  | Status                                           |
+------------+-----------------------+--------------------------------------------------+
| ndbcluster | connection            | cluster_node_id=7,
  connected_host=198.51.100.103, connected_port=1186, number_of_data_nodes=4,
  number_of_ready_data_nodes=3, connect_count=0                                         |
| ndbcluster | NdbTransaction        | created=6, free=0, sizeof=212                    |
| ndbcluster | NdbOperation          | created=8, free=8, sizeof=660                    |
| ndbcluster | NdbIndexScanOperation | created=1, free=1, sizeof=744                    |
| ndbcluster | NdbIndexOperation     | created=0, free=0, sizeof=664                    |
| ndbcluster | NdbRecAttr            | created=1285, free=1285, sizeof=60               |
| ndbcluster | NdbApiSignal          | created=16, free=16, sizeof=136                  |
| ndbcluster | NdbLabel              | created=0, free=0, sizeof=196                    |
| ndbcluster | NdbBranch             | created=0, free=0, sizeof=24                     |
| ndbcluster | NdbSubroutine         | created=0, free=0, sizeof=68                     |
| ndbcluster | NdbCall               | created=0, free=0, sizeof=16                     |
| ndbcluster | NdbBlob               | created=1, free=1, sizeof=264                    |
| ndbcluster | NdbReceiver           | created=4, free=0, sizeof=68                     |
| ndbcluster | binlog                | latest_epoch=155467, latest_trans_epoch=148126,
  latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0,
  latest_applied_binlog_epoch=0                                                         |
+------------+-----------------------+--------------------------------------------------+

これらの各行の Status カラムには、クラスタへの MySQL サーバー接続とクラスタバイナリログステータスに関する情報がそれぞれ表示されます。 Status 情報は、カンマで区切られた一連の名前と値のペアの形式をしています。

connection の行の Status カラムには、次のテーブルで説明する名前と値のペアが含まれます。

名前
cluster_node_id クラスタ内の MySQL サーバーのノード ID
connected_host MySQL サーバーが接続されているクラスタ管理サーバーのホスト名または IP アドレス
connected_port MySQL サーバーが管理サーバー (connected_host) に接続するために使用するポート
number_of_data_nodes クラスタのために構成されているデータノードの数 (つまり、そのクラスタの config.ini ファイル内の [ndbd] セクションの数)
number_of_ready_data_nodes 実際に実行されているクラスタ内のデータノードの数
connect_count この mysqld がクラスタデータノードに接続または再接続した回数

binlog 行の Status カラムには、NDB Cluster レプリケーションに関する情報が含まれています。 そこに含まれている名前と値のペアについて、次の表で説明します。

名前
latest_epoch この MySQL サーバー上で直近で実行された最新のエポック (つまり、このサーバー上で実行された最新のトランザクションのシーケンス番号)
latest_trans_epoch クラスタのデータノードによって処理された最新のエポック
latest_received_binlog_epoch バイナリログスレッドによって受信された最新のエポック
latest_handled_binlog_epoch (バイナリログへの書き込みのために) バイナリログスレッドによって処理された最新のエポック
latest_applied_binlog_epoch 実際にバイナリログに書き込まれた最新のエポック

詳細は、セクション23.6「NDB Cluster レプリケーション」を参照してください。

クラスタのモニタリングにもっとも役立つ可能性のある SHOW ENGINE NDB STATUS の出力の残りの行を、次に Name で一覧表示します。

  • NdbTransaction: 作成された NdbTransaction オブジェクトの数とサイズ。 NdbTransaction は、NDB テーブル上で (CREATE TABLEALTER TABLE などの) テーブルスキーマ操作が実行されるたびに作成されます。

  • NdbOperation: 作成された NdbOperation オブジェクトの数とサイズ。

  • NdbIndexScanOperation: 作成された NdbIndexScanOperation オブジェクトの数とサイズ。

  • NdbIndexOperation: 作成された NdbIndexOperation オブジェクトの数とサイズ。

  • NdbRecAttr: 作成された NdbRecAttr オブジェクトの数とサイズ。 一般に、これらのいずれかは、SQL ノードによってデータ操作ステートメントが実行されるたびに作成されます。

  • NdbBlob: 作成された NdbBlob オブジェクトの数とサイズ。 NdbBlob は、NDB テーブル内の BLOB カラムに関連する新しい操作が実行されるたびに作成されます。

  • NdbReceiver: 作成されたすべての NdbReceiver オブジェクトの数とサイズ。 created カラム内の数は、MySQL サーバーが接続されているクラスタ内のデータノードの数と同じです。

注記

現在のセッション中に、このステートメントが実行されている SQL ノードにアクセスしている MySQL クライアントによって NDB テーブルに関連する操作が実行されていない場合、SHOW ENGINE NDB STATUS は空の結果を返します。


関連キーワード:  ステートメント, CREATE, TABLE, STATUS, DROP, テーブル, サーバー, クラスタ, ndbcluster, 作成