DB2鎖問題

redhouser發表於2011-05-27

        對一個熟悉Oracle的人而言,瞭解到DB2的加鎖機制(預設CS隔離級別),會對DB2的併發性產生很多擔憂。
        可能DB2透過提供許多引數(DB2_SKIPINSERTED、DB2_SKIPDELETED、DB2_EVALUNCOMMITTED)可以實現高併發,但增加了應用開發的複雜性。

1,讀需要加鎖,可能被更新阻塞;原因:無多版本(沒有undo資訊可以方便的構造多版本)
2,存在鎖升級;原因:鎖資源集中
3,鎖型別與存取計劃有關,即是否有索引、是否有謂詞、當前系統內鎖數量等,都會影響鎖型別;原因:試圖在鎖粒度與資源(CPU、記憶體)使用之間平衡,依賴於執行計劃

      相較而言,Oracle的鎖設計顯得非常精巧(可能不只是鎖本身,可能與整體架構有關)
1,讀不加鎖,所需資料透過undo資訊構造一致讀塊實現
2,行記錄分佈在物理行上,不存在鎖升級問題(注,為了實現行上鎖標記清理,有快速、延遲清理等級制)
3,鎖型別與存取計劃無關
4,為了保護記憶體結構,使用Latch保護,也有利於高併發

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/18922393/viewspace-696430/,如需轉載,請註明出處,否則將追究法律責任。

相關文章