update某條記錄的時候,如果index key column也被update了,那麼在找到index entry後,先對舊的index entry做一個pseudo delete,再插入一條新的index entry(new key+old rid), 那麼找到RID後,在data page上把old column value替換成new column value。
在這種場景下,儘管data page沒發生多大變化,但是每次update就會產生一個pseudo index entry,這樣就加大了維護index的負擔,pseudo index entry在物理上也是佔據存儲空間的,頻繁的update操作就會產生大量的pseudo index entry, 從而導致index split,而DB2z也有機制去清理pseudo index page,這些都會導致lotch/lock on index, 過多的維護index必然導致index效率低下。
通過DSN1PRNT可以看到update前後data/index的情況
update之前data page log+ dsn1prnt
update之前index leaf page+dsn1prnt
update後index leaf page+ DSN1PRNT
update後data page log+DSN1PRNT