MySQL存储引擎:InnoDB体系结构


prtyaa
prtyaa 2024-01-27 23:45:37 50216 赞同 0 反对 0
分类: 资源
InnoDB体系结构: InnoDB存储引擎有多个内存块儿,这些内存块儿组成了一个大的内存池。作用如下: 1、维护所有进程/线程需要访问的多个内部数据结构 2、缓存磁盘上的数据,方便快速的读取,同时在对磁盘文件的数据结构修改之前在内存块里做一下缓存。 3、重做日志redo log缓冲

 

后台线程:

后台线程的作用是:
1、负责刷新内存池中的数据,保证缓冲池内的内存缓存的是最近的数据。
2、将已经修改的数据文件刷新到磁盘文件(保证异常的时候innodb能恢复到正常运行状态)

InnoDB存储引擎是多线程的模型,有多个不同的后台线程,处理不同的任务。

1、Master Thread

这是一个核心后台线程,主要负责将缓冲池里的数据异步刷新到磁盘中,保证数据的一致性,包括:脏页的刷新、合并插入缓冲、undo页的回收。

2、IO Thread

3、Purge Thread

4、Page Cleaner Thread


内存

1、缓冲池

允许有多个缓冲池实例,每个页根据hash平均值分配到不同的缓冲池实例中,以减少DB内部的资源竞争,增加DB的并发处理能力

缓冲池是存在于内存中的,而innodb是基于磁盘的,所以查询的时候通常使用缓冲池来提高数据库的性能。内存的速度 > 磁盘的速度的。在进行页的读取的时候,首先将磁盘读到的页存放在缓冲池中,下一次再读相同的页的时候,判断一下缓冲池里有没有,如果有直接取,如果没有那就去磁盘读,和redis一样。

而对于数据库中页的修改,首先要修改缓冲池中的页,然后再以一定的频率刷新(不是每次页发生更改时触发)到磁盘上(CheckPoint机制)

数据库缓冲池是一个很大的内存区域,存放了各种类型的页,InnoDB存储引擎使用LRU算法对这块区域进行管理。注意是使用的升级后的LRU算法,不是朴素的LRU算法

 

 

2、重做日志缓冲

InnoDB存储引擎的内存区域除了缓冲池外,还有重做日志缓冲(redo log buffer)InnoDB存储引擎首先将重做日志信息先放入到这个缓冲区,然后按照一定的频率(一般来说是每一秒)将其刷新到重做日志文件。

在通常情况下,8MB的重做日志缓冲池足以满足绝大部分应用,因为重做日志在三种情况下会将重做日志缓冲中的内容刷新到外部磁盘的重做日志文件中。

1、Master Thread每一秒将重做日志缓冲刷新到重做日志文件
2、每个事物提交时会将重做日志缓冲刷新到重做日志文件
3、当重做日志缓冲池剩余空间小于1/2时,重做日志缓冲刷新到重做日志文件

 

 

3、额外的内存池

如果您发现该资源为电子书等存在侵权的资源或对该资源描述不正确等,可点击“私信”按钮向作者进行反馈;如作者无回复可进行平台仲裁,我们会在第一时间进行处理!

评价 0 条
prtyaaL2
粉丝 1 资源 1949 + 关注 私信
最近热门资源
银河麒麟桌面操作系统备份用户数据  126
统信桌面专业版【全盘安装UOS系统】介绍  121
银河麒麟桌面操作系统安装佳能打印机驱动方法  114
银河麒麟桌面操作系统 V10-SP1用户密码修改  105
最近下载排行榜
银河麒麟桌面操作系统备份用户数据 0
统信桌面专业版【全盘安装UOS系统】介绍 0
银河麒麟桌面操作系统安装佳能打印机驱动方法 0
银河麒麟桌面操作系统 V10-SP1用户密码修改 0
作者收入月榜
1

prtyaa 收益393.62元

2

zlj141319 收益218元

3

1843880570 收益214.2元

4

IT-feng 收益209.03元

5

风晓 收益208.24元

6

777 收益172.71元

7

Fhawking 收益106.6元

8

信创来了 收益105.84元

9

克里斯蒂亚诺诺 收益91.08元

10

技术-小陈 收益79.5元

请使用微信扫码

加入交流群

请使用微信扫一扫!