我正在運行一個自編碼的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
系統有32GB的內存,其中大部分時間裏差不多有50%的內存空了。因此,我已將innodb_buffer_pool_size設置爲4G。數據庫大小約爲900MB,每天增長大約2MB。
我得到下面的輸出與mysqltuner實用
Key buffer hit rate: 69.3%
Temporary tables created on disk: 75%
Query cache efficiency: 5.9%
看起來我已經設置了一些錯誤配置。讓我知道應該改進什麼。