首页 > 数据库

1.1. MySQL逻辑架构

时间:2009-04-16 20:21:25  作者:HopingWhite  我要投稿
Linux初探欢迎您的投稿,投放方法请点击这里查看,我们会定期赠送精美小礼品给优秀的投稿作者。海纳百川 取则行远!LinuxGoo欢迎您的到来。
1.1. MySQL逻辑架构心里记着一张MySQL组件关系图对于理解MySQL服务器有很大帮助。图1-1展示了一张MySQL架构的逻辑视图。最上面一层包含的服务不是MySQL所独有的。它......

1.1. MySQL逻辑架构

心里记着一张MySQL组件关系图对于理解MySQL服务器有很大帮助。图1-1展示了一张MySQL架构的逻辑视图。最上面一层包含的服务不是MySQL所独有的。它是多数基于网络的客户端/服务器工具或者服务所需要的:连接处理、鉴权、安全等等。

image

图1-1 MySQL逻辑架构图

从第二层开始,事情才变得有趣起来。MySQL的重要组件都在这部分,包括查询的解析、分析、优化、缓存以及其他所有的内置函数(如日期函数,时间函数,数学函数以及加密函数等)。另外所有存储引擎所共有的功能也都在这一层,比如存储过程、触发器、视图等。

第三层包括了存储引擎。存储引擎负责在MySQL中存储和获取数据。如同GNU/Linux的众多文件系统一样,这些存储引擎同样有着自己的优势与缺点。服务器通过存储引擎API来与存储引擎进行交互。这个接口隐藏了各个存储引擎之间实现上的差异,并且很大程度上使得存储引擎与查询层分开。这个API包括了许许多多的底层函数来执行诸如“开始一个事务”或者“获取包括这个主键的行”等操作。存储引擎不解析SQL(有一个例外是InnoDB存储引擎中解析外键定义时还需要解析SQL,因为MySQL在查询层没有对外键进行实现。),也不和其他存储引擎进行直接交互,它们只是简单的响应服务器的请求。

1.1.1. 连接管理与安全

在服务器进程内每个客户端连接会得到一个单独的线程。这个连接的所有查询都在那个线程内执行,而这些线程轮流地驻留在CPU或者其中一个核上(多核情况)。服务器会缓存创建的线程,因此不需要为每个新的连接都创建或者销毁线程。(MySQL AB计划在未来的服务器版本中将连接与线程分开)

当客户端应用连接到服务器时,服务器需要对它进行鉴权。鉴权是基于用户名、客户端地址以及密码的。X.509的证书也可以用在基于安全套接字层(SSL)的连接之上。当一个客户端连接到服务器后,服务器会验证客户端是否有权限执行它所发出的每个查询,(比如检查用户是否有权限在world数据库上的country表上执行一个SELECT语句。)在第十二章,我们将会详细介绍这部分的内容。

如果您需转载 1.1. MySQL逻辑架构,请注明来自LinuxGoo.com,其版权归原作者所有。请广大网友留言时遵纪守法,使用文明用语。如果您在应用中有什么问题,请在下面留言,我们会尽快解答。
来顶一下
近回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
相关文章
栏目热门