mysql内部由什么构成_数据库系统的逻辑结构由哪些部分组成?

数据库系统几乎涉及计算机科学的方方面面,可谓包罗万象、纷繁复杂。想说清楚它的所有组成并不容易,而且不同数据库的实现也各不相同。目前最为成熟且得到广泛应用的非 关系型数据库系统 莫属了,几乎每一家互联网或传统软件企业都能看到它的影子。因此以关系型数据库为例阐释数据库系统的逻辑组成再合适不过了。

先上张图吧:

这是我画的一张简略图,包含了数据库一些关键的逻辑模块,如果发现有错误望指教。当然还有很多没有囊括进来。

数据库系统的组成大概可以分为这五块吧。

客户端连接管理模块。顾名思义,管理用户连接。比如客户端通过JDBC或ODBC连接数据库,并发送SQL请求。除此之外,该模块还应记住客户端的连接状态,以便返回数据或控制信息。

SQL解析与执行模块。SQL的全称是Structured Query Language,清楚的表明了它是一种抽象的语言。跟高级编程语言一样,需要解析成数据库系统理解的形式。SQL语句根据功能可以分为三类:DML, DDL和DCL。DML包含最常用的增删改查,DDL主要用于改变表的结构(如create/drop/Add等),DCL是数据库控制语言,可以添加更改用户权限等。显然,数据库在大部分时间里都在接受DML请求,为了加快这类SQL的执行速度,针对它们的优化必不可少。最后,生成执行计划,交给存储引擎去处理数据。

存储引擎。这一模块跟磁盘打交道,主要控制数据的读写,旨在让读写更高效、更均衡、更稳定、占用更少的磁盘空间、实例崩溃后数据能快速恢复。此外,关系数据库中相当重要的概念----事务,也是由存储引擎实现的。

进程管理模块。数据库系统不可能只服务一个客户端,当大量的连接涌入时,如何高效的管理这些连接是这个模块的首要任务。举个例子,MySQL会为每个连接分配独立的线程去处理任务,当线程数达到上限后,数据库会停止建立连接(准入控制)。当然频繁的建立和销毁线程并不是高效的选择,一些数据库产品通过实现线程池来减少这部分开销,增大并发量。

Utilities。这部分是一些通用工具,也是数据库系统必不可少的。比如内存管理器可以有效的管理内存,数据库作为一个庞大的系统,太多地方需要申请大块内存,高效地使用内存是数据库稳定运行的关键。此外,元数据的管理,主备复制服务,benchmark、可视化管理工具等也都是不可或缺的。

以上只是一个非常简单的总结,推荐阅读Joseph 的 Architecture of Database,讲得较为详细。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值