现在的位置: 首页 > 综合 > 正文

MySQL学习之路(六):MySQL数据库的基础架构【转】

2013年10月08日 ⁄ 综合 ⁄ 共 2570字 ⁄ 字号 评论关闭

 

慢慢体会到这么一个道理,基础决定你的深度,深度将会反应你未来的方向。学习技术我们应该按照这么一个思路,开始我们尽可能多的对它的原理做一定程度的了解,这样我们在实际应用中会有更多的体会,同时我们操作的目的性也会更加明确,查找问题的时候而不是单凭经验去做,更多的时候我们会根据对它结构原理的理解程度去判断分析从而得到最终的解决。

不要在学一个新东西的时候,还是很“本能”地去试图,通过安装它来开始我们的第一步;磨刀不误砍柴功。言归正传,开始我们MySQL体验。

mysqlarch

噗嗤,这么大一个图暴露在你的面前,很兴奋吧!这就是MySQL数据库的一个详细的基础架构图,它可以分为三层:第一个浅色的模块是应用层,中间四个深色的模块为逻辑层,最下面那个深色模块右侧的圆柱体是它的物理层。接下来让我们更进一步去走进“她”,了解每部分的功能。

 

1.Application Layer

MySQL的应用层提供各种用户对数据库的访问,也就是为数据库提供一个访问接口,让外部世界与数据连接起来,起一个桥的作用。实际生活中,我们会遇见很多不同功能桥,最初简陋的独木桥,现在的过街天桥,跨江的公路桥铁路桥,它们都各施其职。而在MySQL应用层中也有这么三种用户:administrators,clients and query users。Administrators可以使用管理型的接口和工具对数据库进行维护操作;比如:只有管理员用户才有权使用mysqladmind去关闭数据库服务,以及对数据库进行创建和彻底删除操作,还有一些分析调优的工具isamchk 和myisamchk、对数据库进行备份恢复操作的mysqldump,也都需要在administrators的权限才能执行。Clients是通过一些接口或是工具利用MySQL APIs对数据库进行访问。Query users是通过查询接口,就是mysql这个命令,去连接数据库,近而发出一些查询请求。

2.Logical Layer

逻辑层是MySQL数据库中核心的功能层,它主要有三大块:查询处理(Query Processor)、事务管理(Transaction Management)、恢复管理(Recovery Management)和存储管理(Storage Management)。

    2.1 Query Processor

当用户希望对底层数据库进行查看和处理操作,在这期间发生的查询都会被查询处理器进行提取并最优化以后执行输出,接下来我们说说整个的流程。

当用户出一个请求,查询处理器(QueryProcessor)会先去判断请求的类型,也就是前面我们说的,由谁发出的,如果是admin,就由DDL编译器(DDL Compiler)编译后,直接由执行引擎(Excution Engine)对底层数据库进行操作。如果是client,那么,先通过内部DML预编译器(DDL Precompiler)将用户的命令转化成相应的查询语句,接下来查询分析器(Query Parser)将语句分解成解析书的结构,以便接下来的组件可以理解,预查询编译器(Query Preprocesor)会检查这个sql语句是否正确有效,然后安全管理器(Security/Integration Manager)将会核实该用户是否具有对该数据库有接入访问的权限,这些都确认之后,会由查询优化器(Query Optimizer)对sql查询最优化执行,正因为有了这个机制,执行引擎(Excution Engine)在进行查询处理时可以尽可能快速地完成,这也是MySQL数据库性能优于其他的数据库系统的原因。

    2.2 Transaction Management

事务处理分为两个部分:事务管理器(Transaction Manager)和并发控制器(Concurrency-Control Manager),它们各自发挥着自己的多种职能。TM负责确保事务的自动化地记入日志和执行,还有解析死锁以及运行COMMIT和ROLLBACK SQL命令;CCM通过锁定机制确保事务分别独立的运行。

    2.3 Recovery Management

回复管理也有两部分构成:日志管理器(Log Manger)和恢复管理器(Recovery Manager)。这两个功能从字面上就很好理解,LM负责纪录对数据库的每一项操作,RM则负责将数据库恢复到最近一次稳定状态。

   2.4 存储管理(Storage Management)

在存储管理中,缓冲器管理(Buffer Manager)着内存和虚拟存储中的缓冲纪录,同时资源管理器(Resource Manager)和存储管理器(Storage Manager)也一起协同它完成对物理层数据库的操作。

3.Physical Layer

 物理层其实就是实际数据的存放地,比如:数据文件、日志文件、统计资料、原数据、索引等等。

到此,以上就是整个MySQL数据库理论性的结构 ,我们已经对MySQL数据库的内部结构有了一个初步的认识,原来就是这样。接下来就可以通过一些具体的实践操作,进一步深入体会这些部分在MySQL数据库中的功能特性。、

 

几点说明:

1. 在功能上,MySQL是基于组件的模块化设计,但事实上,MySQL既不是严格基于组件也非真正的模块化

2. MySQL的源代码中混合使用C和C++,而且面向过程的代码中使用了很多类,这些类仅是负责数据类型的表示,没有太多体现面向对象编程的思想

3. MySQL系统是用基于函数库和数据结构的方式整合代码的

4. MySQL的结构师一个类似与子系统组成的架构,子系统通过紧密和高效的配合,组成一个可靠的数据库系统

 

总结一下,MySQL包含以下系统和核心库

网络连接和网络通信协议子系统

线程,进程和内存分配子系统

查询解析和查询优化子系统

存储引擎接口子系统

各类存储引擎子系统

安全管理子系统

日志子系统

其他系统——如复制功能,错误功能

mysys核心库文件

 

 

 

DDL,DML,DCL,TCL的含义:http://blog.csdn.net/lengyuhong/archive/2010/10/26/5966187.aspx

原始出处:http://www.mysqlsystems.com/2009/03/mysql_basic_architecture.html

抱歉!评论已关闭.