我正在运行一个自编码的 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%
看起来我设置了一些错误的配置。让我知道应该改进什么。