自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 Oceanbase查询优化:join order生成

在查询优化过程中,Oceanbase使用动态规划算法自下向上地对join order进行枚举,然后使用冲突规则对枚举的合法性进行判断,能够在保证正确性的基础上进行充分的探索,为得到最优的执行计划提供了基础。

2023-03-06 12:03:39 419

原创 Oceanbase查询优化:访问路径代价估算

在生成执行计划之前,Oceanbase会估算访问路径的代价以剪除代价较大的访问路径,为进一步优化提供基础。

2023-03-06 12:01:26 344

原创 Oceanbase查询改写番外篇:谓词推导

Oceanbase在谓词移动规则中实现了谓词推导,该特性能够利用已有谓词推导出新的谓词,从而更加充分地利用索引并减少不必要的数据处理,提升查询性能。

2023-03-06 11:58:00 159

原创 Oceanbase查询改写:窗口函数提升

当查询语句中存在窗口函数和group by操作时,会对查询性能有较大的影响。为此,Oceanbase中定义了窗口函数提升规则,能够将满足条件的窗口函数提升到分组聚合之后执行,提升查询性能。

2023-03-06 11:55:56 235

原创 Oceanbase查询改写:or展开

当查询语句的or条件中存在多个不同列的条件时,由于无法选择有效的索引,执行时可能会退化成全表扫描。为此,Oceanbase中定义了or展开规则,能够将满足条件的查询语句依据or条件展开为集合语句,以充分利用索引,提升查询性能。

2023-03-06 11:55:28 192

原创 Oceanbase查询改写:winmagic优化

当查询语句中存在相关子查询时,可以考虑将其进行改写成两表连接的形式,从而可以避免使用嵌套的方式进行执行。当关联条件涉及的是同一张表时,那么这种改写方式仍然避免不了对该表的多次访问。为此,Oceanbase中定义了winmagic优化规则,能够将满足条件的查询语句转化为窗口函数语句进行执行,提升查询性能。

2023-03-06 11:53:13 190

原创 Oceanbase查询改写:聚合子查询提升

默认情况下,对于包含子查询的语句需要按照嵌套的方式进行执行,效率十分低下。为此,Oceanbase中定义了聚合子查询提升规则,能够对满足条件的聚合子查询提升为连接,提升查询性能。

2023-03-06 11:48:55 366

原创 Oceanbase查询改写:min/max聚合改写

对于单列的min/max聚合,如果参与聚合的列上存在索引,那么不需要实际遍历全表即可得到聚合结果。为此,Oceanbase中定义了min/max聚合改写规则,能够对此类查询语句进行改写,提升查询性能。

2023-03-02 15:26:33 99

原创 Oceanbase查询改写:外连接limit下推

当查询语句中包含连接操作时,执行过程中可能产生较大的中间结果集。为此,Oceanbase中定义了外连接limit下推规则,能够将满足条件的外连接查询中的limit表达式下推至外表视图,提升查询性能。

2023-03-02 15:23:34 653

原创 Oceanbase查询改写:groupby移动

当查询语句中同时存在连接操作和分组聚合操作时,可能会产生大量的io。为此,Oceanbase中定义了groupby移动规则,能够对满足条件的分组聚合操作进行提升或下推,提升查询性能。

2023-03-02 15:18:57 330

原创 Oceanbase查询改写:查询下推

默认情况下,当查询语句中存在视图时,需要等待视图中的查询执行完毕后再执行父查询。为此,Oceanbase中定义了查询下推规则,能够将满足条件的父查询下推合并到视图查询中,从而消除视图,提升查询性能。

2023-03-02 15:10:57 290

原创 Oceanbase查询改写:投影裁剪

当查询语句中包含视图查询时,执行过程中可能产生较大的中间结果集。为此,Oceanbase中定义了投影裁剪规则,能够父查询中没有用到的列从视图查询的select列表中移除,提升查询性能。

2023-03-02 15:07:05 95

原创 Oceanbase查询改写:谓词移动

当查询语句中存在谓词时,能够减少执行阶段需要处理的数据量。为此,Oceanbase中定义了谓词移动规则,能够利用查询语句中各部分已有的谓词推导出新的谓词,并将其尽可能下推至数据读取阶段,从而减少各阶段需要处理的数据量,提升查询性能。

2023-03-02 14:49:31 165

原创 Oceanbase查询改写:连接消除

通常情况下,如果查询语句中存在较多的连接操作,会对查询性能有较大的影响。为此,Oceanbase中定义了连接消除规则,能够识别和消除不必要的连接,提升查询性能。

2023-03-01 17:06:50 418 1

原创 Oceanbase查询改写:全外连接改写

通常情况下,执行引擎无法支持不含equal连接条件的全外连接查询。为此,Oceanbase中定义了全外连接改写规则,能够将上述查询转换成通过union all操作联合起来的两个子查询,为这类场景提供了支持。

2023-03-01 17:03:58 154

原创 Oceanbase查询改写:any/all子查询优化

默认情况下,对于包含any/all子查询的语句需要按照嵌套的方式进行执行,效率十分低下。为此,Oceanbase中定义了相应的any/all子查询优化规则,能够对满足条件的any/all子查询进行优化,提升查询性能。

2023-03-01 17:03:21 89

原创 Oceanbase查询改写:子查询合并

当SQL中存在多个子查询条件时,查询性能往往会受到较大影响。为此,Oceanbase中定义了子查询合并规则,能够将满足条件的多个子查询进行合并,从而减少不必要的子查询,提升查询性能。

2023-03-01 17:02:58 372

原创 Oceanbase查询改写:集合语句优化

集合语句(union,intersect,except)通常涉及多张表的查询,执行开销往往较大。为此,Oceanbase中定义了相应的集合语句优化规则,能够对满足条件的集合语句进行优化,提升查询性能。

2023-03-01 17:00:42 353

原创 Oceanbase查询改写:视图合并

默认情况下,当查询语句中存在视图时,需要等待视图中的查询执行完毕后再执行父查询。这种做法使得优化器无法将视图查询和父查询作为一个整体进行优化,限制了优化的空间。为此,Oceanbase中定义了相应的视图合并规则,能够将视图查询中的查询逻辑合并到父查询中,为优化器进一步优化提供了基础。

2023-03-01 16:50:20 414

原创 Oceanbase查询改写:where子查询提升

默认情况下,对于包含子查询的语句需要按照嵌套的方式进行执行,效率十分低下。为此,Oceanbase中定义了相应的where子查询提升规则,能够对满足条件的子查询提升为join,提升查询性能。

2023-03-01 16:45:15 449

原创 Oceanbase查询改写:半连接转内连接

当查询语句中存在半连接(semi join)时,由于半连接不满足交换律,因此只能按照语句定义的顺序进行连接,使得优化器无法根据参与连接的表的实际大小制定最优的方案。为此,Oceanbase中定义了半连接转内连接规则,能够将满足条件的半连接转为内连接,为优化器进一步优化提供了基础。

2023-03-01 16:42:07 187

原创 Oceanbase查询改写:外连接转内连接

与内连接不同,外连接不满足交换律结合律,因此在查询优化阶段不能根据实际数据表的大小选择最优的连接顺序。为此,Oceanbase中定义了外连接转内连接规则,能够将满足条件的外连接转为内连接,为优化器进一步优化提供了基础。

2023-03-01 16:38:59 218

原创 Oceanbase查询处理:SQL执行

当ObServer接受到查询语句后,按照如下流程对其进行执行:对SQL进行语法和词法解析,生成查询语法树。对查询语法树进行语义分析,生成对应的查询对象。依据关系代数对查询对象进行等价改写。为查询对象生成执行代价最优的逻辑计划。依据逻辑计划生成可执行的物理计划。执行生成的物理计划。

2023-03-01 16:34:20 1117 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除