大约 10 小时前,我们将服务器从 5.0 升级到 5.5,目前服务器负载为 150
当我显示进程列表时,我看到很多带有状态的查询
等待查询缓存锁
我得到以下 SHOW STATUS LIKE 'Qcache%' 的输出;
+-------------------------+----------+ | 变量名称 | 值 | +-------------------------+----------+ | Qcache_free_blocks | 1 | | Qcache_free_memory | 33536864 | | Qcache_hits | 0 | | Qcache_inserts | 0 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 1463936 | | Qcache_queries_in_cache | 0 | | Qcache_total_blocks | 1 | +-------------------------+----------+ 共 8 行 (0.00 秒)
查询缓存参数设置为
查询缓存大小=32M
我们的服务器是具有 8GB RAM 的单节点,不确定为什么查询缓存不起作用
答案1
我在 serverfault 上找到了答案,高负载是因为查询缓存不工作,而查询缓存不工作是因为数据库名称中有一个连字符。
当我重命名数据库而不使用连字符时,一切恢复正常。
参考票 当架构名称中包含连字符(“-”)时,MySQL 5.5.9 查询缓存不起作用
谢谢侯赛因