MySQL查询缓存不适用于某些表 - 正确的设置

时间:2012-02-20 15:40:29

标签: mysql apache mongodb performance

我遇到了使MySQL查询缓存工作的问题。无论在什么设置下,我都无法在某些表上缓存查询。

一旦被调查。事实证明,MySQL 5.5不会缓存一个查询,其中包含一个带有“破折号”的表格。

Select id FROM `table-name` WHERE `id` = 1; 

但是,当您在没有破折号的情况下重命名表时,您将看到Qcache_queries_in_cache,并且Qcache_hits可以正常工作。

Select id FROM `tablename` WHERE `id` = 1;

下划线也有效。

1 个答案:

答案 0 :(得分:1)

我不知道“当前的RAM使用”是什么意思,但是MongoDB和MySQL都会尝试尽可能多地获取资源。查看正在发生的事情的最好方法是查看MySQL和MongoDB的“top”输出。在“免费”输出中,您会看到您的计算机已为高速缓存保留了12417480(12GB)。这可能是操作系统为MongoDB的内存映射文件保留的内容。我不知道你的查询负载或数据访问模式,所以不能说这里发生了什么。您还可以检查mongodb.log文件以查看是否有任何慢查询。