PostgreSQL 為開發人員提供了豐富的工具來管理資料的併發訪問。在內部,資料一致性透過使用多版本模型(多版本併發控制,MVCC)。這意味著每個 SQL 語句都會看到一個過去某個時間點的資料快照(一個資料庫版本),而不管底層資料的當前狀態。這可以防止語句看到由併發事務在同一資料行上執行更新所產生的不一致資料,從而為每個資料庫會話提供事務隔離。MVCC透過擯棄傳統資料庫系統的鎖定方法,它最大限度地減少了鎖的爭用,以便在多使用者環境中實現合理的效能。
使用MVCC而不是鎖定的併發控制模型的最大優點是,在MVCC中,用於查詢(讀取)資料的鎖不會與用於寫入資料的鎖發生衝突,因此讀取永遠不會阻塞寫入,寫入也永遠不會阻塞讀取。PostgreSQL 即使在提供最嚴格的事務隔離級別時,也透過使用創新的可序列化快照隔離(SSI)級別來維持此保證。
PostgreSQL 還為那些通常不需要完整事務隔離並且更喜歡顯式管理特定衝突點的應用程式提供了表級和行級鎖定功能。然而,正確使用MVCC通常會比使用鎖提供更好的效能。此外,應用程式定義的建議鎖提供了一種獲取與單個事務無關的鎖的機制。
如果您在文件中看到任何不正確、與您對特定功能的使用經驗不符或需要進一步澄清的內容,請使用此表格報告文件問題。