您当前的位置:首页>>技术中心>>数据恢复文章>>正文
 
Mysql的查询缓存区的优化
作者: 来源: 日期:2009-6-19 12:25:34  点击次数:

查看查询缓存区的相关变量:

mysql> SHOW VARIABLES LIKE '%query_cache%';+------------------------------+----------+| Variable_name                 | Value     |+------------------------------+----------+| have_query_cache              | YES       | | query_cache_limit             | 1048576   | | query_cache_min_res_unit      | 4096      | | query_cache_size              | 33554432 | | query_cache_type              | ON        | | query_cache_wlock_invalidate | OFF       | +------------------------------+----------+6 rows in set (0.00 sec)

have_query_cache 
是否支持查询缓存区 “YES”表是支持查询缓存区

query_cache_limit  可缓存的Select查询结果的最大值 1048576 byte /1024 = 1024kB 即最大可缓存的select查询结果必须小于1024KB

query_cache_min_res_unit 每次给query cache结果分配内存的大小 默认是 4096 byte 也即 4kB

在这里,我延伸三点重要的东西

1.当查询进行的时候,Mysql把查询结果保存在qurey cache中,但是有时候要保存的结果比较大,超过了query_cache_min_res_unit的值 ,这时候mysql将一边检索结果,一边进行慢慢保存结果,所以,有时候并不是
把所有结果全部得到后再进行一次性保存,而是每次分配一块query_cache_min_res_unit 大小的内存空间保存结果集,
使用完后,接着再分配一个这样的块,如果还不不够,接着再分配一个块,依此类推,也就是说,有可能在一次查询中,
mysql要进行多次内存分配的操作,而我们应该知道,频繁操作内存都是要耗费时间的。

2. 内存碎片的产生。当一块分配的内存没有完全使用时,MySQL会把这块内存Trim掉,把没有使用的那部分归还以重复利用。比如,第一次分配4KB,只用 了3KB,剩1KB,第二次连续操作,分配4KB,用了2KB,剩2KB,这两次连续操作共剩下的1KB+2KB=3KB,不足以做个一个内存单元分配, 这时候,内存碎片便产生了。

3.内存块的概念,先看下这个:

mysql> show status like 'qcache%';+-------------------------+----------+| Variable_name            | Value     |+-------------------------+----------+| Qcache_free_blocks       | 5096      | | Qcache_free_memory       | 18964096 | | Qcache_hits              | 12192192 | | Qcache_inserts           | 3560370   | | Qcache_lowmem_prunes     | 17326     | | Qcache_not_cached        | 303599    | | Qcache_queries_in_cache | 10201     | | Qcache_total_blocks      | 25937     | +-------------------------+----------+8 rows in set (0.00 sec)

本新闻共2页,当前在第1页  1  2  


上一篇:Linux下快速搭建ntp时间同步服务器
下一篇:linux下/dev/shm是什么?
  北京总部: 4006-505-808
  天 津 部: 4006-505-808
  上 海 部: 4006-505-808
  深 圳 部: 4006-505-808
  广 州 部: 4006-505-808
  重 庆 部: 4006-505-808
  南 京 部: 4006-505-808
  其它地区: 4006-505-808
经典案例
中国石油管理局-Oracle数据库恢
中国网通-IBM EXP300磁盘阵列数
大连鸿德经贸有限责任公司-SQL
中国地质环境监测院-HP LH3000
藁城市东街百货-EFS文件解密成
工商银行某省分行-AIX删除LV数
中央电视台新闻评论部-苹果分
promise乔鼎硬盘阵列数据恢复成
麒麟童文化-苹果分区无法打开,
NAS 8100服务器数据恢复成功 
解决方案
raid磁盘阵列OFFLINE后的应急方
磁盘未被格式化,是否格式化数据
误GHOST、误一键恢复灾难应急方
误删除、误格式化数据灾难应急
LINUX FSCK数据出错灾难应急方
北亚数据恢复 - 联系我们 - 关于北亚 - 友情链接 - 网站地图 - RSS聚合 
版权所有 北亚数据恢复中心
全国统一客服热线:4006-505-808
北京总部:北京市海淀区中关村大街11号E世界A座8层832B室