INNODB_BUFFER_PAGE_LRU
テーブルは、InnoDB
バッファープール内のページに関する情報、特に、いっぱいになったときにバッファープールからどのページをエビクションするかを決定する LRU リスト内の各ページの順序を保持します。
INNODB_BUFFER_PAGE_LRU
テーブルには、INNODB_BUFFER_PAGE
テーブルと同じカラムがありますが、INNODB_BUFFER_PAGE_LRU
テーブルには BLOCK_ID
カラムではなく LRU_POSITION
カラムがある点が異なります。
関連する使用法と使用例については、セクション14.14.5「InnoDB INFORMATION_SCHEMA バッファープールテーブル」を参照してください。
INNODB_BUFFER_PAGE_LRU
テーブルをクエリーすると、大幅なパフォーマンスのオーバーヘッドが生じる可能性があります。クエリーによって発生する可能性のあるパフォーマンスへの影響を認識し、かつそれが許容可能であると判断されていないかぎり、本番システムではこのテーブルをクエリーしないでください。パフォーマンスへの影響を避けるには、調べる問題をテストインスタンスに再現し、テストインスタンスの INNODB_BUFFER_PAGE_LRU
テーブルをクエリーします。
表 21.19 INNODB_BUFFER_PAGE_LRU のカラム
カラム名 | 説明 |
---|---|
POOL_ID |
バッファープール ID。複数のバッファープールインスタンスを区別する識別子。 |
LRU_POSITION |
LRU リストでのページの位置。 |
SPACE |
テーブルスペース ID。INNODB_SYS_TABLES.SPACE と同じ値を使用します。 |
PAGE_NUMBER |
ページ番号。 |
PAGE_TYPE |
ページタイプ。ALLOCATED (新しく割り当てられたページ)、INDEX (B ツリーノード)、UNDO_LOG (Undo ログページ)、INODE (インデックスノード)、IBUF_FREE_LIST (挿入バッファー空きリスト)、IBUF_BITMAP (挿入バッファービットマップ)、SYSTEM (システムページ)、TRX_SYSTEM (トランザクションシステムデータ)、FILE_SPACE_HEADER (ファイル領域ヘッダー)、EXTENT_DESCRIPTOR (エクステントディスクリプタページ)、BLOB (非圧縮 BLOB ページ)、COMPRESSED_BLOB (最初の圧縮 BLOB ページ)、COMPRESSED_BLOB2 (後続の圧縮 BLOB ページ)、IBUF_INDEX (挿入バッファーインデックス)、UNKNOWN (不明) のいずれかです。 |
FLUSH_TYPE |
フラッシュタイプ。 |
FIX_COUNT |
バッファープール内でこのブロックを使用するスレッドの数。ゼロのとき、ブロックは削除対象です。 |
IS_HASHED |
ハッシュインデックスがこのページ上に構築されているかどうか。 |
NEWEST_MODIFICATION |
もっとも新しい変更のログシーケンス番号。 |
OLDEST_MODIFICATION |
もっとも古い変更のログシーケンス番号。 |
ACCESS_TIME |
ページの最初のアクセス時間の判断に使用される無名数。 |
TABLE_NAME |
ページが属しているテーブルの名前。このカラムは、タイプ INDEX のページにのみ適用可能です。 |
INDEX_NAME |
ページが属しているインデックスの名前。これは、クラスタ化されたインデックスの名前にもセカンダリインデックスの名前にもなります。このカラムは、タイプ INDEX のページにのみ適用可能です。 |
NUMBER_RECORDS |
ページ内のレコードの数。 |
DATA_SIZE |
レコードのサイズの合計。このカラムは、タイプ INDEX のページにのみ適用可能です。 |
COMPRESSED_SIZE |
圧縮されたページサイズ。圧縮されていないページは NULL になります。 |
PAGE_STATE |
ページ状態。有効なデータを伴うページの状態は、FILE_PAGE (ファイルからデータのページをバッファーします)、MEMORY (インメモリーオブジェクトからのページをバッファーします)、COMPRESSED のいずれかです。ほかの可能な (InnoDB によって管理される) 状態は NULL 、READY_FOR_USE 、NOT_USED 、REMOVE_HASH です。 |
IO_FIX |
I/O がこのページに対して保留中であるかどうかを指定します。IO_NONE = 保留中の I/O なし、IO_READ = 読み取り保留中、IO_WRITE = 書き込み保留中です。 |
IS_OLD |
ブロックが LRU リストの古いブロックのサブリストにあるかどうかを指定します。 |
FREE_PAGE_CLOCK |
ブロックが最後に LRU リストの先頭に置かれたときの freed_page_clock カウンタの値。freed_page_clock カウンタは、LRU リストの末尾から削除されたブロックの数を追跡します。 |
例
mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_BUFFER_PAGE_LRU LIMIT 1\G
*************************** 1. row ***************************
POOL_ID: 0
LRU_POSITION: 0
SPACE: 97
PAGE_NUMBER: 1984
PAGE_TYPE: INDEX
FLUSH_TYPE: 1
FIX_COUNT: 0
IS_HASHED: YES
NEWEST_MODIFICATION: 719490396
OLDEST_MODIFICATION: 0
ACCESS_TIME: 3378383796
TABLE_NAME: `employees`.`salaries`
INDEX_NAME: PRIMARY
NUMBER_RECORDS: 468
DATA_SIZE: 14976
COMPRESSED_SIZE: 0
COMPRESSED: NO
IO_FIX: IO_NONE
IS_OLD: YES
FREE_PAGE_CLOCK: 0
1 row in set (0.02 sec)
メモ
このテーブルは、主に、専門家レベルのパフォーマンスモニタリングや、MySQL のパフォーマンス関連の拡張を開発するときに役立ちます。
DESCRIBE
またはSHOW COLUMNS
を使用して、データ型とデフォルト値を含む、このテーブルのカラムに関する追加情報を表示します。このテーブルをクエリーした場合、MySQL は、バッファープール内のアクティブなページ数に 64 バイトをかけた容量以上の連続したメモリーの大きなブロックを割り当てることが必要になる可能性があります。この割り当ては、特に数 G バイトのバッファープールを持つシステムで、メモリー不足エラーを引き起こす可能性があります。
このテーブルをクエリーした場合、MySQLで、LRU リストのトラバース中、バッファープールを表すデータ構造をロックする必要があります。これにより、特に数 G バイトのバッファープールを持つシステムで並列性を軽減できます。
このテーブルをクエリーするには
PROCESS
権限が必要です。