私は自己コーディングされた PHP-MySQL サイトを実行しており、以下の構成でクエリキャッシュを有効にしています。
query_cache_type = 1
query_cache_size = 20M
query_cache_limit = 4096
query_cache_min_res_unit = 4096
tmp_table_size = 512M
max_heap_table_size = 512M
上記の構成を次のように読み取ることができます。
- クエリキャッシュが有効になっています
- 結果サイズが 4096 バイトを超えるクエリをキャッシュしない
- バッファに収容できるクエリの合計は、約 5000 件のクエリ結果です (20MB/4KB = 5000)
tmp_table_sizeまたはmax_heap_table_sizeがキャッシュのクエリにどのように役立つかわかりません。これらの変数は、メモリまたはディスク (必要な場合) に作成された一時テーブルに関連しています。
innodb_buffer_pool_size = 4G
innodb_buffer_pool_instances = 4
システムには 32 GB のメモリがあり、ほとんどの場合、ほぼ 50% のメモリが空です。そのため、 innodb_buffer_pool_sizeを 4Gに設定しました。データベースのサイズは約 900MB で、1 日あたり約 2MB 増加しています。
mysqltuner ユーティリティで次の出力を取得しています
Key buffer hit rate: 69.3%
Temporary tables created on disk: 75%
Query cache efficiency: 5.9%
間違った構成を設定したようです。改善すべき点を教えてください。