MySQL查询缓存:限制到最大缓存大小128 MB?

我的应用程序是非常数据库密集,所以我试着真的很难确保应用程序和MySQL数据库一起工作尽可能有效。

目前,我调整MySQL查询缓存,以使其符合在服务器上运行的查询的特性。

query_cache_size是可以存储在缓存中的最大数据量,query_cache_limit是缓存中单个结果集的最大大小。

我当前的MySQL查询缓存配置如下:

query_cache_size=128M
query_cache_limit=1M

tuning-primer.sh给出了关于运行系统的以下调整提示:

QUERY CACHE
Query cache is enabled
Current query_cache_size = 128 M
Current query_cache_used = 127 M
Current query_cache_limit = 1 M
Current Query cache Memory fill ratio = 99.95 %
Current query_cache_min_res_unit = 4 K
However, 21278 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

和mysqltuner.pl给出以下调整提示:

[OK] Query cache efficiency: 31.3% (39K cached / 125K selects)
[!!] Query cache prunes per day: 2300654

Variables to adjust:
    query_cache_size (> 128M)

两个调优脚本建议我应该提高query_cache_size。但是,增加query_cache大小超过128M可能会降低性能根据mysqltuner.pl(请参阅http://mysqltuner.pl/)。

你将如何解决这个问题?你会增加query_cache_size尽管mysqltuner.pl的警告或尝试以某种方式调整查询逻辑?大多数数据访问由Hibernate处理,但在应用程序中也使用了大量的手工编码的SQL。

通常,“太大的缓存大小”警告是在假设您几乎没有物理内存和缓存本身很好地需要被交换或将需要操作系统所需的资源(如文件缓存)时发出的。

如果你有足够的内存,可以安全地增加query_cache大小(我见过安装1GB查询缓存)。

但是你确定你正在使用查询缓存吗?有很多逐字重复的查询吗?你能发布一个典型的查询的例子吗?

http://stackoverflow.com/questions/2095614/mysql-query-caching-limited-to-a-maximum-cache-size-of-128-mb

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:MySQL查询缓存:限制到最大缓存大小128 MB?