Ndb
オブジェクトによって実行されるアクションや、これらのオブジェクトに影響を与えるアクションに関する多くのタイプの統計カウンタを使用できます。 このようなアクションには、トランザクションの開始と終了 (または中止)、主キーおよび一意のキーの操作、テーブルスキャン、範囲スキャン、およびプルーニングスキャン、さまざまな操作が完了するまで待機している間にブロックされたスレッド、NDBCLUSTER
によって送受信されたデータおよびイベントが含まれます。 NDB API 呼び出しが行われるか、データノードがデータを送受信するたびに、NDB カーネル内でカウンタが増分されます。mysqld は、これらのカウンタをシステムステータス変数として公開します。それらの値は、SHOW STATUS
の出力で読み取るか、パフォーマンススキーマ session_status
または global_status
テーブルをクエリーすることによって読み取ることができます。 NDB
テーブルを操作するステートメントの前後で値を比較すると、API レベルで実行された対応するアクション、およびステートメントを実行するコストを確認できます。
次の SHOW STATUS
ステートメントを使用すると、これらのステータス変数をすべて一覧表示できます。
mysql> SHOW STATUS LIKE 'ndb_api%';
+--------------------------------------------+----------+
| Variable_name | Value |
+--------------------------------------------+----------+
| Ndb_api_wait_exec_complete_count_session | 0 |
| Ndb_api_wait_scan_result_count_session | 0 |
| Ndb_api_wait_meta_request_count_session | 0 |
| Ndb_api_wait_nanos_count_session | 0 |
| Ndb_api_bytes_sent_count_session | 0 |
| Ndb_api_bytes_received_count_session | 0 |
| Ndb_api_trans_start_count_session | 0 |
| Ndb_api_trans_commit_count_session | 0 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 0 |
| Ndb_api_pk_op_count_session | 0 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 0 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 0 |
| Ndb_api_read_row_count_session | 0 |
| Ndb_api_trans_local_read_row_count_session | 0 |
| Ndb_api_event_data_count_injector | 0 |
| Ndb_api_event_nondata_count_injector | 0 |
| Ndb_api_event_bytes_count_injector | 0 |
| Ndb_api_wait_exec_complete_count_slave | 0 |
| Ndb_api_wait_scan_result_count_slave | 0 |
| Ndb_api_wait_meta_request_count_slave | 0 |
| Ndb_api_wait_nanos_count_slave | 0 |
| Ndb_api_bytes_sent_count_slave | 0 |
| Ndb_api_bytes_received_count_slave | 0 |
| Ndb_api_trans_start_count_slave | 0 |
| Ndb_api_trans_commit_count_slave | 0 |
| Ndb_api_trans_abort_count_slave | 0 |
| Ndb_api_trans_close_count_slave | 0 |
| Ndb_api_pk_op_count_slave | 0 |
| Ndb_api_uk_op_count_slave | 0 |
| Ndb_api_table_scan_count_slave | 0 |
| Ndb_api_range_scan_count_slave | 0 |
| Ndb_api_pruned_scan_count_slave | 0 |
| Ndb_api_scan_batch_count_slave | 0 |
| Ndb_api_read_row_count_slave | 0 |
| Ndb_api_trans_local_read_row_count_slave | 0 |
| Ndb_api_wait_exec_complete_count | 2 |
| Ndb_api_wait_scan_result_count | 3 |
| Ndb_api_wait_meta_request_count | 27 |
| Ndb_api_wait_nanos_count | 45612023 |
| Ndb_api_bytes_sent_count | 992 |
| Ndb_api_bytes_received_count | 9640 |
| Ndb_api_trans_start_count | 2 |
| Ndb_api_trans_commit_count | 1 |
| Ndb_api_trans_abort_count | 0 |
| Ndb_api_trans_close_count | 2 |
| Ndb_api_pk_op_count | 1 |
| Ndb_api_uk_op_count | 0 |
| Ndb_api_table_scan_count | 1 |
| Ndb_api_range_scan_count | 0 |
| Ndb_api_pruned_scan_count | 0 |
| Ndb_api_scan_batch_count | 0 |
| Ndb_api_read_row_count | 1 |
| Ndb_api_trans_local_read_row_count | 1 |
| Ndb_api_event_data_count | 0 |
| Ndb_api_event_nondata_count | 0 |
| Ndb_api_event_bytes_count | 0 |
+--------------------------------------------+----------+
60 rows in set (0.02 sec)
これらのステータス変数は、次に示すように、パフォーマンススキーマ session_status
および global_status
テーブルからも使用できます:
mysql> SELECT * FROM performance_schema.session_status
-> WHERE VARIABLE_NAME LIKE 'ndb_api%';
+--------------------------------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+--------------------------------------------+----------------+
| NDB_API_WAIT_EXEC_COMPLETE_COUNT_SESSION | 2 |
| NDB_API_WAIT_SCAN_RESULT_COUNT_SESSION | 0 |
| NDB_API_WAIT_META_REQUEST_COUNT_SESSION | 1 |
| NDB_API_WAIT_NANOS_COUNT_SESSION | 8144375 |
| NDB_API_BYTES_SENT_COUNT_SESSION | 68 |
| NDB_API_BYTES_RECEIVED_COUNT_SESSION | 84 |
| NDB_API_TRANS_START_COUNT_SESSION | 1 |
| NDB_API_TRANS_COMMIT_COUNT_SESSION | 1 |
| NDB_API_TRANS_ABORT_COUNT_SESSION | 0 |
| NDB_API_TRANS_CLOSE_COUNT_SESSION | 1 |
| NDB_API_PK_OP_COUNT_SESSION | 1 |
| NDB_API_UK_OP_COUNT_SESSION | 0 |
| NDB_API_TABLE_SCAN_COUNT_SESSION | 0 |
| NDB_API_RANGE_SCAN_COUNT_SESSION | 0 |
| NDB_API_PRUNED_SCAN_COUNT_SESSION | 0 |
| NDB_API_SCAN_BATCH_COUNT_SESSION | 0 |
| NDB_API_READ_ROW_COUNT_SESSION | 1 |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT_SESSION | 1 |
| NDB_API_EVENT_DATA_COUNT_INJECTOR | 0 |
| NDB_API_EVENT_NONDATA_COUNT_INJECTOR | 0 |
| NDB_API_EVENT_BYTES_COUNT_INJECTOR | 0 |
| NDB_API_WAIT_EXEC_COMPLETE_COUNT_SLAVE | 0 |
| NDB_API_WAIT_SCAN_RESULT_COUNT_SLAVE | 0 |
| NDB_API_WAIT_META_REQUEST_COUNT_SLAVE | 0 |
| NDB_API_WAIT_NANOS_COUNT_SLAVE | 0 |
| NDB_API_BYTES_SENT_COUNT_SLAVE | 0 |
| NDB_API_BYTES_RECEIVED_COUNT_SLAVE | 0 |
| NDB_API_TRANS_START_COUNT_SLAVE | 0 |
| NDB_API_TRANS_COMMIT_COUNT_SLAVE | 0 |
| NDB_API_TRANS_ABORT_COUNT_SLAVE | 0 |
| NDB_API_TRANS_CLOSE_COUNT_SLAVE | 0 |
| NDB_API_PK_OP_COUNT_SLAVE | 0 |
| NDB_API_UK_OP_COUNT_SLAVE | 0 |
| NDB_API_TABLE_SCAN_COUNT_SLAVE | 0 |
| NDB_API_RANGE_SCAN_COUNT_SLAVE | 0 |
| NDB_API_PRUNED_SCAN_COUNT_SLAVE | 0 |
| NDB_API_SCAN_BATCH_COUNT_SLAVE | 0 |
| NDB_API_READ_ROW_COUNT_SLAVE | 0 |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT_SLAVE | 0 |
| NDB_API_WAIT_EXEC_COMPLETE_COUNT | 4 |
| NDB_API_WAIT_SCAN_RESULT_COUNT | 3 |
| NDB_API_WAIT_META_REQUEST_COUNT | 28 |
| NDB_API_WAIT_NANOS_COUNT | 53756398 |
| NDB_API_BYTES_SENT_COUNT | 1060 |
| NDB_API_BYTES_RECEIVED_COUNT | 9724 |
| NDB_API_TRANS_START_COUNT | 3 |
| NDB_API_TRANS_COMMIT_COUNT | 2 |
| NDB_API_TRANS_ABORT_COUNT | 0 |
| NDB_API_TRANS_CLOSE_COUNT | 3 |
| NDB_API_PK_OP_COUNT | 2 |
| NDB_API_UK_OP_COUNT | 0 |
| NDB_API_TABLE_SCAN_COUNT | 1 |
| NDB_API_RANGE_SCAN_COUNT | 0 |
| NDB_API_PRUNED_SCAN_COUNT | 0 |
| NDB_API_SCAN_BATCH_COUNT | 0 |
| NDB_API_READ_ROW_COUNT | 2 |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT | 2 |
| NDB_API_EVENT_DATA_COUNT | 0 |
| NDB_API_EVENT_NONDATA_COUNT | 0 |
| NDB_API_EVENT_BYTES_COUNT | 0 |
+--------------------------------------------+----------------+
60 rows in set (0.00 sec)
mysql> SELECT * FROM performance_schema.global_status
-> WHERE VARIABLE_NAME LIKE 'ndb_api%';
+--------------------------------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+--------------------------------------------+----------------+
| NDB_API_WAIT_EXEC_COMPLETE_COUNT_SESSION | 2 |
| NDB_API_WAIT_SCAN_RESULT_COUNT_SESSION | 0 |
| NDB_API_WAIT_META_REQUEST_COUNT_SESSION | 1 |
| NDB_API_WAIT_NANOS_COUNT_SESSION | 8144375 |
| NDB_API_BYTES_SENT_COUNT_SESSION | 68 |
| NDB_API_BYTES_RECEIVED_COUNT_SESSION | 84 |
| NDB_API_TRANS_START_COUNT_SESSION | 1 |
| NDB_API_TRANS_COMMIT_COUNT_SESSION | 1 |
| NDB_API_TRANS_ABORT_COUNT_SESSION | 0 |
| NDB_API_TRANS_CLOSE_COUNT_SESSION | 1 |
| NDB_API_PK_OP_COUNT_SESSION | 1 |
| NDB_API_UK_OP_COUNT_SESSION | 0 |
| NDB_API_TABLE_SCAN_COUNT_SESSION | 0 |
| NDB_API_RANGE_SCAN_COUNT_SESSION | 0 |
| NDB_API_PRUNED_SCAN_COUNT_SESSION | 0 |
| NDB_API_SCAN_BATCH_COUNT_SESSION | 0 |
| NDB_API_READ_ROW_COUNT_SESSION | 1 |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT_SESSION | 1 |
| NDB_API_EVENT_DATA_COUNT_INJECTOR | 0 |
| NDB_API_EVENT_NONDATA_COUNT_INJECTOR | 0 |
| NDB_API_EVENT_BYTES_COUNT_INJECTOR | 0 |
| NDB_API_WAIT_EXEC_COMPLETE_COUNT_SLAVE | 0 |
| NDB_API_WAIT_SCAN_RESULT_COUNT_SLAVE | 0 |
| NDB_API_WAIT_META_REQUEST_COUNT_SLAVE | 0 |
| NDB_API_WAIT_NANOS_COUNT_SLAVE | 0 |
| NDB_API_BYTES_SENT_COUNT_SLAVE | 0 |
| NDB_API_BYTES_RECEIVED_COUNT_SLAVE | 0 |
| NDB_API_TRANS_START_COUNT_SLAVE | 0 |
| NDB_API_TRANS_COMMIT_COUNT_SLAVE | 0 |
| NDB_API_TRANS_ABORT_COUNT_SLAVE | 0 |
| NDB_API_TRANS_CLOSE_COUNT_SLAVE | 0 |
| NDB_API_PK_OP_COUNT_SLAVE | 0 |
| NDB_API_UK_OP_COUNT_SLAVE | 0 |
| NDB_API_TABLE_SCAN_COUNT_SLAVE | 0 |
| NDB_API_RANGE_SCAN_COUNT_SLAVE | 0 |
| NDB_API_PRUNED_SCAN_COUNT_SLAVE | 0 |
| NDB_API_SCAN_BATCH_COUNT_SLAVE | 0 |
| NDB_API_READ_ROW_COUNT_SLAVE | 0 |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT_SLAVE | 0 |
| NDB_API_WAIT_EXEC_COMPLETE_COUNT | 4 |
| NDB_API_WAIT_SCAN_RESULT_COUNT | 3 |
| NDB_API_WAIT_META_REQUEST_COUNT | 28 |
| NDB_API_WAIT_NANOS_COUNT | 53756398 |
| NDB_API_BYTES_SENT_COUNT | 1060 |
| NDB_API_BYTES_RECEIVED_COUNT | 9724 |
| NDB_API_TRANS_START_COUNT | 3 |
| NDB_API_TRANS_COMMIT_COUNT | 2 |
| NDB_API_TRANS_ABORT_COUNT | 0 |
| NDB_API_TRANS_CLOSE_COUNT | 3 |
| NDB_API_PK_OP_COUNT | 2 |
| NDB_API_UK_OP_COUNT | 0 |
| NDB_API_TABLE_SCAN_COUNT | 1 |
| NDB_API_RANGE_SCAN_COUNT | 0 |
| NDB_API_PRUNED_SCAN_COUNT | 0 |
| NDB_API_SCAN_BATCH_COUNT | 0 |
| NDB_API_READ_ROW_COUNT | 2 |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT | 2 |
| NDB_API_EVENT_DATA_COUNT | 0 |
| NDB_API_EVENT_NONDATA_COUNT | 0 |
| NDB_API_EVENT_BYTES_COUNT | 0 |
+--------------------------------------------+----------------+
60 rows in set (0.00 sec)
各 Ndb
オブジェクトは、それぞれに独自のカウンタを持っています。 NDB API アプリケーションは、最適化やモニタリングで使用するためにカウンタの値を読み取ることができます。 複数の Ndb
オブジェクトを同時に使用するマルチスレッドクライアントの場合、特定の Ndb_cluster_connection
に属するすべての Ndb
オブジェクトからカウンタの合計ビューを取得することもできます。
4 セットのカウンタが表示されます。 1 セットは、現在のセッションにのみ適用されます。その他の 3 セットはグローバルです。 これは、mysql クライアントでは、これらの値をセッションとグローバルのどちらのステータス変数としても取得できることに関係ありません。 つまり、SHOW STATUS
で SESSION
または GLOBAL
キーワードを指定しても NDB API 統計ステータス変数について報告される値には影響せず、これらの各変数の値は、session_status
または global_status
テーブルの同等のカラムから取得されるかどうかにかかわらず同じです。
-
セッションカウンタ (セッションに固有)
セッションカウンタは、現在のセッションで (のみ) 使用される
Ndb
オブジェクトに関連します。 このようなオブジェクトをほかの MySQL クライアントが使用しても、これらのカウンタは影響を受けません。標準の MySQL セッション変数との混同を最小限にするために、これらの NDB API セッションに対応する変数は、先頭に下線を付けた 「
_session
変数」と呼んでいます。 -
レプリカカウンタ (グローバル)
このカウンタセットは、レプリカ SQL スレッドで使用される
Ndb
オブジェクト (存在する場合) に関連します。 この mysqld がレプリカとして機能しない場合、またはNDB
テーブルを使用しない場合、これらのカウントはすべて 0 になります。関連するステータス変数は、(先頭に下線を付けた) 「
_slave
変数」と呼んでいます。 -
インジェクタカウンタ (グローバル)
インジェクタカウンタは、バイナリログインジェクタスレッドがクラスタイベントを待機するために使用する
Ndb
オブジェクトに関連します。 バイナリログを書き込まない場合でも、NDB Cluster に接続された mysqld プロセスは、スキーマの変更などの一部のイベントを引き続き待機します。NDB API インジェクタカウンタに対応するステータス変数は、(先頭に下線を付けた) 「
_injector
変数」と呼んでいます。 -
サーバー (グローバル) カウンタ (グローバル)
このカウンタセットは、この mysqld によって現在使用されているすべての
Ndb
オブジェクトに関連します。 これには、すべての MySQL クライアントアプリケーション、レプリカ SQL スレッド (存在する場合)、バイナリログインジェクタおよびNDB
ユーティリティスレッドが含まれます。これらのカウンタに対応するステータス変数は、「グローバル変数」または 「mysqld レベルの変数」と呼んでいます。
(一般的なプリフィクス Ndb_api
とともに) 変数名の部分文字列 session
、slave
、または injector
で追加でフィルタ処理すると、特定の変数セットの値を取得できます。 _session
変数の場合は、これを次に示すように実行できます。
mysql> SHOW STATUS LIKE 'ndb_api%session';
+--------------------------------------------+---------+
| Variable_name | Value |
+--------------------------------------------+---------+
| Ndb_api_wait_exec_complete_count_session | 2 |
| Ndb_api_wait_scan_result_count_session | 0 |
| Ndb_api_wait_meta_request_count_session | 1 |
| Ndb_api_wait_nanos_count_session | 8144375 |
| Ndb_api_bytes_sent_count_session | 68 |
| Ndb_api_bytes_received_count_session | 84 |
| Ndb_api_trans_start_count_session | 1 |
| Ndb_api_trans_commit_count_session | 1 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 1 |
| Ndb_api_pk_op_count_session | 1 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 0 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 0 |
| Ndb_api_read_row_count_session | 1 |
| Ndb_api_trans_local_read_row_count_session | 1 |
+--------------------------------------------+---------+
18 rows in set (0.50 sec)
NDB API mysqld レベルのステータス変数のリストを取得するには、次のように、ndb_api
で始まり、_count
で終わる変数名でフィルタ処理します。
mysql> SELECT * FROM performance_schema.session_status
-> WHERE VARIABLE_NAME LIKE 'ndb_api%count';
+------------------------------------+----------------+
| VARIABLE_NAME | VARIABLE_VALUE |
+------------------------------------+----------------+
| NDB_API_WAIT_EXEC_COMPLETE_COUNT | 4 |
| NDB_API_WAIT_SCAN_RESULT_COUNT | 3 |
| NDB_API_WAIT_META_REQUEST_COUNT | 28 |
| NDB_API_WAIT_NANOS_COUNT | 53756398 |
| NDB_API_BYTES_SENT_COUNT | 1060 |
| NDB_API_BYTES_RECEIVED_COUNT | 9724 |
| NDB_API_TRANS_START_COUNT | 3 |
| NDB_API_TRANS_COMMIT_COUNT | 2 |
| NDB_API_TRANS_ABORT_COUNT | 0 |
| NDB_API_TRANS_CLOSE_COUNT | 3 |
| NDB_API_PK_OP_COUNT | 2 |
| NDB_API_UK_OP_COUNT | 0 |
| NDB_API_TABLE_SCAN_COUNT | 1 |
| NDB_API_RANGE_SCAN_COUNT | 0 |
| NDB_API_PRUNED_SCAN_COUNT | 0 |
| NDB_API_SCAN_BATCH_COUNT | 0 |
| NDB_API_READ_ROW_COUNT | 2 |
| NDB_API_TRANS_LOCAL_READ_ROW_COUNT | 2 |
| NDB_API_EVENT_DATA_COUNT | 0 |
| NDB_API_EVENT_NONDATA_COUNT | 0 |
| NDB_API_EVENT_BYTES_COUNT | 0 |
+------------------------------------+----------------+
21 rows in set (0.09 sec)
4 セットすべてのステータス変数に、すべてのカウンタが反映されるとはかぎりません。 イベントカウンタ DataEventsRecvdCount
、NondataEventsRecvdCount
、および EventBytesRecvdCount
の場合は、_injector
と mysqld レベルの NDB API ステータス変数のみを使用できます。
mysql> SHOW STATUS LIKE 'ndb_api%event%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| Ndb_api_event_data_count_injector | 0 |
| Ndb_api_event_nondata_count_injector | 0 |
| Ndb_api_event_bytes_count_injector | 0 |
| Ndb_api_event_data_count | 0 |
| Ndb_api_event_nondata_count | 0 |
| Ndb_api_event_bytes_count | 0 |
+--------------------------------------+-------+
6 rows in set (0.00 sec)
次に示すように、その他の NDB API カウンタには、_injector
ステータス変数が実装されていません。
mysql> SHOW STATUS LIKE 'ndb_api%injector%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| Ndb_api_event_data_count_injector | 0 |
| Ndb_api_event_nondata_count_injector | 0 |
| Ndb_api_event_bytes_count_injector | 0 |
+--------------------------------------+-------+
3 rows in set (0.00 sec)
ステータス変数の名前は、対応するカウンタの名前に簡単に関連付けることができます。 次の表に、各 NDB API 統計カウンタを、説明およびこのカウンタに対応する MySQL サーバーステータス変数の名前とともに一覧表示しています。
表 23.65 NDB API 統計カウンタ
カウンタ名 | 説明 | ステータス変数 (統計タイプ別):
|
---|---|---|
WaitExecCompleteCount |
操作の実行が完了するまで待機する間にスレッドがブロックされた回数。 すべての execute() 呼び出しと、クライアントから見えない BLOB および自動インクリメント操作の暗黙的な実行が含まれます。 |
|
WaitScanResultCount |
追加の結果やスキャンが閉じるまで待機するなど、スキャンベースの信号を待機する間にスレッドがブロックされた回数。 |
|
WaitMetaRequestCount |
メタベースの信号を待機する間にスレッドがブロックされた回数。これは、DDL 操作またはエポックが開始される (または終了する) まで待機しているときに発生する可能性があります。 |
|
WaitNanosCount |
データノードからの何らかのタイプの信号の待機にかかった合計時間 (ナノ秒)。 |
|
BytesSentCount |
データノードに送信されたデータ量 (バイト単位)。 |
|
BytesRecvdCount |
データノードから受信されたデータ量 (バイト単位)。 |
|
TransStartCount |
開始されたトランザクションの数。 |
|
TransCommitCount |
コミットされたトランザクションの数。 |
|
TransAbortCount |
中止されたトランザクションの数。 |
|
TransCloseCount |
中止されたトランザクションの数。 (この値は、TransCommitCount と TransAbortCount との合計より大きい場合があります。) |
|
PkOpCount |
主キーに基づいた操作または主キーを使用した操作の数。 このカウントには、BLOB 部分テーブル操作、暗黙的なロック解除操作、自動インクリメント操作、および通常 MySQL クライアントから見える主キー操作が含まれます。 |
|
UkOpCount |
一意のキーに基づいた操作または一意のキーを使用した操作の数。 |
|
TableScanCount |
開始されたテーブルスキャンの数。 これには、内部テーブルのスキャンが含まれます。 |
|
RangeScanCount |
開始された範囲スキャンの数。 |
|
PrunedScanCount |
単一パーティションにプルーニングされたスキャンの数。 |
|
ScanBatchCount |
受信された行のバッチの数。 (このコンテキストで、バッチとは単一フラグメントからのスキャン結果のセットです。) |
|
ReadRowCount |
読み取られた行の合計数。 主キー、一意のキー、またはスキャン操作を使用して読み取られた行が含まれます。 |
|
TransLocalReadRowCount |
トランザクションが実行された同じデータノードから読み取られた行数。 |
|
DataEventsRecvdCount |
受信された行変更イベントの数。 |
|
NondataEventsRecvdCount |
受信された行変更イベント以外のイベントの数。 |
|
EventBytesRecvdCount |
受信されたイベントのバイト数。 |
|
コミットされたトランザクションのすべてのカウント、つまり TransCommitCount
カウンタのステータス変数を確認するには、次のように、SHOW STATUS
の結果を部分文字列 trans_commit_count
でフィルタ処理できます。
mysql> SHOW STATUS LIKE '%trans_commit_count%';
+------------------------------------+-------+
| Variable_name | Value |
+------------------------------------+-------+
| Ndb_api_trans_commit_count_session | 1 |
| Ndb_api_trans_commit_count_slave | 0 |
| Ndb_api_trans_commit_count | 2 |
+------------------------------------+-------+
3 rows in set (0.00 sec)
ここから、現在の mysql クライアントセッションで 1 つのトランザクションがコミットされ、この mysqld で、それが最後に再起動されてから、2 つのトランザクションがコミットされたことを判断できます。
ステートメントを実行した直前と直後で、対応する _session
ステータス変数の値を比較すると、特定の SQL ステートメントによって、さまざまな NDB API カウンタがどのように増分されているかを確認できます。 この例では、SHOW STATUS
から初期値を取得したあとに、test
データベースに、単一のカラムを持つ t
という名前の NDB
テーブルを作成します。
mysql> SHOW STATUS LIKE 'ndb_api%session%';
+--------------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------------+--------+
| Ndb_api_wait_exec_complete_count_session | 2 |
| Ndb_api_wait_scan_result_count_session | 0 |
| Ndb_api_wait_meta_request_count_session | 3 |
| Ndb_api_wait_nanos_count_session | 820705 |
| Ndb_api_bytes_sent_count_session | 132 |
| Ndb_api_bytes_received_count_session | 372 |
| Ndb_api_trans_start_count_session | 1 |
| Ndb_api_trans_commit_count_session | 1 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 1 |
| Ndb_api_pk_op_count_session | 1 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 0 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 0 |
| Ndb_api_read_row_count_session | 1 |
| Ndb_api_trans_local_read_row_count_session | 1 |
+--------------------------------------------+--------+
18 rows in set (0.00 sec)
mysql> USE test;
Database changed
mysql> CREATE TABLE t (c INT) ENGINE NDBCLUSTER;
Query OK, 0 rows affected (0.85 sec)
この時点で、次に示す (出力で変更された行を強調表示しています) ように、新しい SHOW STATUS
ステートメントを実行し、変更を確認できます。
mysql> SHOW STATUS LIKE 'ndb_api%session%';
+--------------------------------------------+-----------+
| Variable_name | Value |
+--------------------------------------------+-----------+
| Ndb_api_wait_exec_complete_count_session | 8 |
| Ndb_api_wait_scan_result_count_session | 0 |
| Ndb_api_wait_meta_request_count_session | 17 |
| Ndb_api_wait_nanos_count_session | 706871709 |
| Ndb_api_bytes_sent_count_session | 2376 |
| Ndb_api_bytes_received_count_session | 3844 |
| Ndb_api_trans_start_count_session | 4 |
| Ndb_api_trans_commit_count_session | 4 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 4 |
| Ndb_api_pk_op_count_session | 6 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 0 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 0 |
| Ndb_api_read_row_count_session | 2 |
| Ndb_api_trans_local_read_row_count_session | 1 |
+--------------------------------------------+-----------+
18 rows in set (0.00 sec)
同様に、t
に行を挿入することで発生した NDB API 統計カウンタの変更も確認できます。次に示すように、行を挿入してから、前の例で使用したものと同じ SHOW STATUS
ステートメントを実行します。
mysql> INSERT INTO t VALUES (100);
Query OK, 1 row affected (0.00 sec)
mysql> SHOW STATUS LIKE 'ndb_api%session%';
+--------------------------------------------+-----------+
| Variable_name | Value |
+--------------------------------------------+-----------+
| Ndb_api_wait_exec_complete_count_session | 11 |
| Ndb_api_wait_scan_result_count_session | 6 |
| Ndb_api_wait_meta_request_count_session | 20 |
| Ndb_api_wait_nanos_count_session | 707370418 |
| Ndb_api_bytes_sent_count_session | 2724 |
| Ndb_api_bytes_received_count_session | 4116 |
| Ndb_api_trans_start_count_session | 7 |
| Ndb_api_trans_commit_count_session | 6 |
| Ndb_api_trans_abort_count_session | 0 |
| Ndb_api_trans_close_count_session | 7 |
| Ndb_api_pk_op_count_session | 8 |
| Ndb_api_uk_op_count_session | 0 |
| Ndb_api_table_scan_count_session | 1 |
| Ndb_api_range_scan_count_session | 0 |
| Ndb_api_pruned_scan_count_session | 0 |
| Ndb_api_scan_batch_count_session | 0 |
| Ndb_api_read_row_count_session | 3 |
| Ndb_api_trans_local_read_row_count_session | 2 |
+--------------------------------------------+-----------+
18 rows in set (0.00 sec)
これらの結果から、いくつかのことを観察できます。
明示的な主キーなしで
t
を作成しましたが、その際に 5 つの主キー操作が実行されました (Ndb_api_pk_op_count_session
の「前」と「後」の値の差、つまり 6 から 1 を引く)。 これは、NDB
ストレージエンジンを使用しているすべてのテーブルの機能である非表示の主キーの作成を反映しています。-
Ndb_api_wait_nanos_count_session
の連続した値を比較すると、CREATE TABLE
ステートメントを実装している NDB API 操作が、INSERT
によって実行された操作 (707370418 - 706871709 = 498709 ナノ秒、つまり約 0.0005 秒) よりも大幅に長い時間 (706871709 - 820705 = 706051004 ナノ秒、つまり約 0.7 秒)、データノードからの応答を待機したことを確認できます。 mysql クライアントでこれらのステートメントについてレポートされた実行時間は、これらの数値に大まかに関連しています。十分な (ナノ秒) 時間解決がないプラットフォームでは、非常に迅速に実行される SQL ステートメントが
Ndb_api_wait_nanos_count_session
、Ndb_api_wait_nanos_count_slave
、またはNdb_api_wait_nanos_count
の値に表示されないことがあるため、WaitNanosCount
NDB API カウンタの値の小さな変更がある場合があります。 Ndb_api_read_row_count_session
とNdb_api_trans_local_read_row_count_session
の値が増加したことを反映して、INSERT
ステートメントによってReadRowCount
とTransLocalReadRowCount
の両方の NDB API 統計カウンタが増分されています。