【读书笔记】初探MySQL架构及存储引擎

本文是《高性能MySQL》第一章的读书笔记,主要介绍了MySQL的三层逻辑架构:客户端层、核心服务层和存储引擎层。解析了一个查询语句从接收、缓存检查、解析、优化到执行的全过程,强调了查询效率和权限验证的重要性。
摘要由CSDN通过智能技术生成

阅读《高性能MySQL》一书第一章《MySQL架构和历史》的笔记,才疏学浅,望奋斗路上道友指点迷津。

MySQL 逻辑架构

MySQL服务器逻辑架构图
MySQL服务器逻辑架构分为三层,最上层是客户端层,是大多数网络客户端、服务都具有的部分,它主要进行连接处理、授权认证、安全等;第二层是核心服务层,其服务包括查询解析、分析、优化、缓存以及所有的内置函数、所有的跨存储引擎的功能(如存储过程、触发器、视图等);第三层为存储引擎层,它负责MySQL的数据存储和提取,提供API与核心服务层交互,屏蔽了不同存储引擎的底层实现。

一个查询语句的执行过程

过程示例
① 客户端/服务器通信协议: 同一时刻,只能一端向另外一段发送数据,一旦一端开始发送消息,另一端要接收完整个消息才能响应它。服务端响应客户端请求时,客户端必须接收整个返回结果。因此在实际开发中,应该尽量保持查询简单且只返回必须的数据。
② 查询缓存(类似于HashMap的结果集,Key为完整SQL字符串,且区分大小写、空格等因素):在MySQL查询缓存打开的情况下(可通过show variables like “%cache%” 查看 query_cache_type 是否为ON状态),MySQL在解析一个语句之前会判断是否命中缓存中的数据,如果命中则不会解析、不会生成执行计划、更不会执行,而是直接将缓存中的数据在满足权限的情况返回给客户端。当与表相关的数据发生变化(写操作)时,与此表相关的缓存均会失效,且读操作也会造成一定的系统消耗:解析前的缓存检查、若查询结果可以缓存,那么会存在写入缓存的操作;
③ 解析器:主要是词法解析以及语法分析;词法解析主要是讲整个查询分解为多个元素,如 SELECT 关键字识别出来这是一条查询语句, 字符串 XXTable 是一个表名等;语法分析是根据语法规则,判断SQL是否满足,若不满足,会报错You have an error in your SQL syntax; 解析器最终的执行结果是解析树,提供给优化器使用。
④ 优化器:根据解析树,对其进行各种优化,包括重写查询、表的读取顺序、选择合适索引等
⑤ 执行器:执行开始之前,会先判断是否有操作权限,若没有,会抛出相关异常。如果有权限,则打开表的时候,根据表的引擎定义,使用引擎提供的API接口取数据。

占位

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值