innodb存储引擎

InnoDB的架构由内存池和后台线程构成,架构图如图所示

(1)内存根据分工以及存储文件的不同分为缓冲池、重做日志缓冲、额外内存池:

(1)内存根据分工以及存储文件的不同分为缓冲池、重做日志缓冲、额外内存池:

  1. 缓冲池:InnoDB引擎是基于磁盘存储的,并将其中的记录按照页的方式进行管理。由于磁盘IO的速度感人,为了提高数据库的整体性能,在内存中划了一块区域作为缓冲池。数据库读取页时,首先将从磁盘读到的页存放在缓冲池中。下次再读相同页时,首先判断该页是否在缓冲池中。若在缓冲池中,称该页被命中,直接读取缓冲池中的页。否则,读取磁盘上的页,由此提高了读取的速度。数据库修改数据操作时,首先修改在缓冲池的页,然后再异步刷新到磁盘上,从而提高改数据的速度。缓冲池中缓存的数据页类型有:索引页、数据页、undo页、插入缓冲、自适应哈希索引、InnoDB存储的锁信息、数据字典信息等。
  2. 重做日志缓冲:InnoDB首先将重做日志信息放到这个缓冲区,然后按照一定频率将其刷新到重做日志文件。默认1秒钟刷新一次,因此重做日志缓冲一般不需要很大,默认8M。日志在下列3种情况下会刷新重做日志缓冲:(1)每秒将重做日志缓冲刷新到重做日志文件(2)每个事务提交时会将重做日志缓冲刷新到重做日志文件(3)当重做日志缓冲池剩余空间小于1/2时,重做日志缓冲刷新到重做日志文件。
  3. 额外的内存池:在InnoDB存储引擎中,对内存的管理是通过一种称为内存堆的方式进行的。在对一些数据结构本身的内存进行分配时,需要从额外的内存池中进行申请。

(2)后台线程根据功能不同分为master Thread、IO Thread、Purge Thread、Page Cleaner Thread:

  1. Master Thread:负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性,包括脏页的刷新、合并插入缓冲、UNDO夜的回收等。
  2. IO Thread:在InnoDB存储引擎中大量使用异步 IO处理IO请求以提高数据库的性能,IO Thread负责这些IO请求的回调处理。IO Thread 有4类,分别为write、read、insert buffer、log IO thread。
  3. Purge Thread:由于回收不再需要的undo页。
  4. Page Cleaner Thread:将缓冲池中脏页(即被修改过于磁盘中数据不一致的页)刷新到磁盘中。
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值