MySQL 8.0 の INNODB_CACHED_INDEXES について

MySQL 8.0
この記事は最終更新から6年以上経過しています。内容が古くなっている可能性があります。

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


 

 

スマートスタイルTECHブログについて

スマートスタイルTECHブログでは、日頃MySQLのサポート業務に従事している有資格者で構成された技術サポートチームがMySQLに関する技術情報を発信しています。データベースのお困りごとはお気軽にご相談下さい。

よかったらシェアしてね!
  • URLをコピーしました!
目次