目录
InnoDB结构
InnoDB主要包括了内存池、后台线程以及存储文件三部分。
内存池
数据库直接操作磁盘进行读写数据,会带来一定的性能瓶颈,缓冲池是为了提高数据库的读写性能。数据库中读取数据时,如果缓冲池有数据,就读缓冲池,如果没有就去磁盘读取,对于修改操作,先修改缓冲池中的数据,然后通过Master Thread线程刷新到磁盘上。
缓冲池中缓存的数据页类型
索引页、数据页、 undo 页、插入缓冲(insert buffer)、自适应哈希索引(adaptive hash index)、 InnoDB存储的锁信息(lock info)、数据字典信息(data dictionary)等。索引页和数据页占缓冲池的很大一部分。InnoDB缓冲池中的页大小默认为16KB。
LUR算法
缓冲池是通过LRU(Latest Recent Used,最近最少使用)算法来进行管理的,即最频繁使用的页在LRU列表的最前段,最少使用的页在LRU列表的尾端,当缓冲池不能存放新读取的页时,首先释放LRU列表尾端的页。
缓冲池(buffer pool)
缓冲池通过参数innodb_buffer_pool_size配置大小,占内存最大的一块,存放各种数据的缓存,innodb将数据库文