首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【赵渝强老师】OceanBase OBServer节点的SQL层

【赵渝强老师】OceanBase OBServer节点的SQL层

原创
作者头像
赵渝强老师
发布2025-06-26 07:56:55
发布2025-06-26 07:56:55
770
举报
文章被收录于专栏:OceanBaseOceanBase

OceanBase OBServer节点的SQL层将用户的SQL请求转化成对一个或多个Tablet的数据访问。SQL层会按照以下顺序经过一系列组件来处理一个SQL:

代码语言:powershell
复制
Parser -->Resolver-->Transformer-->Optimizer-->CodeGenerator-->Executor。

视频讲解如下:

其中:

  • Parser:该组件负责词法或语法解析。将用户的SQL分成一个个的"Token",并根据预先设定好的语法规则解析整个请求,转换成语法树(Syntax Tree)。

  • Resolver:该组件负责语义解析。根据数据库元信息,将SQL请求中的Token翻译成对应的对象(例如库、表、列、索引等),生成的数据结构叫做Statement Tree。

  • Transformer:该组件负责逻辑改写。根据内部的规则或代价模型,将SQL改写为与之等价的其他形式,并将其提供给后续的优化器做进一步的优化。

  • Optimizer(优化器):该组件根据数据库的统计信息为SQL请求生成最佳的执行计划。SQL层的执行计划分为本地、远程和分布式三种:

1. 本地执行计划:只访问本服务器的数据。  2. 远程执行计划:只访问非本地的一台服务器的数据。  3. 分布式执行计划:会访问超过一台服务器的数据,执行计划会分成多个子计划在多个服务器上执行。

  • Code Generator(代码生成器):该组件将执行计划转换为可执行的代码,但是不做任何优化选择。

  • Executor(执行器):该组件启动SQL的执行过程。

下图展示了SQL层执行SQL的过程。

在标准的SQL流程之外,SQL层还有Plan Cache能力,将历史的执行计划缓存在内存中,后续的执行可以反复执行这个计划,避免了重复查询优化的过程。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档