前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >表扫描描述符及扫描方向

表扫描描述符及扫描方向

作者头像
yzsDBA
发布2020-10-28 09:36:27
4990
发布2020-10-28 09:36:27
举报
文章被收录于专栏:PostgreSQL研究与原理解析

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:扫描策略,使用哪种内存描述符获取方法:

参考:

https://blog.csdn.net/yanzongshuai/article/details/103659270

https://blog.csdn.net/yanzongshuai/article/details/103795628

https://blog.csdn.net/yanzongshuai/article/details/103798038

https://blog.csdn.net/yanzongshuai/article/details/103828829

https://blog.csdn.net/yanzongshuai/article/details/103839702

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

int rs_cindex:扫描的记录索引号

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

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

关于扫描方向:

ForwardScanDirection:向前

BackwardScanDirection:向后

NoMovementScanDirection:重新获取记录

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yanzongshuaiDBA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档