?
このドキュメントでは、 php中國(guó)語(yǔ)ネットマニュアル リリース
PostgreSQL為開(kāi)發(fā)者提供了豐富的對(duì)數(shù)據(jù)并發(fā)訪問(wèn)進(jìn)行管理的工具。 在內(nèi)部,PostgreSQL利用多版本并發(fā)控制(MVCC)來(lái)維護(hù)數(shù)據(jù)的一致性。 這就意味著當(dāng)檢索數(shù)據(jù)時(shí),每個(gè)事務(wù)看到的都只是一小段時(shí)間之前的數(shù)據(jù)快照(一個(gè)數(shù)據(jù)庫(kù)版本),而不是數(shù)據(jù)的當(dāng)前狀態(tài)。 這樣,如果對(duì)每個(gè)數(shù)據(jù)庫(kù)會(huì)話(huà)進(jìn)行事務(wù)隔離,就可以避免一個(gè)事務(wù)看到其它并發(fā)事務(wù)的更新而導(dǎo)致不一致的數(shù)據(jù)。 MVCC規(guī)避傳統(tǒng)的數(shù)據(jù)庫(kù)系統(tǒng)的顯式鎖定方法,減少鎖爭(zhēng)用,允許多用戶(hù)環(huán)境中的合理性能。
使用多版本并發(fā)控制比鎖定模型的主要優(yōu)點(diǎn)是在MVCC里,對(duì)檢索(讀)數(shù)據(jù)的鎖請(qǐng)求與寫(xiě)數(shù)據(jù)的鎖請(qǐng)求不沖突, 所以讀不會(huì)阻塞寫(xiě),而寫(xiě)也從不阻塞讀。
在PostgreSQL里也有表和行級(jí)別的鎖定機(jī)制,用于給那些無(wú)法輕松接受 MVCC 行為的應(yīng)用。 不過(guò),恰當(dāng)?shù)厥褂?acronym class="ACRONYM">MVCC總會(huì)提供比鎖更好的性能。 另外,由應(yīng)用定義的咨詢(xún)鎖提供了一個(gè)獲得不依賴(lài)于單獨(dú)事務(wù)的鎖的機(jī)制。