SHOW ENGINE engine_name
{STATUS | MUTEX}
SHOW ENGINE
は、ストレージエンジンに関する動作情報を表示します。現在次のステートメントがサポートされています。
SHOW ENGINE INNODB STATUS SHOW ENGINE INNODB MUTEX SHOW ENGINE {NDB | NDBCLUSTER} STATUS
古い (現在推奨されていない)
同義語として、SHOW
ENGINE INNODB STATUS
に対する
SHOW INNODB
STATUS
、および
SHOW
ENGINE INNODB MUTEX
に対する
SHOW MUTEX STATUS
があります。
MySQL 5.0
では、SHOW
ENGINE INNODB MUTEX
は
SHOW MUTEX STATUS
として呼び出されます。後者のステートメントは似たような情報を表示しますが、それは少し異なる出力形式になります。
SHOW
ENGINE BDB LOGS
は以前は
BDB
ログファイルのステータス情報を表示しました。MySQL
5.1.12
の時点では、BDB
ストレージエンジンはサポートされていないため、このステートメントによって警告が生成されます。
SHOW
ENGINE INNODB STATUS
は、InnoDB
ストレージエンジンの状態に関する、標準の
InnoDB
モニターからの広範囲の情報を表示します。InnoDB
の処理に関する情報を提供する標準のモニターやその他の
InnoDB
モニターについては、項9.13.2. 「SHOW ENGINE
INNODB STATUS
と
InnoDB
モニター」
を参照してください。
SHOW
ENGINE INNODB MUTEX
は
InnoDB
相互排他ロック統計を表示します。MySQL 5.1.2
から 5.1.14
までは、このステートメントは次の出力フィールドを表示します。
型
常に InnoDB
です。
名前
それがインプリメントされた相互排他ロック名とソースファイル。例:&pool->mutex:mem0pool.c
相互排他ロック名はその目的を指示します。たとえば、log_sys
相互排他ロックは
InnoDB
ログサブシステムに利用され、ログ活動がどれほど集中しているのかを指示します。buf_pool
相互排他ロックは
InnoDB
バッファープールを保護します。
ステータス
相互排他ロックステータスフィールドはいくつかの値を含んでいます。
count
は、相互排他ロックが何回要求されたかを指示します。
spin_waits
はスピンロックが何回起動しなければいけなかったかを指示します。
spin_rounds
はスピンロックラウンドの数を指示します。(spin_rounds
を spin_waits
で割ると、平均ラウンド数が得られます。)
os_waits
は OS
の待機数を指示します。これは、スピンロックが機能しなかったときに起こります。(相互排他ロックはスピンロックの最中にロックされておらず、OS
に従い、待つ必要がありました)。
os_yields
はスレッドが相互排他ロックをロックしようと試みて、そのタイムスライスを放棄し、OS
に従う回数を指示します。(別のスレッドが起動することを許可すると、相互排他ロックをロックするためにそれを自由にするという仮定の下)。
os_wait_times
は、もし
timed_mutexes
システム変数が 1 であれば
(ON
)、OS
待機にかかった時間を (分で)
指示します。timed_mutexes
が 0 (OFF
)
の場合、タイミングは無効になっているため、os_wait_times
は 0
です。timed_mutexes
は、デフォルトではオフです。
MySQL 5.1.15 からは、このステートメントは次の出力フィールドを表示します。
型
常に InnoDB
です。
名前
相互排他ロックが実装されているソースファイルと、そのファイル内の相互排他ロックが作成されている行番号。この行番号は、MySQL のバージョンに応じて変わる場合があります。
ステータス
このフィールドには、前に説明したのと同じ値
(count
、spin_waits
、spin_rounds
、os_waits
、os_yields
、os_wait_times
)
が表示されますが、これは MySQL
のコンパイル時に (たとえば、MySQL
のソースツリーの
InnoDB
の部分にある
include/univ.h
で)
UNIV_DEBUG
が定義されている場合だけです。UNIV_DEBUG
が定義されていない場合、このステートメントは
os_waits
値のみを表示します。 後者の
(UNIV_DEBUG
が定義されていない)
場合、出力の基になる情報は、通常の相互排他ロックと
(複数のリーダーまたは単一のライターが許可される)
読み書きロックを保護する相互排他ロックを区別するには不足しています。その結果、出力では、同じ相互排他ロックに対して複数の行が表示される可能性があります。
このステートメントからの情報は、システムの問題を診断するのに利用することができます。たとえば、spin_waits
と spin_rounds
の大きい値は拡張性の問題を指示するでしょう。
サーバーで
NDBCLUSTER
ストレージエンジンが有効になっている場合、SHOW
ENGINE NDB STATUS
は、接続されているデータノードの数、クラスタの接続文字列、クラスタのビンログエポックなどのクラスタのステータス情報のほか、クラスタに接続されたときに
MySQL サーバーによって作成されたさまざまな
Cluster API
オブジェクトの数を表示します。このステートメントからのサンプル出力を次に示します。
mysql> SHOW ENGINE NDB STATUS;
+------------+-----------------------+--------------------------------------------------+
| Type | Name | Status |
+------------+-----------------------+--------------------------------------------------+
| ndbcluster | connection | cluster_node_id=7,
connected_host=192.168.0.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 |
+------------+-----------------------+--------------------------------------------------+
Name
カラムに
connection
と
binlog
を含む行は、MySQL 5.1
でこのステートメントの出力に追加されました。これらの各行内の
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
カラムには、MySQL Cluster
レプリケーションに関連した情報が含まれています。そこに含まれている名前と値のペアについて、次の表で説明します。
名前 | 値 |
latest_epoch |
この MySQL サーバー上でもっとも最近に実行された最新のエポック (つまり、このサーバー上で実行された最新のトランザクションのシーケンス番号) |
latest_trans_epoch |
クラスタのデータノードによって処理された最新のエポック |
latest_received_binlog_epoch |
ビンログスレッドによって受信された最新のエポック |
latest_handled_binlog_epoch |
(ビンログへの書き込みのために) ビンログスレッドによって処理された最新のエポック |
latest_applied_binlog_epoch |
ビンログに実際に書き込まれた最新のエポック |
詳細については、MySQL Cluster Replication を参照してください。
クラスタの監視にもっとも役立つ可能性のある
SHOW
ENGINE NDB STATUS
の出力の残りの行を、次に
Name
で一覧表示します。
NdbTransaction
:
作成された
NdbTransaction
オブジェクトの数とサイズ。NdbTransaction
は、NDB
テーブル上で
(CREATE
TABLE
や
ALTER 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
は空の結果を返します。