InooDB存储引擎
1.体系架构
从图中可以看到有二块内容
(1)后台线程:负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据。此外将已修改的数据文件刷新到磁盘文件,同时保证在数据库发生异常的情况下In哦哦DB能恢复到正常运行状态。
(2)内存池:维护所有进程/线程需要访问的多个内部数据结构。缓存磁盘上的数据,方便快速读取。。。重做日志缓冲。。。
2.后台线程(InnoDB是多线程的,因此后台有多个不同的后台线程,负责处理不同的任务)
(1)Master Thread
这是一个非常核心的后台的线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性。
(2)IO Thread
在InooDB中大量使用了异步IO来处理写IO请求,极大提高数据库的性能。IO Thread的工作主要是负责这些IO请求的回调处理。
(3)Purge Thread
Purge Thread回收已经使用并分配的undo页,因为当事务被提交后,其所使用的undolog可能不再需要。
(4)Page Cleaner Thread
其作用是将之前版本中脏页的刷新操作都放入到单独的线程中来完成。
3.内存
(1)缓冲池
InnoDB是基于磁盘存储的,由于CPU速度与磁盘速度相差太大,所以基于磁盘的数据库系统通常使用缓冲池技术来提高数据库的整体性能。
缓冲池简单来说就是一块内存区域,通过内存的速度来弥补磁盘速度。
(2)内存管理
通常来说,数据库中缓冲池是通过LRU(最近最少使用)算法来进行管理的。