我们致力于一个MySQL知识的分享网站

  |   本站Feed      

MySQL的key_buffer_size参数

2009-08-04 22:56:04  |   才被阅读:1,124 次  |   要评论?
分类: MySQL基础知识  |   发布: OurMySQL  |   来源:stronghearted life
标签: , ,

缓存myisam表的索引块大小,可以被所有进程所共享。当设置key_buffer_size,操作系统不会马上分配key_buffer_size设置的值,而是在需要的时候,再分配的。可以设置多个key_buffer,当设置不是默认key_buffer为0时,mysql会把缓存的索引块移到默认的key_buffer中去并删除不再使用的索引块。Myisam表中只能cache索引块,不能cache数据块。

继续阅读全文...

mysql的缓存机制

2009-05-14 23:39:35  |   才被阅读:568 次  |   要评论?
分类: MySQL优化设计  |   发布: OurMySQL  |   来源:网站系统架构网摘
标签:

昨天发现一个很奇怪的问题,运营说有一条帖子已经删除了,但是还是显示,显示发现有文件缓存,删除后还是会生成,怀疑是数据库里没有被删除。进数据库一看,表坏了,根本没有办法进行任何操作(奇怪)。没办法,先修表,修好后通过phpmyadmin查询没有改记录,进shell下也找不到(有点意思)。于是分析程序,程序确可以把数据查出来(邪了)。直接把程序里的sql在mysql里执行,出数据了(有点眉目了),怀疑是mysql缓存的问题。有点不明白,数据库里肯定没有那条数据了,说明执行了delete,但为什么缓存还生效呢?不管了,先重启数据库,问题解决。

继续阅读全文...

InnoDB的缓存替换策略及其效果

2009-01-15 12:34:01  |   才被阅读:694 次  |   要评论?
分类: MySQL优化设计  |   发布: OurMySQL  |   来源:风轻扬
标签: ,

我们开发自己的存储引擎页面缓存替换策略的过程中主要是参考了InnoDB与LRU-K算法。InnoDB缓存替换策略使用分代与LRU相结合的方式。分为old和young两个分代,系统维护old分代占总buffer大小的3/8左右。当一个页面第一次被访问时,是加入到old分代的lru头。并不是每次访问一个页面时就将这个页提到lru的头部,而是在这个页面在LRU中的位置调整后,是否有很多页面已经被替换出去,若有,则将这个页面移到LRU头。系统在每个页记录调整该页在lru中位置当前系统总共替换了多少个数据页,比较页中记录的这个计数与系统全局页替换计数,就可以发现上次调整这个页在lru链表中位置后,系统中又有多少个页被替换,若比较多,则再次调整该页在lru中的位置。由于第一次访问的页被加入到old分代中,因此一次表扫描不会导致young分代中的页被替换出去。

继续阅读全文...