MogDB&openGauss
分享MogDB&openGauss实用技巧
robinson1988
本人精通SQL,精通所有关系型数据库SQL调优,精通所有关系型数据库性能优化,精通所有关系型数据库架构,精通分库分表,熟悉大数据Hadoop,Hive,Spark,Flume,Kafka,Flink,熟悉各种ETL工具,熟悉Python,Java,C
展开
-
MogDB&openGauss查询重写规则magicset
从执行计划上可以看到test01 t3是大表,有4400W行数据,它走了全表扫描,t2是小表,并且t2还有过滤条件,过滤完之后只有36行数据。disable_pullup_expr_sublink表示禁止子查询提升,效果与添加hint /*+ no_expand */ 一样。如果不想设置rewrite_rule=magicset,也可以对子查询添加/*+ no_expand */达到优化目的。为什么t2会被访问2次呢?从执行计划上可以看到,t2被访问了2次,但是整个SQL语句中,t2只出现了一次。原创 2024-05-19 21:22:11 · 242 阅读 · 0 评论 -
MogDB&openGauss查询重写规则lazyagg
从执行计划中看到,子查询先进行了GROUP BY,再与test02进行关联,整个SQL GROUP BY了2次。当子查询中有GROUP BY,子查询中的表很大,子查询与外面的表(比较小/过滤完之后数据量少)进行关联之后还有GROUP BY,这个时候就可以开启lazyagg特性,加快SQL性能。从执行计划中看到,子查询中的聚合运算被消除了,子查询中的表test01与test02先做了关联,关联之后再进行GROUP BY,整个SQL只做了1次GROUP BY。2.子查询与外面的表关联之后还有GROUP BY。原创 2024-05-12 21:06:56 · 197 阅读 · 0 评论 -
MogDB&openGauss中的Bitmap Index Scan
从上面的例子看到,当where条件有limit,不要走Bitmap Index Scan,limit无法刹车。没有force_bitmapor参数,当where条件中有or,想要强制走BitmapOr,禁止全表扫描就行。4. BitmapOr 要注意观察最终返回的数据量,返回数据量少性能较高,返回数据量大,走全表扫描。禁止indexscan,禁止走全表扫描,这个时候只能走Bitmap Index Scan。只有在返回少量数据的情况下BitmapOr性能才高,返回的数据量大,全表扫描性能更高。原创 2024-05-04 13:45:04 · 378 阅读 · 0 评论 -
MogDB&openGauss导出TYPE对象的DDL
可以先使用gs_dump导出所有对象DDL,再使用shell过滤CREATE TYPTE。在MogDB/openGauss中,可以使用gs_dump导出数据库中所有对象。目前 dbms_metadata.get_ddl 还不支持导出TYPE对象。虽然 dbms_metadata.get_ddl不支持,但是还是有其他方法。原创 2024-04-30 17:47:40 · 242 阅读 · 0 评论