MySQLには、table_definition_cacheというパラメーターがあります。
英語ですが詳細はこちらに記載されています。
通常のテーブルキャッシュとは違い、ファイルディスクリプタを使わずにテーブル定義だけをキャッシュするのでスペースもとらず、テーブルが多いほどに有効です。デフォルトは、MySQL5.6.8までは400です。
数値は、400 + (table_open_cache / 2) が良いとされています。今回はこの値の変更をしてみます。
現在の状態確認
[html]
mysql> show variables like ‘table_definition_cache’;
+————————+——-+
| Variable_name | Value |
+————————+——-+
| table_definition_cache | 400 |
+————————+——-+
1 row in set (0.00 sec)
[/html]
変更
[html]
mysql> SET GLOBAL table_definition_cache=1024;
[/html]
反映確認
[html]
mysql> show variables like ‘table_definition_cache’;
+————————+——-+
| Variable_name | Value |
+————————+——-+
| table_definition_cache | 1024 |
+————————+——-+
1 row in set (0.00 sec)
[/html]
これでは再起動でmy.cnfの値に戻るので、問題なければ合わせてmy.cnfにも記述しましょう。