没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Mysql InnoDB 存储引擎详解
介绍省了……………….
2.2 InnoDB 体系架构
体系架构
通过第 章我们了解了 的体系结构,现在可能你想更深入地了解 的架构模型。图 简单显
示了 的存储引擎的体系架构。 有多个内存块,你可以认为这些内存块组成了一个大的内存
池,负责如下工作:
维护所有进程线程需要访问的多个内部数据结构。
缓存磁盘上的数据,方便快速地读取,并且在对磁盘文件的数据进行修改之前在这里缓存。
重做日志()缓冲。
图 体系结构
后台线程的主要作用是负责刷新内存池中的数据,保证缓冲池中的内存缓存的是最近的数据。此外,将已修改
的数据文件刷新到磁盘文件,同时保证在数据库发生异常情况下 能恢复到正常运行状态。
后台线程
由于 是多进程的架构( 下除外),因此可以通过一些很简单的命令来得知 当前运行
的后台进程,如 命令。一般来说, 的核心后台进程有
!"#$、、%&、'&!、#(、( 等。
很多 ' 问我, 存储引擎是否也是这样的架构,只不过是多线程版本的实现后,我决定去看
的源代码,发现 并不是这样对数据库进程进行操作的。 存储引擎是在一个被称做 )*
*+ 的线程上几乎实现了所有的功能。
默认情况下, 存储引擎的后台线程有 , 个—- 个 *+, 个 )**+, 个锁(.)
监控线程, 个错误监控线程。*+ 的数量由配置文件中的 /0100*+ 参数控制,默认
为 -,如下所示。
)2+/**34%5
666666666666666666666666666666666666666666666666666666
$ 7
()7
**37
8888888888888888888888888888888888888
99,:7;-79;((($&<$#<$
8888888888888888888888888888888888888
#=3*>)*+*?9
@A
*+9**7*>3*B*/3C*+D
*+**7*>3*B*+D
*+**7*>3*B*+D
*+;**7*>3*B**+D
#)79E*79E
/3>79EF79EF79
#G3+B>D795/3C 79
-?1E?H1*E->
999E9=/*E999*E999>
A(@((($&<$#<$
8888888888888888888888888888
*B999D
可以看到,- 个 线程分别是 */3C*+、*+、*+、**+。在
3I 平台下,*+ 的数量不能进行调整,但是在 平台下可以通过参数
/0100*+ 来增大 *+。#3 版本开始增加了默认 *+ 的数量,默认
的 *+ 和 **+ 分别增大到了 - 个,并且不再使用 /0100*+ 参数,而是分
别使用 /000*+ 和 /0*00*+ 参数,如下所示。
)2+=/.F/0=F4%5
666666666666666666666666666666666666666666666666666666
J/0)7/0=
J379H
*B999D
)2+=/.F/0K0*+F4%5
666666666666666666666666666666666666666666666666666666
J/0)7/000*+
J37-
666666666666666666666666666666666666666666666666666666
J/0)7/0*00*+
J37-
*B999D
)2+/**34%5
666666666666666666666666666666666666666666666666666666
$ 7
()7
**37
8888888888888888888888888888888888888
99,:7??7H((($&<$#<$
8888888888888888888888888888888888888
#=3*>)*+*;H
@A
*+9**7*>3*B*/3C*+D
*+**7*>3*B*+D
*+**7*>3*B*+D
*+;**7*>3*B*+D
*+-**7*>3*B*+D
*+?**7*>3*B*+D
*+H**7*>3*B**+D
*+,**7*>3*B**+D
*+L**7*>3*B**+D
*+:**7*>3*B**+D
#)79E*79E
/3>79EF79EF79
#G3+B>D795/3C 79
;:L?H1E,L;9:-,1*EH9:9>
E9=/*E999*E999>
A(@((($&<$#<$
8888888888888888888888888888
*B99D
在 下,我们还可以通过 J3*3 来调试 ,并设置断点来观察所有的线程信息,如图
所示。
图 下 存储引擎的线程
内存
存储引擎内存由以下几个部分组成:缓冲池(/3C )、重做日志缓冲池(/3C)
以及额外的内存池(*)) ),分别由配置文件中的参数 /0/3C0 0M 和
/00/3C0M 的大小决定。以下显示了一台 数据库服务器,它将 存储引擎的缓
冲池、重做日志缓冲池以及额外的内存池分别设置为 ?%、L 和 L(分别以字节显示)。
)2+=/.F/0/3C0 0MF4%5
666666666666666666666666666666666666666666666666666666
J/0)7/0/3C0 0M
J37H--9999
*B999D
)2+=/.F/00/3C0MF4%5
666666666666666666666666666666666666666666666666666666
J/0)7/00/3C0M
J37L;LLH9L
*B999D
)2+=/.F/0*0))0 0MF4%5
666666666666666666666666666666666666666666666666666666
J/0)7/0*0))0 0M
J37L;LLH9L
*B999D
缓冲池是占最大块内存的部分,用来存放各种数据的缓存。因为 的存储引擎的工作方式总是将数据库
剩余16页未读,继续阅读
资源评论
luib88
- 粉丝: 0
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C语言的系统服务框架.zip
- (源码)基于Spring MVC和MyBatis的选课管理系统.zip
- (源码)基于ArcEngine的GIS数据处理系统.zip
- (源码)基于JavaFX和MySQL的医院挂号管理系统.zip
- (源码)基于IdentityServer4和Finbuckle.MultiTenant的多租户身份认证系统.zip
- (源码)基于Spring Boot和Vue3+ElementPlus的后台管理系统.zip
- (源码)基于C++和Qt框架的dearoot配置管理系统.zip
- (源码)基于 .NET 和 EasyHook 的虚拟文件系统.zip
- (源码)基于Python的金融文档智能分析系统.zip
- (源码)基于Java的医药管理系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功