?
This document uses PHP Chinese website manual Release
PostgreSQL為開發(fā)者提供了豐富的對數(shù)據(jù)并發(fā)訪問進行管理的工具。 在內(nèi)部,PostgreSQL利用多版本并發(fā)控制(MVCC)來維護數(shù)據(jù)的一致性。 這就意味著當檢索數(shù)據(jù)時,每個事務看到的都只是一小段時間之前的數(shù)據(jù)快照(一個數(shù)據(jù)庫版本),而不是數(shù)據(jù)的當前狀態(tài)。 這樣,如果對每個數(shù)據(jù)庫會話進行事務隔離,就可以避免一個事務看到其它并發(fā)事務的更新而導致不一致的數(shù)據(jù)。 MVCC規(guī)避傳統(tǒng)的數(shù)據(jù)庫系統(tǒng)的顯式鎖定方法,減少鎖爭用,允許多用戶環(huán)境中的合理性能。
使用多版本并發(fā)控制比鎖定模型的主要優(yōu)點是在MVCC里,對檢索(讀)數(shù)據(jù)的鎖請求與寫數(shù)據(jù)的鎖請求不沖突, 所以讀不會阻塞寫,而寫也從不阻塞讀。
在PostgreSQL里也有表和行級別的鎖定機制,用于給那些無法輕松接受 MVCC 行為的應用。 不過,恰當?shù)厥褂?acronym class="ACRONYM">MVCC總會提供比鎖更好的性能。 另外,由應用定義的咨詢鎖提供了一個獲得不依賴于單獨事務的鎖的機制。