MyISAM的key_buffer_size和InnoDB的innodb_buffer_pool_size

Posted 罗夏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyISAM的key_buffer_size和InnoDB的innodb_buffer_pool_size相关的知识,希望对你有一定的参考价值。

一.MyISAM的key_buffer_size

MyISAM的索引方式是非聚集索引,主索引和其他索引没有本质区别,在data域都是存储了具体记录行的地址.key_buffer_size规定了系统将多少内存用作MyISAM的索引缓存.如果内存足够大,又不想去计算,一个简单的计算办法就是将所有的索引文件加起来作为key_buffer_size的大小.

 

二.InnoDB的innodb_buffer_pool_size

1.InnoDB主索引是聚簇索引,索引与数据共用表空间.InnoDB缓存机制和MyISAM缓存机制的最大区别就是在于,InnoDB不仅仅是缓存索引,还会是缓存数据.InnoDB将数据和索引等信息缓存在innodb_buffer_pool中.

下面的参数规定了innodb_buffer_pool的大小和数量以及其他特性等:
innodb_buffer_pool_instances:几个innodb_buffer_pool,默认是1个
innodb_buffer_pool_size:每个innodb_buffer_pool_size大小
innodb_additional_mem_pool_size:指定InnoDB用来存储数据字典和其他内部数据结构的缓存大小,默认值是2MB

 

2.InnoDB何时将数据加载到innodb_buffer_pool中

InnoDB在mysql启动一段时间后,将经常访问的innodb引擎表的数据放入innodb_buffer_pool.即innodb_buffer_pool保存的是热数据.然后根据一定算法淘汰不常访问的数据.

当停止MySQL服务时,所有存储在InnoDB缓冲池中的热数据将被全部清空.重新启动后,再次缓存数据.

从5.6版本开始,MySQL支持关闭MySQL服务时将内存中的热数据保存到硬盘,MySQL重启后首先将硬盘中的如数据加载到InnoDB缓冲池中,以便缩短warmup进程的时间,提高业务繁忙高并发时的效率.




以上是关于MyISAM的key_buffer_size和InnoDB的innodb_buffer_pool_size的主要内容,如果未能解决你的问题,请参考以下文章

mysql参数之key_buffer_size

根据 MySQL 状态优化 ---- 3. key_buffer_size

mysql优化之key_buffer_size

Mysql存储引擎 MyISAM和InnoDB

MySQL数据库MyISAM和InnoDB存储引擎的对比

(转)MyISAM Key Cache详解及优化