PostgreSQL表扫描方法解析

本文介绍PG的表扫描方法原理。

全表扫描函数在heap handler API接口函数为heap_getnextslot函数。该函数从磁盘读取数据页到内存并遍历页内记录,将其存储到slot中返回用户。这个函数一次只获取一个记录,倒到上次ExecutePlan函数中循环调用ExecProcNode再次进入该函数获取下一个记录,依次类推,直到获得所有记录。

主要流程:

1、首先将入参TableScanDesc sscan强制转换类型到HeapScanDesc scan,后续向scan中保存扫描记录及状态

2、分两种页扫描:如果sscan->rs_flags为SO_ALLOW_PAGEMODE即扫描所有满足可见性的记录,调用函数heapgettup_pagemode;否则扫描所有记录,调用函数heapgettup

3、最后调用函数ExecStoreBufferHeapTuple将scan->rs_ctup存储到slot中。

4、这里首先说函数heapgettup_pagemode。这个函数根据三个扫描方向分别处理。只针对向前扫描说明:

<
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值