mysql的query_cache_limit设置

mysql 函数语法

MySQL提供了查询缓冲机制。使用查询缓冲,MySQL将SELECT语句和查询结果存放在缓冲区中,今后对于同样的 SELECT语句(区分大小写),将直接从缓冲区中读取结果。根据MySQL用户手册,使用查询缓冲最多可以达到238%的效率,  一般都能达到80%以上。


    通过检查状态值Qcache_*,可以知道query_cache_size设置是否合理(上述状态值可以使用SHOW STATUS LIKE ‘Qcache%’获得)。如果Qcache_lowmem_prunes的值非常大,则表明经常出现缓冲不够的情况,如果Qcache_hits的值也非常大,则表明查询缓冲使用非常频繁,此时需要增加缓冲大小;如果Qcache_hits的值不大,则表明你的查询重复率很低,这种情况下使用查询缓冲反而会影响效率,那么可以考虑不用查询缓冲。此外,在SELECT语句中加入SQL_NO_CACHE可以明确表示不使用查询缓冲。

  与查询缓冲有关的参数还有query_cache_type、query_cache_limit、query_cache_min_res_unit。query_cache_type指定是否使用查询缓冲,可以设置为0、1、2,该变量是SESSION级的变量。query_cache_limit指定单个查询能够使用的缓冲区大小,缺省为1M。query_cache_min_res_unit是在4.1版本以后引入的,它指定分配缓冲区空间的最小单位,缺省为4K。检查状态值Qcache_free_blocks,如果该值非常大,则表明缓冲区中碎片很多,这就表明查询结果都比较小,此时需要减小 query_cache_min_res_unit。

    步骤分两步,开启缓存,设置缓存大小,具体实施如下:
1、开启缓存,两种方式:
mysql -u root -p  #登陆数据库
a) 使用mysql命令:
set global query_cache_type = 1;      #Cache;query_cache_type=1是给所有的查询做Cache
set global query_cache_size = 131072;    #分配128M内存给Query Cache;

b) 修改配置文件,linux下是my.cnf;
在配置文件的最后追加上:
query_cache_type = 1
query_cache_size = 131072
需要重启mysql生效;
最后在mysql命令行输入:
SHOW VARIABLES LIKE '%query_cache%';


解释缓存相关参数:
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| have_query_cache             | YES     | --查询缓存是否可用  
| query_cache_limit            | 1048576 | --可缓存具体查询结果的最大值  
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 131072  | --查询缓存的大小  
| query_cache_type             | ON      | --阻止或是支持查询缓存 
| query_cache_wlock_invalidate | OFF     |
+------------------------------+---------+

扩展阅读:
» http://database.51cto.com/art/201011/235045.htm
» http://fengbin2005.iteye.com/blog/1316964
» http://tech.it168.com/a2011/0209/1155/000001155797.shtml



欢迎转载,转载请注明来自一手册:http://yishouce.com/article/69.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1