mysql 优化器 cost评估_MySQL优化器

1e02ce1179e5

MySQL架构图

讲到MySQL,就绕不开他的架构图。MySQL是一个经典的C/S架构。服务器这边分两层:第一层是Server层,第二层是存储引擎。Server层处理主要的业务操作流程,但不关心具体的存储逻辑。存储逻辑由存储引擎层去实现,常见的存储引擎有InnoDB(默认的)、MyISAM、Memory等。

Server层的连接器负责管理Client的连接、权限检证。客户端的查询请求过来的时,会将查询的SQL语句作为key,去看一下查询缓存里有没有,如果有的话,就直接返回了。如果没有的话,再走正常查询路径。查询缓存用处不是很大,因为如果对表有任何的更新操作,对这个表的所有缓存都有失效,所以这个模块在MySQL8.0之后就直接删掉了。

分析器主要是对SQL语句做一些词法分析、语法分析。判断SQL语句是否合法。

优化器是通过一些计算,生成最佳的执行计划,后面会再细讲。

执行器根据上一步生成的执行计划,调用引擎的API,得出结果,然后返回。

1e02ce1179e5

优化器

优化器主要分为两个阶段,首先是逻辑查询优化,这个阶段主要是使用关系代数对SQL语句做一些等价变换,对条件表达式进行等价谓词重写、条件简化,对视图进行重写,对子查询进行优化,对连接语义进行了外连接消除、嵌套连接消除等。

其次是物理查询优化。物理查询优化一般分为两种:

基于规则的优化(RBO,Rule-Based Optimizer)

这种方式主要是基于一些预置的规则对查询进行优化。

基于代价的优化(CBO,Cost-Based Optimizer)

这种方式会根据模型计算出各个可能的执行计划的代价,然后选择代价最少的那个。它会利用数据库里面的统计信息来做判断,因此是动态的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值