我试图运行tuningprimer.sh来调整mysql设置。我已经将mysql查询缓存增加了几次,使其达到当前的2GB,但根据测试结果,仍然不够:
> QUERY CACHE Query cache is enabled Current query_cache_size = 2.00 G
> Current query_cache_used = 1.72 G Current query_cache_limit = 8 M
> Current Query cache Memory fill ratio = 86.22 % Current
> query_cache_min_res_unit = 4 K However, 3906616 queries have been
> removed from the query cache due to lack of memory Perhaps you should
> raise query_cache_size MySQL won't cache query results that are larger
> than query_cache_limit in size如您所见,390万个查询因其大小而被从缓存中删除。我害怕索引这么大的缓存。我的意思是,在这么大的缓存文件中搜索可能比执行查询本身花费更多的时间和资源。
你觉得呢?我还应该增加mysql缓存吗?
BTW:服务器运行Litespeed + mysql + php 5.3,拥有24 is的RAM,当前内存使用量为12 is
发布于 2011-10-18 09:37:11
如果您有许多相当小的结果集要缓存,您的query_cache_min_res_unit可能设置得太大。因为query_cache_min_res_unit是缓存结果集的最小分配大小,即使有2GB的查询缓存,您也不能存储超过512,000个结果。看看来自Qcache_total_blocks输出的SHOW STATUS LIKE '%qcache%';和Qcache_queries_in_cache变量--如果您看到接近1:1的比率,您可能会从降低query_cache_min_res_unit值中获益。
锁争用问题仍然是一个问题,但是当"SHOW PROCESSLIST“列出过多的”等待查询缓存锁“过程时,您会看到这个限制。
发布于 2011-10-17 22:14:37
文档说:
“请注意不要设置太大的缓存大小。由于更新时需要线程锁定缓存,您可能会发现非常大的缓存存在锁争用问题。”
请注意,它并没有定义什么是非常大的。编辑:看看这个错误,我认为你在一个非常大的领域。
如果这是一个搜索服务,也许您应该考虑类似于索尔的东西?
发布于 2011-10-18 13:11:02
在开始使用大型缓存之前,您可能需要阅读以下内容:http://www.percona.com/files/presentations/MySQL_查询_Cache.pdf。我有一个850 db的mysql db,主要存储人口统计数据,根据我的查询计划,我的查询缓存是32M。
我从一个大型缓存开始,经过几年使用mysql进行大量性能调优和清理查询之后,我将其删除到32M,并且运行良好。
“高性能Mysql”也有一个关于查询缓存的重要章节。
参考文献:
http://www.percona.com/files/presentations/MySQL_查询_Cache.pdf
https://serverfault.com/questions/322358
复制相似问题