MySQL读书笔记-逻辑架构

MySQL逻辑架构

第一层

连接处理,授权认证,安全管理等。

  • 连接管理

每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU中运行,服务器会负责缓存线程(例如,使用线程池,可以使用线程池中少量的线程来服务大量的连接),因此,不需要为每一个新建的连接创建和销毁线程。

  • 安全性

当客户端连接到MySQL服务器时,服务器需要对其进行认证。认证基于用户名,原始主机信息和密码。如果使用了安全套接字(SSL)的方式连接,还可以使用X.509证书认证。一旦客户端连接成功,服务器会继续验证该客户端是否具有执行某个特定查询的权限。

第二层

大多数MySQL的核心功能都在这一层,包括,查询解析,分析,优化,缓存,以及所有的内置函数(例如,日期,时间,数学,加密函数等),所有跨存储引擎的功能都在这一层实现:存储过程,触发器,视图等。

  • 优化与执行

MySQL会解析查询,并创建内部数据结构(解析树),然后对其进行各种优化,包括,重写查询,决定表的读取顺序,以及选择合适的索引等。同时,用户也可以通过特殊的关键字提示优化器,影响它的决策过程。可以请求优化器解释(explain)优化过程的各个因素,使用户可以知道服务器是如何进行优化决策的,并提供一个参考基准,便于用户重构查询和schema,修改相关配置,使应用尽可能高效运行。

优化器不关心表使用的是什么存储引擎,但存储引擎对于优化查询时有影响的。优化器会请求存储引擎提供容量或某个具体操作的开销信息,以及表数据的统计信息等。

对于SELECT语句,在解析查询之前,服务器会先检查查询缓存(Query Cache),如果能够在其中找到对应的查询,服务器就不必再执行查询解析,优化和执行的整个过程,而是直接返回查询缓存中的结果集。

第三层

包含了存储引擎。存储引擎负责MySQL中数据的存储和提取。和GNU/Linux下的各种文件系统一样,每个存储引擎都有它的优势和劣势。服务器通过API与存储引擎进行通信,这些接口屏蔽了不同存储引擎之间的差异,使得对上层透明。通常存储引擎不会去解析SQL(InnoDB会解析外键定义),不同存储引擎之间也不会相互通信,而只是简单地响应上层服务器的请求。

参考 
[1] 高性能MySQL,第三版

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值