<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*
136M page2.MYD
4.0K page2.MYI
12K page2.frm
136M total
local: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)