您的位置:首页 > 数据库 > MySQL

MYSQL查询缓存的使用

2013-09-03 10:31 393 查看
从 MySQL4开始,出现了QueryCache查询缓存,

如果使用了QueryCache,当查询接收到一个和之前同样的查询,

服务器将会从查询缓存种检索结果,而不是再次分析和执行上次的查询。

这样就大大提高了性能,节省时间,非常有用。

打开查询缓存,是通过几个步骤来设置的,例如:虽然你设置Mysql允许查询缓存,但

是如果你设置的查询缓存大小为了0,这和没有允许没什么区别。

所以必须是几个步骤的设置才能真正打开查询缓存这个功能。

下面我用 mysql6.0 最为演示最常用的设置查询缓存

第一: query_cache_type 使用查询缓存的方式

一般,我们会把 query_cache_type 设置为 ON,默认情况下应该是ON

show VARIABLES like '%query%'

来查看系统对查询缓存的输出信息

这样 当我们执行 select id,name from tableName; 这样就会用到查询缓存。

在 query_cache_type 打开的情况下,如果你不想使用缓存,需要指明

select sql_no_cache id,name from tableName;

当然也可以禁用查询缓存: mysql> set session query_cache_type=off;

这里我们不讨论这个,我们演示常用的设置。

第二: 系统变量 have_query_cache 设置查询缓存是否可用

mysql> show variables like 'have_query_cache';

+------------------+-------+

| Variable_name | Value |

+------------------+-------+

| have_query_cache | YES |

+------------------+-------+

上面的显示,表示设置查询缓存是可用的。

第三: 系统变量 query_cache_size

表示查询缓存大小,也就是分配内存大小给查询缓存,如果你分配大小为0,

那么 第一步 和 第二步 起不到作用,还是没有任何效果。

mysql> select @@global.query_cache_size;

+---------------------------+

| @@global.query_cache_size |

+---------------------------+

| 16777216 |

+---------------------------+

上面是 mysql6.0设置默认的,之前的版本好像默认是0的,那么就要自己设置下。

设置 set @@global.query_cache_size=1000000; 这里是设置1M左右,900多K。

再次查看下 select @@global.query_cache_size;

+---------------------------+

| @@global.query_cache_size |

+---------------------------+

| 999424 |

+---------------------------+

显示我们设置新的大小,表示设置成功。

第四: query_cache_limit 控制缓存查询结果的最大值

例如: 如果查询结果很大, 也缓存????这个明显是不可能的。

MySql 可以设置一个最大的缓存值,当你查询缓存数结果数据超过这个值就不会

进行缓存。缺省为1M,也就是超过了1M查询结果就不会缓存。

mysql> select @@global.query_cache_limit;

+----------------------------+

| @@global.query_cache_limit |

+----------------------------+

| 1048576 |

+----------------------------+

这个是默认的数值,如果需要修改,就像设置缓存大小一样设置,使用set

重新指定大小

转自:http://hi.baidu.com/aganle/item/827dd7ee24fde8265b2d64f9

SHOW STATUS LIKE ‘Qcache_hits’;来查询是否有缓存被命中,被命中后增1,只增不减
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: