支援的版本:目前 (17) / 16 / 15 / 14 / 13
開發版本:devel
不再支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2

13.1. 簡介 #

PostgreSQL 提供了一組豐富的工具,供開發人員管理對資料的並行存取。在內部,資料一致性是透過使用多版本模型(Multiversion Concurrency Control,多版本並行控制,MVCC)來維護的。這表示每個 SQL 陳述式都會看到一段時間前的資料快照(一個資料庫版本),而不管基礎資料的目前狀態如何。這可防止陳述式看到由並行交易對相同資料列執行更新所產生不一致的資料,從而為每個資料庫會話提供交易隔離MVCC透過避免傳統資料庫系統的鎖定方法,最大限度地減少鎖定爭用,以便在多使用者環境中實現合理的效能。

使用MVCC並行控制模型而不是鎖定的主要優點是,在MVCC中,查詢(讀取)資料所取得的鎖定與寫入資料所取得的鎖定不會衝突,因此讀取永遠不會阻止寫入,而寫入永遠不會阻止讀取。PostgreSQL 即使在使用創新的可序列化快照隔離 (SSI) 層級提供最嚴格的交易隔離層級時,也能維持此保證。

PostgreSQL 中也提供表層級和列層級鎖定功能,適用於通常不需要完全交易隔離,並且偏好明確管理特定衝突點的應用程式。然而,正確使用MVCC通常會提供比鎖定更好的效能。此外,應用程式定義的建議鎖定提供了一種取得未與單一交易綁定的鎖定的機制。

提交更正

如果您在文件中發現任何不正確、與您對特定功能的體驗不符或需要進一步說明的內容,請使用此表單回報文件問題。