eygle.com   eygle.com
eygle.com eygle
eygle.com  
 

« 墨天轮国产数据库第一期:金仓数据库全生命周期管控 | Blog首页 | openGauss SQL解析 »

循序渐进openGauss:openGauss的SQL引擎概览
modb.pro

SQL引擎是数据库系统重要组成部分,它的主要职责是负责将应用程序输入的SQL在当前负载场景下生成高效的执行计划,在SQL的高效执行上扮演重要角色。SQL在SQL引擎里执行过程,如图所示。

20211106-f76052e5-5c33-4425-89e5-94bd7aae36b2.png

从图中可以看出,应用程序的SQL需要经过SQL解析生成逻辑执行计划、经过查询优化生成物理执行计划,然后将物理执行计划转交给查询执行引擎做物理算子的执行操作。

1. SQL解析过程

SQL解析通常包含词法分析、语法分析、语义分析几个子模块。SQL语言是介于关系演算和关系代数之间一种描述性语言,它吸取了关系代数中一部分逻辑算子的描述,而放弃了关系代数中"过程化"的部分,SQL解析主要的作用就是将一个SQL语句编译成为一个由关系算子组成的逻辑执行计划。

描述语言的特点是规定了需要获取的"WHAT",而不关心"HOW",也就是只关注结果而不关注过程,因此SQL语言描述性的特点导致查询优化在数据库管理系统中具有非常重要的作用。

2. 查询重写

查询重写则是在逻辑执行计划的基础上进行等价的关系代数变换,这种优化也可以称为代数优化,虽然两个关系代数式获得的结果完全相同,但是它们的执行代价却可能有很大的差异,这就构成了查询重写优化的基础。

3. 基于成本的优化器

在早期的数据库管理系统中,通常采用基于启发式规则的方法来生成最优的物理执行计划,但是这种基于规则的优化的灵活度不够,常常导致产生一些次优的执行计划,而代价估算的引入,则从根本上解决了基于规则优化的不足。

基于代价的优化器一方面生成"候选"的物理执行路径,另一方面对这些执行路径计算它们的执行代价,这样就建立了执行路径的筛选标准,从而能够通过比较代价而获得最优的物理执行计划。


历史上的今天...
    >> 2015-11-08文章:
    >> 2011-11-08文章:
    >> 2009-11-08文章:
    >> 2007-11-08文章:
    >> 2006-11-08文章:
    >> 2005-11-08文章:
           离开UT
    >> 2004-11-08文章:
           滚滚红尘
           月光-王心凌
           Rattle and Burn
           九月的高跟鞋
           Lemon Tree(柠檬树)
           纯真年代
           推荐第一首歌:同步过冬
           上海滩

By enmotech on 2021-11-08 16:42 | Comments (0) | modb.pro | 3426 |


CopyRight © 2004~2020 云和恩墨,成就未来!, All rights reserved.
数据恢复·紧急救援·性能优化 云和恩墨 24x7 热线电话:400-600-8755 业务咨询:010-59007017-7040 or 7037 业务合作: marketing@enmotech.com