Innodb体系结构

在这里插入图片描述
Innodb存储引擎有多个内存块,可以认为这些内存块组成了一个大的内存池,负者如下工作:

  • 维护所有进程/线程需要访问的多个内部数据结构,缓存磁盘上的数据,方便快速的读取,同时在对磁盘文件的数据修改之前在这里缓存,重做日志的缓存等
    后台线程主要负责刷新内存池中的数据,保证缓冲池中的数据是最近的数据,此外将已修改的数据文件刷新到磁盘文件,通过保证数据库发生异常的情况下InnoDB能恢复发哦正常运行状态
后台线程
  • InnoDB存储引擎是多线程模型,因此其后台有多个不同的后台线程,负责处理不同的任务
Master Thread

是非常核心的后台线程,主要负责将缓冲池中的数据异步刷新的磁盘,保证数据是一致的,包括脏页的刷新,合并插入缓冲,undo页的回收等,

IO Thread
  • InnoDB存储引擎大量使用了AIO来处理写IO请求,这样可以极大的提到数据库的性能,而IO Thread主要是负责这些IO的请求的回调处理,InnoDB 1.0版本之前共有4个IO Thread,分别是write,read,insert buffer 和log IO thread,从InnoDB 1.0版本开始read Thread和write Thread增加到了4个,insert buffer thread,log thread还是各一个
purge Thread
  • 事物提交后,其使用的undo可能不在使用了,因此需要purge Thread来回收已经分配的undo页,InnoDB1.1版本之前是在master thread中完成的,从InnoDB1.1开始purge操作可以独立到单独的线程中完成。Innodb1.2版本,InnoDB支持多个Purge Thread,目的是加快undo页的回收
purge Cleanner Thread

是InnoDB1.2版本引入,其作用是将之前版本脏页的刷新操作都放到了单独的线程来完成,目的的减轻master Thread的工作

内存

缓冲池中缓冲的数据页类型有,索引页,数据页,undo页,插入缓冲,自适应哈希索引,InnoDB存储的锁信息,数据字典信息等
在这里插入图片描述
InnoDB存储引擎是基于磁盘存储的,并将其中的记录按照页的的方式进行管理,,因此可将其视为基于磁盘的数据库系统,在数据库系统中,由于CPU速度与磁盘速度之间的鸿沟,基于磁盘的数据库系统通常使用缓冲池技术提高数据库的整体性能

缓存池简单来说就是一块内存区域,通过内存的速度类弥补磁盘速度较慢的对数据库性能的影响,在数据库进行读页的操作,首先从磁盘读到的页放入缓冲池中,再下次再读相同的页时,首先判断该页是否在缓冲中,若在缓冲池中,该页在缓冲池中命中,直接读该页,否则读取磁盘上的页
对于数据库页的修改,则首先修改缓冲池中的页,然后一一定的频率刷新到磁盘,页从缓冲池刷新回磁盘的操作并不是在每次页发生更改是触发,而是通过一种checkpoint的机制刷新回磁盘,同样是为了提高数据库的整体性能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值