MySQL 查询缓存测试

来源:互联网 发布:淘宝网的流程图解 编辑:程序博客网 时间:2024/06/10 18:49
<pre name="code" class="sql">

查找完MySQL查询缓存的相关资料后,自己做了一些测试,整理如下:

查看MySQL的查询缓存参数设置:

<span style="white-space:pre"></span>mysql> show variables like 'query_cache%';<span style="white-space:pre"></span>+------------------------------+-----------+<span style="white-space:pre"></span>| Variable_name                | Value     |<span style="white-space:pre"></span>+------------------------------+-----------+<span style="white-space:pre"></span>| query_cache_limit            | 1048576   |<span style="white-space:pre"></span>| query_cache_min_res_unit     | 4096      |<span style="white-space:pre"></span>| query_cache_size             | 134217728 |<span style="white-space:pre"></span>| query_cache_type             | ON        |<span style="white-space:pre"></span>| query_cache_wlock_invalidate | OFF       |<span style="white-space:pre"></span>+------------------------------+-----------+<span style="white-space:pre"></span>5 rows in set (0.00 sec)

各个参数的含义
query_cache_limit:
参数为能够缓存的单个查询的结果集最大大小,数据库现在为:1M。
query_cache_min_res_unit:
缓存查询结果集时,每次分配的块大小,如果多数查询的结果集比较大,可以通过调大该参数
提高性能。数据库现在为:4K(4096)。
query_cache_size:
参数为查询缓存能够使用的内存大小,数据库现在为:128M。
query_cache_type:
参数为查询缓存开关,数据库现在为:1/ON
0 / OFF: 表示禁用查询缓存
1 / ON : 开启查询缓存,可以通过指定‘SELECT SQL_NO_CACHE’指定不使用查询缓存。
2 / DEMAND:只有使用‘SELECT SQL_CACHE’查询时使用查询缓存。
query_cache_wlock_invalidate:
表加了写锁时是否让包含该表的查询缓存立即失效。数据库现在为:OFF。


mysql> show status like 'Qcache%';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| Qcache_free_blocks      | 902       |
| Qcache_free_memory      | 104841040 |
| Qcache_hits             | 135906729 |
| Qcache_inserts          | 35437870  |
| Qcache_lowmem_prunes    | 1338628   |
| Qcache_not_cached       | 1060101   |
| Qcache_queries_in_cache | 20230     |
| Qcache_total_blocks     | 41884     |
+-------------------------+-----------+
8 rows in set (0.00 sec)
mysql> 


缓存整个数据表大概消耗“.MYD”文件两倍大小的内存。


如page2数据表的磁盘文件大小分别为:


local:test ytc$ du -ch page2*136Mpage2.MYD4.0Kpage2.MYI12Kpage2.frm136Mtotallocal:test ytc$ 




查询时不同记录数对应的缓存内存大小为:


Qcache_free_memory..... 999981168
select * from page2 limit 1;2184
Qcache_free_memory..... 999978984
select * from page2 limit 10;2768
Qcache_free_memory..... 999976216
select * from page2 limit 100;13744
Qcache_free_memory..... 999962472
select * from page2 limit 1000;123544
Qcache_free_memory..... 999838928
select * from page2 limit 10000;1221544
Qcache_free_memory..... 998617384
select * from page2 limit 100000;12201544
Qcache_free_memory..... 986415840
select * from page2 limit 1000000;122001544
Qcache_free_memory..... 864414296
select * from page2 limit 10000000;255854088
Qcache_free_memory..... 608560208(2097152 lines)
0 0
原创粉丝点击