スマートスタイル TECH BLOG|データベース&クラウドの最新技術情報を配信

MySQL 8.0 の INNODB_CACHED_INDEXES について

MySQ 8.0 では新たに information_schema に innodb_chached_indexes テーブルが追加されました。
このテーブルを見ることでインデックスがどれくらい innodb buffer pool にキャッシュされているかがわかるようになりました。

MySQL :: MySQL 8.0 Reference Manual :: 24.35.4 The INFORMATION_SCHEMA INNODB_CACHED_INDEXES Table

INNODB_CACHED_INDEXES テーブル

格納されているデータは下記のように INDEX_ID で格納されているため、実際のインデックス名と紐付けるにはちょっとした工夫が必要になります。

上記のリファレンスにも記載がありますが、以下のSQLでテーブル名とインデックス、キャッシュされてるページ数が確認できます。

キャッシュに乗っているインデックスのパーセントを取得する

もう少しSQLを工夫をすることでインデックスがどれくらいキャッシュに乗っているかのパーセンテージも出すことができます。

実行結果

参考:How to calculate a specific InnoDB index size ?

まとめ

MySQL 8.0 で追加された INNODB_CACHED_INDEXES テーブルの情報から、インデックス単位でどれだけメモリにキャッシュされているかがわかるようになりました。パフォーマンス改善の一つの指標として使っていただければと思います。


MySQL

 

Return Top