MySQL服务器逻辑架构

 

MySQL的架构可以在多种不同的场景中应用并发挥好的作用,既可以嵌入到应用程序中,也可以支持数据仓库、内容索引和部署软件、高可用的冗余系统。存储架构设计将查询处理以及其他系统任务和数据的存储/提取相分离。

 

  1. 第一层包括连接处理、授权认证、安全。每一个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只会在某个CPU核心运行。服务器负责缓存线程,因此不需要为每一个新建的连接创建或者销毁线程。当客户端应用连接到MySQL服务器时,服务器需要对其进行认证。认证基于用户名、原始主机信息和密码。如果使用安全套接字的方式连接,还可以使用证书认证。一旦客户端连接成功,服务器会继续验证该客户端是否具有执行某个特定查询的权限。
  2. 第二层包括查询解析、分析、优化以及所有的内置函数(日期、时间、数学和加密函数),存储过程、触发器、视图。MySQL会解析查询,并创建内部数据结构,然后对其进行各种优化,包括重写查询、决定表的读取顺序,以及选择合适的索引。用户可以通过特殊的关键字提示(hint)优化器,影响决策过程。也可以通过优化器explain优化过程的各个因素,使用户可以知道服务器是如何进行优化策略的。优化器并不关心表使用了什么存储引擎,但存储引擎对于优化查询是会有影响的。例如某种存储引擎的某种索引对于一些特定的查询有优化。对于SELECT语句,在解析查询之前,服务器会先检查Query Cache(查询缓存),如果可以在其中找到对应的查询,服务器就不必在执行查询解析、优化和执行的整个过程,而是直接返回查询缓存中的结果集。
  3. 第三层包括存储引擎。存储引擎负责MySQL中数据的存储和提取。服务器通过API与存储引擎进行通信,这些接口屏蔽了不同存储引擎之间的差异,使得这些差异对上层的查询过程透明。

MySQL整个查询执行过程:

  1. 客户端同数据库服务层建立TCP连接。
  2. 客户端向MySQL服务器发送一条查询请求。
  3. 连接线程接收到SQL语句之后,将语句交给SQL语句解析模块进行语法分析和语义分析。
  4. 先看查询缓存中是否有结果,如果有结果可以直接返回给客户端。如果查询缓存中没有结果,就走另外一条路,解析之后进行查询的优化。
  5. MySQL调用引擎的API来执行查询,获取数据后返回客户端,关闭连接,释放连接线程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值