GaussDB数据库技术解读——高性能关键技术
内容概要:本章节介绍GaussDB中实现的高性能关键技术,内容涉及优化器、执行器、分布式数据库、存储引擎等多个方面。
目的:通过对GaussDB数据库关键高性能技术的学习,能够让读者更加清晰的理解数据库内核哪些优化是性能关键点同时也为类似的应用系统实现提供方法论和最佳实践。
查询重写RBO
在数据库里RBO基于规则的优化一般指查询重写技术,按照一系列关系代数表达式的等价规则,对查询的关系代数表达式进行等价转换,从逻辑上减少执行的总量从而提高查询执行效率,例如,通过条件的推导得出非必要的表扫描、避免非必要的计算表示等。
查询重写RBO优化是非常重要的一种逻辑优化手段,通常应用和实施在查询优化过程的前端,将一些肯定能够优化的场景进行优化,RBO优化结束后进行物理优化,以下以常用的几种重写优化进行介绍:
Example 1:谓词化简优化Predicate Simplification
使用谓词查询条件的可满足性Satisfiability (SAT)&可传递性Transitive Closure(TC)对查询进行化简,a.w.k SAT-TC,假设有t1,t2表,他们的定义分别为:T1(c1 int, c2 int);,T2(c1 int, c2 int check (c2 < 30));,则原查询:
SELECT t1.c1,t1.c2, t2.c1, t2.c2FROM t1 JOIN t2 ON t1.c2 = t2.c2WHERE t1.c2 > 20
可优化为:
SELECT dt1.c1,dt1.c2, dt2.c1, dt2.c2FROM (select c1,c2 from t1 where t1.c2 between 20 and 30) as dt1,(select c1,c2 from t2 where t2.c2 between 20 and 30) as dt2WHERE dt1.c2 = dt2.c2;
说明:通过谓词逻辑可以发现当前查询中可以一次实施TC->SAT->TC优化策略。
step1: TC优化:内连接关联条件t1.c2 = t2.c2 && t1.c2 > 20可以得出t2.c2 > 20
step2: SAT优化:t2.c2列上创建有check-constraint可以得出t2.c2 BETWEEN 20 AND 30
step3: TC优化:同理得出t1.c2 BETWEEN 20 AND 30到此t1,t2在关联之前就可以最大限度减小处理的元组数,达到提升性能的目的,以下是其他SATTC例子:
A=B AND A=C --> B=CA=5 AND A=B --> B=5A=5 AND A IS NULL --> FALSEA=5 AND A IS NOT NULL --> A=5X > 1 AND Y > X --> Y >= 3X IN (1,2,3) AND Y=X --> Y IN (1,2,3)
标签:20,关键技术,GaussDB,t2,t1,c2,c1,优化,数据库
From: https://www.cnblogs.com/xiaoxu0211/p/18512135