前言:在写这篇mysql体系结构之前,脑袋里面想了半天它与oracle的体系结构的区别,本来以为mysql是简单的,比起oracle来,但是认真梳理,查找资料,发现并非如此。先来看一下mysql的体系结构图。
1.Mysql 架构图
从图1.1 可以发现,Mysql 由以下几个部分组成:
>>Connection Pool 连接池组件
>>Management Service & Utillties 管理服务和工具组件
>>SQL Interfaqce SQL接口组件
>>Parser Query 查询分析器组件
>>Optimizer 优化器组件
>>Caches & Buffers 缓冲区组件
>>Pluggable Storage Engines 插件式存储引擎
>>Physics file 物理文件
在了解mysql的体系结构之前,还是要做一些相关的知识疏导,什么是数据库?什么是数据库实例?
2.数据库与数据库实例
2.1数据库
物理操作系统文件或其他形式文件类型的集合(持久性数据的某些集合组成)。在Mysql里面,数据库文件可以是frm、myd、myi、ibd结尾的文件。当使用NDB引擎时,数据库的文件可能不是操作系统上的文件,而是存放于内存之中的文件,但是定义仍然不变。
2.2数据库实例
由数据库后台进程/线程以及一个共享内存区组成。共享内存可以被运行的后台进程/线程所共享。需要记住的是,数据库实例才是真正用来操作数据库文件的。
在Mysql中,实例和数据库的通常关系是一一对应的,即一个实例对应一个数据库,一个数据库对应一个实例,但是,在集群情况下可能存在一个数据库可被多个实例使用的情况。
Mysql被设计为一个单进程多线程架构的数据库,这点与SQL Server比较类似,但是与Oracle多进程的架构有所不同(Oracle的Windows版本也是单进程多线程的架构)。这也就是说,MySQL数据库实例在系统上的表现就是一个进程。
小结:
打个比喻:一筐碎石头,百来块,我们离它们很远,无法直接去拿取,那怎么办呢?那就制作一个工具吧,一个竹竿上面套一个口袋,我们可以用这个竹竿上的口袋去套取石头。碎石头就是存取的数据,竹竿上的口袋就是数据库管理工具,诸如Oracle,Mysql,Sql Server等等。而我们用工具去取石头,借用的各种力就是数据库实例。这里纯取个人理解,解释的不好,请大家见谅。。
小注解:一个小的知识点,但是理解起来还是费了不小劲,有点伤神呀,所以决定慢慢来理清,化繁为简,思而存之。
待续。。。。