MySQL基本框架概览
MySQL执行流程.png简单介绍下上图中的各组件的作用。
- Server:
- 连接器:身份认证和权限相关
- 分析器:包含此法分析和语法分析,生成一颗AST(抽象语法树)
- 查询缓存:查询时优先查询缓存(8.0后移除)
- 优化器:采用【RBO、CBO】方式优化sql
- 执行器:SQL实际执行组件
- Binglog:归档日志,执行器收到通知记录binlog,再调用存储殷勤接口
- 存储引擎:
- InnoDB:5.5以后默认存储引擎,支持事务
- MyISAM:5.5以前默认存储引擎,不支持事务
- MENORY:纯内存操作,效率高
分析器
以阿里巴巴的druid解析器为例,代表预发分析和词法分析的类分别是SQLParser和Lexer,并且Parser中拥有一个Lexer。经过词法分析和语法分析后,形成一颗抽象语法树(AST)。
优化器
RBO:Rule Based Potimizer 基于规则的优化器
RBO:RBO所用的判断规则是一组内置的规则,这些规则是硬编码在数据库的编码中的,RBO会根据这些规则去从SQL诸多的路径中来选择一条作为执行计划(比如在RBO里面,有这么一条规则:有索引使用索引。那么所有带有索引的表在任何情况下都会走索引)。目前Oracle默认是CBO,但仍然保留了RBO;MySQL只有CBO。
CBO:Cost Based Potimizer 基于成本的优化器
CBO:CBO会从目标诸多的执行路径中选择一个最小的执行路径作为执行计划。这里的成本它实际代表了MySQL根据相关统计信息计算出来目标SQL对应步骤的IO、CPU消耗。也就是意味着数据库里面的成本实际上就是对于执行目标SQL所需要的IO CPU等济源的一个估值,而成本值是根据索引、表、行的统计信息计算出来的。
网友评论