本章描述 PostgreSQL 資料庫系統在兩個 或者更多會話視圖同事存取同樣的資料的時候表現出來的樣幾。 在那種並發存取的情況下的目標是為所有會話提供高效的存取,同時還 要維護嚴格的資料完整性。每個資料庫應用的開發人員都應該熟悉本章 討論的話題。
與其他使用鎖來進行並行控制的資料庫系統不同, PostgreSQL 利用多版本模型來維護資料的一致性。 (多版本並發控制,Multiversion Concurrency Control, MVCC)。 這就意味著當檢索資料庫時,每個事務都看到一個 資料的一段時間前的快照 ( 一個資料庫版本), 而不管正在處理的資料目前的狀態。這樣,如果對每個資料庫會話進行 事務隔離, 就可以避免一個事務看到因為其它並行的事務更新 同一行資料而導致的不連貫的資料。
多版本和鎖定模型的主要區別是在MVCC裡, 對檢索(讀)資料的鎖要求與寫資料的鎖要求不衝突, 所以讀不會阻塞寫,而寫也從不阻塞讀。
在 PostgreSQL 裡也有表和行級別的鎖定設施, 用於給那些無法輕松接受 MVCC 行為的應用。 不過,恰當地使用 MVCC 總會提供比鎖更好地性能。