【MySQL-存储引擎】MySQL存储引擎InnoDB的体系架构

InnoDB体系架构图

在这里插入图片描述

后台线程

    InnoDB是多线程模型,因此后台有多个不同的后台线程来处理不同的任务。

1、Master Thread

    Master Thread 听名字就知道是一个非常核心的线程,主要负责将缓冲池中的数据异步刷新到磁盘,保证数据的一致性。

2、IO Thread

    InnoDB中大量使用AIO(Async IO/异步非阻塞IO)来处理IO请求,这样可以极大提高数据库性能。而这些IO Thread的工作就是负责IO请求的回调(call back)处理。
    下面是MySQL的IO Thread。

--------
FILE I/O
--------
I/O thread 0 state: wait Windows aio (insert buffer thread)
I/O thread 1 state: wait Windows aio (log thread)
I/O thread 2 state: wait Windows aio (read thread)
I/O thread 3 state: wait Windows aio (read thread)
I/O thread 4 state: wait Windows aio (read thread)
I/O thread 5 state: wait Windows aio (read thread)
I/O thread 6 state: wait Windows aio (write thread)
I/O thread 7 state: wait Windows aio (write thread)
I/O thread 8 state: wait Windows aio (write thread)
I/O thread 9 state: wait Windows aio (write thread)
Pending normal aio reads: [0, 0, 0, 0] , aio writes: [0, 0, 0, 0] ,
 ibuf aio reads:, log i/o's:, sync i/o's:
Pending flushes (fsync) log: 0; buffer pool: 0
1123 OS file reads, 206 OS file writes, 34 OS fsyncs
0.05 reads/s, 16384 avg bytes/read, 0.00 writes/s, 0.00 fsyncs/s

3、Purge Thread

    事务被提交后,其所使用的undolog可能不会再需要,所有需要Purge Thread来回收已经使用并分配的undo页。

4、Page Cleaner Thread

    脏页刷新线程。

内存

1、缓冲池(缓存)

在这里插入图片描述

    由于CUP的运算速度和磁盘相差太大,所有MySQL就在内存中制作了缓存(MySQL8已经把缓存移除了)。在数据库读取操作时,首先会把磁盘上的数据读取到缓存,这也操作称之为把页“FIX”到缓冲池中。如果又有线程读取该数据就直接从缓存中获取。修改数据时先会修改缓冲池中的页,然后再以一定的频率刷新到磁盘上(通过Checkpoint机制刷新)。

2.LRU List、Free List 和 Flush List

    InnoDB如何管理缓冲池?通常来说是通过LRU(Latest Recent Used)算法进行管理。

3.重做日志缓冲

    重做日志是为了实现事务的持久性所存在的。InnoDB首先将重做日志信息先放入这个缓冲区,然后按一定频率刷新到重做日志文件中。

4.额外内存池

    在InnoDB存储引擎中,对内存的管理是通过一种称为内存堆的方式进行的。在对一些数据结构本身的内存进行分配时,需要从额外的内存池中进行申请,当该区域的内存不够时,会从缓冲池进行申请。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值