[后端与RDBMS核心技术1|青训营笔记]

17 阅读2分钟

这是我参与[第五届青训营]笔记创作活动的第11天 本文主要想对课堂上学的一些内容进行总结整理。今天学习的是关系型数据的核心技术中的SQL引擎及其分析。

一、本堂课重点内容

  1. SQL引擎

二、详细知识点介绍

SQL引擎

Parser

解析器一般分为词法分析、语法分析、语义分析等步骤

一条sql

UPDATE account_table SET balance = balance - '小目标' WHERE name = '抖音'

进行词法分析

抓取关键字:UPDATE/SET/WHERE
表列名:account_table/balance/name
常量:'小目标/抖音'
运算符:'=/-'
结束符:';'

进行语法分析以及语义分析

检查表列是否存在,常量是否合法

Optimizer

优化器,一个查询有多种执行方案,优化器可以选择一个最好的方案。

优化器最开始是基于规则的优化(RBO Rule Base Optimizer)

对于条件进行规则上的检查和化简。根据规则去执行操作,如规则为连接最小表,在连接ab、c三表时根据规则依次连接。

基于规则的Scan优化:扫描时依次根据唯一索引,普通索引进行扫描,最后才选择全表扫描。

基于代价的优化(CBO Cost Base Optimizer)

一个查询有多种执行方案,CBO会选择其中代价最低的方案去真正执行。
代价可以是时间长短,io,cpu,网络和内存的使用等。
在进行基于代价的查询时往往不仅仅要考虑单个查询的代价,还要考虑整体并发的查询的代价。

Executor

火山模型

函数栈层层进入调用,数据层层返回。每一个Operator调用Next操作,访问下层Opertor,获得下层Opertor返回的数据,经过计算将数据返回给上层。每个算子独立抽象实现,相互间没有耦合,逻辑结构简单,但每计算一条数据有多次函数调用开销,cpu效率不高。