本文介绍向业内插入一条记录时,如何找一个空闲的空间进行插入。

PostgreSQL如何在页面内找一个free slot

PageAddItemExtended

1、计算出pd_linp数组的最大值后新增一个后的个数:

limit=[pg_lower-sizeof(PageHeader)]/Sizeof(ItemIdData)+1

2、如果页头中pd_flags & PD_HAS_FREE_LINES为TRUE,即该数组中有free slot,那么首先从这个数组中找一个可用的ItemIdData,从pd_linp[0]开始一个一个的进行判断,一旦(itemId)->lp_flags == LP_UNUSED && (itemId)->lp_len != 0,表明这个slot可用,那么取这个offsetNumber返回

3、如果该页中没有free slot,则在pd_linp[limit-1]当前最后一个ItemIdData后面添加一个ItemIdData,设置该ItemIdData的值将其lp_off指向pd_upper位置并调整其lp_len=tuple->t_len,lp_flags = LP_NORMAL

相关文章:

  • 2021-06-09
  • 2022-12-23
  • 2021-11-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-06
  • 2021-08-18
猜你喜欢
  • 2021-12-16
  • 2021-06-07
  • 2022-12-23
  • 2021-08-23
  • 2021-05-04
  • 2021-12-18
相关资源
相似解决方案