update

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

       


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章