0
点赞
收藏
分享

微信扫一扫

表扫描描述符及扫描方向

E_topia 2022-09-14 阅读 98


表扫描描述符及扫描方向_初始化

1、表扫描函数的参数传递通过TableScanDescData,函数内层将扫描到的记录存储到HeapScanDesc.rs_ctup中,然后将该成员内容传递给slot中。

2、内部处理时会将TableScanDescData转换成HeapScanDesc类型,其第一个成员变量是TableScanDescData类型,方便类型强制转换。

3、HeapScanDesc结构成员:

   TableScanDescData rs_base:描述符中AM独立部分

   BlockNumber rs_nblocks:表中总共有多少数据页

   BlockNumber rs_startblock:从哪一页开始进行扫描

   BlockNumber rs_numblocks:最多扫描多少页,范围扫描中使用

   boolrs_inited;该扫描描述符是否已初始化,第一个记录时初始化,扫描后面的不再初始化,从上一次保存的数据页中取下一个记录

   BlockNumber rs_cblock:当前扫描的文件页页号

   Bufferrs_cbuf:当前扫描的内存页页号

   BufferAccessStrategy rs_strategy:扫描策略,使用哪种内存描述符获取方法:


   HeapTupleData rs_ctup:扫描到的记录存储到这个位置

   int rs_cindex:扫描的记录索引号

   int rs_ntuples:该页中总共有多少记录

   OffsetNumber rs_vistuples[MaxHeapTuplesPerPage]:page at a time下该页所有可见记录的索引号保存在这个数组中。

关于扫描方向:

表扫描描述符及扫描方向_描述符_02

ForwardScanDirection:向前

BackwardScanDirection:向后

NoMovementScanDirection:重新获取记录

这里的方向和理解的有点不一样,需注意。

举报

相关推荐

0 条评论