InnoDB存储引擎

2020-01-29  本文已影响0人  ericsonyc

InnoDB是一个高性能,高可用,高扩展性的存储引擎。

InnoDB体系架构

InnoDB存储引擎

InnoDB存储引擎有多个内存块,这些内存块组成一个大的内存池。

后台线程

InnoDB是一个多线程的结果,后台有很多线程,负责处理不同的任务:

内存

缓冲池

InnoDB是基于磁盘存储的,其中的记录按照页来管理。由于磁盘速度和CPU速度的差别,需要缓冲池来提高性能。
InnoDB的缓冲池:
缓冲池存储的数据页类型有:

缓冲池

缓存页管理

InnoDB的缓存池是一块很大的内存区域;以页的形式来组织,里面存放着各种类型的页;如何对这些页进行管理呢?
数据库中的缓冲池通常通过LRU(最近最少使用)算法来管理;即需要一个LRU的list来存放这些页,最常使用的放在前面,最少使用的放在最后,当容量不够时,先释放最后最少使用的页;页的默认大小是16KB。
对于数据库的索引和数据的扫描操作;有可能会把热点的页置换出去,这样下次访问依然要磁盘读取;这种情况下,对LRU算法做了修改,加入了midpoint的概念;新的页会被先加载到midpoint的位置;然后一个时间阈值后自动的添加到LRU列表头。

改进的算法有点类型JVM里的年轻代和老年代的算法;对象先被分配在年轻代,当轮询过一定的次数后,对象被加载到老年代。

checkpoint机制主要分为两种:

fuzzy checkpoint的时机:
master thread checkpoint
flush_lru_list checkpoint
async/sync flush checkpoint
dirty page too much checkpoint

InnoDB关键特性

上一篇下一篇

猜你喜欢

热点阅读