MySQLでtable_definition_cacheの値を変更する




投稿日:

MySQLには、table_definition_cacheというパラメーターがあります。

英語ですが詳細はこちらに記載されています。

通常のテーブルキャッシュとは違い、ファイルディスクリプタを使わずにテーブル定義だけをキャッシュするのでスペースもとらず、テーブルが多いほどに有効です。デフォルトは、MySQL5.6.8までは400です。

数値は、400 + (table_open_cache / 2) が良いとされています。今回はこの値の変更をしてみます。

現在の状態確認

mysql> show variables like 'table_definition_cache';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| table_definition_cache | 400   |
+------------------------+-------+
1 row in set (0.00 sec)

変更

mysql> SET GLOBAL table_definition_cache=1024;

反映確認

mysql> show variables like 'table_definition_cache';
+------------------------+-------+
| Variable_name          | Value |
+------------------------+-------+
| table_definition_cache | 1024  |
+------------------------+-------+
1 row in set (0.00 sec)

これでは再起動でmy.cnfの値に戻るので、問題なければ合わせてmy.cnfにも記述しましょう。