1,query_cache_size
query_cache_size:query cache 是用来缓存SQL语句文本和对应查询结果的缓存空间,如果相应的表没有变化,那么下次在碰到完全一致的SQL的时候,则跳过一切解析和查询,直接返回结果,这对某些情况是适合的,但是如果表变化非常频繁,SQL也是动态生成的,则由于要不断更新CACHE中的内容,并且这个时候锁粒度是非常大,反而会成为瓶颈,所以很多情况下,会关掉这个选项,设置此参数为0.
具体配置方法:
1.将query_cache_size设置为具体的大小,具体大小是多少取决于查询的实际情况,但最好设置为1024的倍数,参考值32M。
2.增加一行:query_cache_type=1
如果设置为0,那么可以说,你的缓存根本就没有用,相当于禁用了。但是这种情况下query_cache_size设置的大小系统是否要为其分配呢,这个问题有待于测试?
如果设置为1,将会缓存所有的结果,除非你的select语句使用SQL_NO_CACHE禁用了查询缓存。
如果设置为2,则只缓存在select语句中通过SQL_CACHE指定需要缓存的查询。
OK,配置完后的部分文件如下:
query_cache_size=128M
query_cache_type=1
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 | 104857