开启mysql查询缓存
下面我用 mysql6.0 最为演示最常用的设置查询缓存.
第一: query_cache_type 使用查询缓存的方式. 一般,我们会把 query_cache_type 设置为 ON,默认情况下应该是ON.
1 | mysql> select @@query_cache_type; |
这样 当我们执行:
1 | select id,name from tableName; |
这样就会用到查询缓存.在 query_cache_type 打开的情况下,如果你不想使用缓存,需要指明.
1 | select sql_no_cache id,name from tableName; |
当然也可以禁用查询缓存:
1 | mysql> set session uery_cache_type=off; |
这里我们不讨论这个,我们演示常用的设置.
第二:系统变量 have_query_cache 设置查询缓存是否可用.
1 | mysql> show variables like 'have_query_cache'; |
上面的显示,表示设置查询缓存是可用的.
第三:系统变量 query_cache_size 表示查询缓存大小,也就是分配内存大小给查询缓存,如果你分配大小为0, 那么 第一步 和 第二步 起不到作用,还是没有任何效果.
1 | mysql> select @@global.query_cache_size; |
上面是 mysql6.0设置默认的,之前的版本好像默认是0的,那么就要自己设置下. 设置 set @@global.query_cache_size=1000000; 这里是设置1M左右,900多K. 再次查看下:
1 | select @@global.query_cache_size; |
显示我们设置新的大小,表示设置成功.
第四: query_cache_limit 控制缓存查询结果的最大值 例如: 如果查询结果很大, 也缓存????这个明显是不可能的. MySql 可以设置一个最大的缓存值,当你查询缓存数结果数据超过这个值就不会. 进行缓存.缺省为1M,也就是超过了1M查询结果就不会缓存.
1 | mysql> select @@global.query_cache_limit; |
这个是默认的数值,如果需要修改,就像设置缓存大小一样设置,使用set重新指定大小. 好了,通过4个步骤就可以 打开了查询缓存,具体值的大小和查询的方式 这个因不同的情况来指定了. 可以使用下面的语句检查MySQL服务器是否提供查询缓存功能:
1 | mysql> SHOW VARIABLES LIKE 'have_query_cache'; |
可以使用FLUSH QUERY CACHE语句来清理查询缓存碎片以提高内存使用性能.该语句不从缓存中移出任何查询. RESET QUERY CACHE语句从查询缓存中移出所有查询.FLUSH TABLES语句也执行同样的工作. 为了监视查询缓存性能,使用SHOW STATUS查看缓存状态变量:
1 | mysql> SHOW STATUS LIKE 'Qcache%'; |
这些变量的描述见5.3.4节,”服务器状态变量”.这里描述它们的一些应用.