openGuass
王飞活
这个作者很懒,什么都没留下…
展开
-
openGauss 之min/max 优化代码走读
在openGuass中,如果对索引列执行max/min操作,openGauss会优化成只读取索引的最前/后的一行数据,避免了对整表数据进行读取和聚合操作,如下所示: 1. 首先需要将min/max 算子转成成执行计划中降序/升序的keypath,代码流程如下所示: 2. 生成索引路径的时候,根据keypath的信息生成顺序扫描路径还是逆序扫描路径,主要代码如下所示: 3. add_path的时候将带有pathkey的路径保存下来,主要代码流程如下所示:原创 2024-04-14 00:11:07 · 293 阅读 · 0 评论 -
OpenGuass 之 where 1 = 0 处理流程代码走读
在OpenGuass中,如果where 条件中包含where 1= 0 等固定为否条件的查询语句,在生成执行计划的时候,执行计划是BaseResult类型,此类型的执行计划不会进行物理数据扫描,如下所示:对于非固定为否条件(如where id = 1)的语句,对应的执行计划则是SeqScan,此类计划会先执行物理扫描数据,扫描数据后在根据谓词条件进行优化,如下所示:本文主要是通过代码走读来了解在OpenGuass中对于where 1 = 0的固定为伪条件的处理流程。原创 2024-03-03 19:30:39 · 329 阅读 · 0 评论 -
OpenGuass之分区裁剪
本文将假设以一个以id为分区字段的表t1, 以SQL: select * from t1 where id > 2 and id < 5 为例讲述在OpenGuass中是如何进行分区裁剪的。如下图所示,本来t1有个6分区,但是OpenGuass会根据 id > 2 and id < 5的谓词条件进行无交集的分区裁剪,裁剪后实际扫描数据的时候,只会访问3个分区。原创 2024-01-30 23:11:34 · 412 阅读 · 0 评论 -
OpenGauss 之PartitionMap
本文主要是讲述OpenGuass中是如何将pg_partition系统表中的分区信息初始化成PartitionMap的。原创 2024-01-27 00:00:20 · 423 阅读 · 0 评论 -
OpenGuass 之顺序扫描和索引扫描的代价估算
在OepnGuass中,一条路径的执行代价估算值将直接决定一条路径是否会被取舍。本文主要对OpenGuass中对于普通表的顺序扫描和索引扫描两种路径的的代价估算进行代码走读了解代价估算的整体过程。原创 2024-01-07 19:30:22 · 408 阅读 · 0 评论 -
OpenGauss 之索引查找和匹配
本文主要通过走读OpenGuass的代码,来了解查询的时候OpenGuass是如何查找表的索引信息以及根据谓词条件过滤掉无用的索引信息的。原创 2024-01-01 15:16:53 · 436 阅读 · 0 评论