INNODB_TABLESTATS
テーブルには、InnoDB
テーブルに関する低レベルのステータス情報のビューが表示されます。 このデータは、InnoDB
テーブルのクエリー時に使用するインデックスを計算するために MySQL オプティマイザによって使用されます。 この情報は、ディスクに格納されているデータではなく、インメモリーデータ構造から導出されます。 対応する内部 InnoDB
システムテーブルはありません。
InnoDB
テーブルは、前回のサーバー再起動以降にオープンされ、テーブルキャッシュからエージアウトされていない場合に、このビューに表示されます。 永続的統計を利用できるテーブルは、このビューに常に表示されます。
テーブル統計は、インデックス付けされたカラムを変更する DELETE
または UPDATE
操作に対してのみ更新されます。 インデックス付けされていないカラムのみを変更する操作では、統計は更新されません。
ANALYZE TABLE
によってテーブル統計がクリアされ、STATS_INITIALIZED
カラムが Uninitialized
に設定されます。 統計は、次回テーブルにアクセスしたときに再度収集されます。
関連する使用法と使用例については、セクション15.15.3「InnoDB INFORMATION_SCHEMA スキーマオブジェクトテーブル」を参照してください。
INNODB_TABLESTATS
テーブルには、次のカラムがあります:
-
TABLE_ID
統計が使用可能なテーブルを表す識別子 (
INNODB_TABLES.TABLE_ID
と同じ値)。 -
NAME
テーブルの名前。
INNODB_TABLES.NAME
と同じ値です。 -
STATS_INITIALIZED
値は、統計がすでに収集されている場合は
Initialized
で、収集されていない場合はUninitialized
です。 -
NUM_ROWS
現在の推定されるテーブル内の行数。 それぞれの DML 操作後に更新されます。 コミットされていないトランザクションがテーブルに対して挿入または削除されている場合、値が正しくない可能性があります。
-
CLUST_INDEX_SIZE
InnoDB
テーブルデータを主キー順に保持する、クラスタ化されたインデックスを格納するディスク上のページ数。 この値は、テーブルの統計がまだ収集されていない場合は NULL になることがあります。 -
OTHER_INDEX_SIZE
テーブルのすべてのセカンダリインデックスを格納するディスク上のページ数。 この値は、テーブルの統計がまだ収集されていない場合は NULL になることがあります。
-
MODIFIED_COUNTER
INSERT
、UPDATE
、DELETE
などの DML 操作と外部キーのカスケード操作によって変更された行の数。 このカラムは、テーブル統計が再計算されるごとにリセットされます。 -
AUTOINC
すべての自動インクリメントベースの操作で発行される次の番号。
AUTOINC
値の変更ペースは、自動インクリメント番号が要求された回数と、要求ごとに認められる番号の数に応じて異なります。 -
REF_COUNT
このカウンタがゼロになると、テーブルメタデータをテーブルキャッシュから削除できます。
例
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TABLESTATS where TABLE_ID = 71\G
*************************** 1. row ***************************
TABLE_ID: 71
NAME: test/t1
STATS_INITIALIZED: Initialized
NUM_ROWS: 1
CLUST_INDEX_SIZE: 1
OTHER_INDEX_SIZE: 0
MODIFIED_COUNTER: 1
AUTOINC: 0
REF_COUNT: 1
メモ
このテーブルは、主にエキスパートレベルのパフォーマンス監視、または MySQL のパフォーマンス関連の拡張機能を開発する場合に役立ちます。
このテーブルをクエリーするには
PROCESS
権限が必要です。INFORMATION_SCHEMA
COLUMNS
テーブルまたはSHOW COLUMNS
ステートメントを使用して、データ型やデフォルト値など、このテーブルのカラムに関する追加情報を表示します。