CSDN 数据库Meetup|OceanBase 技术专家讲述 SQL 的一生

本文深入探讨OceanBase数据库中SQL的一生,从接收SQL开始,详细讲解SQL执行流程,包括快速参数化、查询改写、语义分析、查询优化、代码生成、执行引擎等阶段。此外,文章还介绍了OceanBase的计划缓存机制,包括Force模式和Exact模式,以及计划获取、更新过程,帮助读者理解SQL执行和优化原理。
摘要由CSDN通过智能技术生成

高手云集,群英荟萃。

2022年3月19日 CSDN 数据库沙龙上,众多技术专家汇集在数据库线上 Meetup 直播现场,来自 OceanBase 技术专家田逸飞(花名:义博)为大家精彩讲述了 OceanBase SQL 的一生。

本次分享从一条 SQL 被数据库接收开始,一直到执行结束,讲述了数据库中的整体执行流程,以及了解 OceanBase 如何让同一类 SQL 共享执行计划,通过这条SQL的一生,帮助大家更好的了解和掌握 SQL 执行流程和计划缓存两大模块。

一、SQL 执行流程

1.SQL 执行流程介绍

从图中我们可以看到,当用户从 SQL 发送到 OBServer 后,会先由 OBServer 对其进行快速参数化,参数化后的 SQL 进入 Plan Cache 尝试命中计划缓存。当找到一个可以使用的计划,则直接将计划交由 SQL 的执行引擎去执行,并将执行完成后的结果返回给用户;如果没有找到可以使用的计划,则会重新为此 SQL 生成计划,完整地执行 SQL 的Parser、Resolver、Transformer、Optimizer、Code Generator 解析流程,然后生成一个可用的物理执行计划,并交由执行引擎执行,同时此计划会被加入到计划缓存,以便后续的 SQL 重新使用,详见下图。

2.查询改写

如下图所示,流程中的 Parser 主要负责语法词法的解析,它会将用户输入的 SQL 基于 lax 和 yacc 生成一个 Parse Node Tree,如下图右侧所示,它将用户的 SQL 拆成了一个树状结构,同时做了一些语法解析。

3.语义分析

Resolver 负责对 Parse Node Tree 做语义的分析,主要包括语句的解析、中缀表达式的生成、表达式的类型推导等,并最终将其转化成 OceanBase 在代码中更易于操作的数据结构

4.查询改写

Transformer 会在保证 SQL 执行结果相同并且正确的情况下对 SQL 做等价变换。目前在 OceanBase 中存在两类改写。

  • 基于
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值