首页 > 新闻系统 > 编程天地 > 文章正文

MySQL查询缓存机制

2008-04-22 09:56:03 来源:中国自学编程网 作者:佚名 点击:
缓存机制简单的说就是缓存sql文本及查询结果,如果运行相同的sql,服务器直接从缓存中取到结果,而不需要再去解析和执行sql。如果表更改了,那么使用这个表的所有缓冲查询将不再有效,查询缓存值的相关条目被清空。

  +---------------+-------+
8 rows in set (0.00 sec)

mysql>  select count(*) from animals;
+----------+
| count(*) |
+----------+
|        6 | 
+----------+
1 row in set (0.00 sec)

mysql>  SHOW STATUS LIKE ’Qcache%’;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Qcache_hits   | 1     | --表示sql在缓存中直接得到结果,不需要再去解析
+---------------+-------+
8 rows in set (0.00 sec)

mysql> select count(*) from animals;
+----------+
| count(*) |
+----------+
|        6 | 
+----------+
1 row in set (0.00 sec)

mysql> select count(*) from animals;
+----------+
| count(*) |
+----------+
|        6 | 
+----------+
1 row in set (0.00 sec)

mysql> SHOW STATUS LIKE ’Qcache_hits’;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Qcache_hits   | 3     |    --上面的sql也是是从缓存中直接取到结果
+---------------+-------+
1 row in set (0.00 sec)

mysql> insert into animals select 9,’testsds’ ; --插入数据后,跟这个表所有相关的sql缓存就会被清空掉
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> select count(*) from animals;
+----------+
| count(*) |
+----------+
|        7 | 
+----------+
1 row in set (0.00 sec)

mysql> SHOW STATUS LIKE ’Qcache_hits’;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Qcache_hits   | 3    |  --还是等于3,说明上一条sql是没有直接从缓存中直接得到的
+---------------+-------+
1 row in set (0.00 sec)

mysql> select count(*) from animals;
+----------+
| count(*) |
+----------+
|        7 | 
+----------+
1 row in set (0.00 sec)

mysql> SHOW STATUS LIKE ’Qcache_hits’; 
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Qcache_hits   | 4     | 
+---------------+-------+
1 row in set (0.00 sec) 
9 7 3 1 2 4 8 :

精彩推荐
焦点大图推荐
本类热门文章

论坛美图

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203