如果当前page已经满了,此时某些record如果变长,长到当前page装不下,这种情况下,就会产生overflow record, 此时DB2

会根据SMAP的信息,把变长后的record存到别的page上。

此时index entry里存的RID不变,而base page会存overflow RID。

做个实验

OVERFLOW之前page的镜像

OVERFLOW RECORD

Data page还有6个字节的free space,因此可以通过update语句把第一条记录搞长点,让record overflow到其他page 上去。overflow之前 RID 是6-01。

执行
UPDATE SYSADM.TBINPBG                                     
SET C1='BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB  
        BBBBBBBBBBBBBBBBBB'                               
WHERE C2='2018-04-13-07.41.26.280880';     

Overflow后page的镜像

OVERFLOW RECORD

可以看出overflow后,index entry上存的RID没变(依然是6-01),但是对应的base record已经是个hole了,

在prefix-subrecord里存了OVERFLOW RECORD的位置7-5E,然后record就OVERFLOW到7-5E上去了。

这样每overflow一次,访问overflow record就要多一次I/O,因此会影响效率。





相关文章:

  • 2021-10-09
  • 2022-03-05
  • 2021-06-18
  • 2021-08-05
  • 2022-03-10
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-01-22
  • 2022-02-03
  • 2021-12-12
  • 2021-12-31
  • 2021-11-09
相关资源
相似解决方案