13.1. 介紹
PostgreSQL為開發者提供了一組豐富的工具來管理對資料的并發通路。在内部,資料一緻性通過使用一種多版本模型(多版本并發控制,MVCC)來維護。這就意味着每個 SQL 語句看到的都隻是一小段時間之前的資料快照(一個資料庫版本),而不管底層資料的目前狀态。這樣可以保護語句不會看到可能由其他在相同資料行上執行更新的并發事務造成的不一緻資料,為每一個資料庫會話提供事務隔離。MVCC避免了傳統的資料庫系統的鎖定方法,将鎖争奪最小化來允許多使用者環境中的合理性能。
使用MVCC并發控制模型而不是鎖定的主要優點是在MVCC中,對查詢(讀)資料的鎖請求與寫資料的鎖請求不沖突,是以讀不會阻塞寫,而寫也從不阻塞讀。甚至在通過使用革新的可序列化快照隔離(SSI)級别提供最嚴格的事務隔離級别時,PostgreSQL也維持這個保證。
在PostgreSQL裡也有表和行級别的鎖功能,用于那些通常不需要完整事務隔離并且想要顯式管理特定沖突點的應用。不過,恰當地使用MVCC通常會提供比鎖更好的性能。另外,由應用定義的咨詢鎖提供了一個獲得不依賴于單一事務的鎖的機制。
本文轉自PostgreSQL中文社群,原文連結: