1. Home
  2. Docs
  3. 高性能MySQL
  4. mysql体系架构
  5. MySQL的逻辑架构

MySQL的逻辑架构

MySQL的逻辑架构

对MySQL的组件如何协同工作有一个很好的了解将有助于您理解服务器。图1-1显示了MySQL架构的逻辑视图。最顶层包含的服务不是MySQL独有的。它们是大多数基于网络的客户机/服务器工具或服务器所需的服务:连接处理、身份验证、安全性等等。

file

第二层是事情变得有趣的地方。MySQL的大部分核心都在这里,包括用于查询解析、分析、优化、缓存和所有内置函数(例如日期、时间、数学和加密)的代码。跨存储引擎提供的任何功能都在这个级别上活动:例如,存储过程、触发器和视图。

第三层包含存储引擎。他们负责存储和检索MySQL中存储的所有数据。与NU/Linux上可用的各种文件系统一样,每个存储引擎都有自己的优缺点。服务器通过存储引擎API与存储引擎进行通信。此接口区分了存储引擎之间的差异,并使查询层的透明度大大提高。该图片包含一组具有“开始事务”或“获取具有此主键的行”等性能操作的低级别函数storageengines不解析SQL*或彼此通信;他们只是简单地响应来自服务器的请求。

连接管理和安全

每个客户端连接在服务器进程中都有自己的线程。该连接在单线程中执行,而单线程又驻留在NoneCore或PU中。服务器缓存线程,因此不需要为每个新连接创建和销毁线程。

当客户端(应用程序)连接到MySQL服务器时,服务器需要对其进行身份验证。身份验证基于用户名、原始主机和密码。X.509证书也可以跨安全套接字层(SSL)连接使用。客户机连接后,服务器将验证客户机是否具有每个查询组织的权限。

优化和执行

MySQL解析查询以创建内部结构(解析树),然后应用各种优化。这些优化可能包括

  • 写入查询、
  • 确定读取表的顺序、
  • 选择要使用的索引等。

您可以在查询中通过特殊关键字传递给优化器,影响决策过程。您也可以要求服务器解释各种优化方面。这让您知道服务器的决策,并为您提供参考点,以尽可能高效地重新处理查询、架构和设置。
优化器并不真正关心特定表使用的存储引擎,而是通过服务器优化器优化存储引擎。优化存储引擎的一些功能和某些操作的成本,以及表数据的统计信息。不过,在解析查询之前,服务器会查询查询缓存,该缓存只能存储SELECT语句及其结果集。如果任何一个查询与缓存中已有的查询相同,则服务器无需解析、优化、,或者执行查询,只需将存储的结果集传回即可!