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