mysql 预处理器_mysql架构详解

本文详细介绍了Mysql的架构,包括查询缓存、解析器、预处理器、查询优化器和存储引擎的功能。预处理器负责语义解析,确保表和字段存在。Mysql的存储引擎如InnoDB支持事务和行级锁,提高并发性能。此外,文章还讨论了常用存储引擎的特点,如MyISAM、InnoDB、Memory和Archive。
摘要由CSDN通过智能技术生成

Mysql架构讲解

一、从一条查询语句的执行顺序来看mysql架构的组件

b44f857a9bdedcd6a2d53a3971fae7db.png

二、逐个分析一下每一个组件

1、查询缓存

Mysql的缓存机制比较苛刻,每一次查询的语句必须一摸一样才可以调取到缓存的数据,多一个空格也是不可以的。而且,表里面的任何一条数据发生变化,缓存都会失效,对于频繁更新的表来说不合适。推荐使用ORM框架进行缓存,或者是直接使用独立的缓存服务,比如:redis

Mysql8.0中已经将mysql的缓存机制移除,所以可以看出它的可用性。

2、解析器

分为词法解析和语法解析

(1)、词法解析:

就是把一个简单的sql打碎成一个个单词,判断每个符号是什么类型,从哪里开始那里结束。

(2)、语法解析

对sql进行一些语法的检查,比如单引号有没有闭合,根据语法规则,根据sql语句生成一个数据结构,我们把它叫做解析树。

比如语句 select name from user where user_id = 1;

它的解析树如下:

6efd04b0af83a3fd95777fd8d535eea1.png

3、预处理器

主要用于语义解析:

如果写了一个语法完全正确的树,但是表或者字段不存在,还是在解析的时候报错,因为解析器处理之后,还有一个预处理器,它用来判断解析树的语义是否正确,也就是表名和字段名是否存在。预处理后生成一个新的解析树。

4、查询优化和查询执行计划

查询优化器根据解析树生成不同的执行计划,然后选择出来最优的一种执行计划。

比如多表联合查询选择拿一张表作为基准,有多个索引时选择使用哪个索引,移除1=1的恒等式等等。优化器最终会把解析树变成一个执行计划,执行计划也

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值