使用開放式並發的用戶在讀取行時不會鎖定該行。當用戶要更新某行時,應用程式必須確定自讀取該行以來,其他用戶是否更改了該行。開放式並發通常用於對數據爭用較小的環境。由於不需要鎖定任何記錄,它將會提高性能,因為鎖定記錄需要附加的伺服器資源
基本介紹
- 中文名:開放式並發
- 作用:促進長時間運行的活動
- 環境:對數據爭用較小的環境
- 對象:設計 DataSet 對象
在多用戶環境中,有兩種用於更新資料庫中數據的模型:開放式並發和保守式並發。設計 DataSet 對象的目的是為了促進將開放式並發用於長時間運行的活動,例如當您對數據進行遠程處理以及當用戶與數據進行互動時。
保守式並發涉及到鎖定數據源中的行,以防止用戶因修改數據而影響其他用戶。在保守式模型中,當用戶執行會套用鎖的操作時,其他用戶將無法執行可能與鎖發生衝突的操作,直到鎖所有者釋放鎖為止。此模型主要用於以下環境:對數據存在激烈爭用;用鎖保護數據的成本小於在發生並發衝突時回滾事務的成本。
因此,在保守式並發模型中,如果用戶在讀取某行時有將其更改的意圖,他將建立一個鎖。在該用戶完成更新並釋放鎖之前,其他任何用戶都無法更改鎖定行。因此,如果鎖定時間將會比較短(例如在以編程方式處理記錄時)時,最好實現保守式並發。當用戶與數據進行互動時,保守式並發並不是可伸縮的選項,它會使記錄被鎖定相對長的時間。
對比之下,使用開放式並發的用戶在讀取行時不會鎖定該行。當用戶要更新某行時,應用程式必須確定自讀取該行以來,其他用戶是否更改了該行。開放式並發通常用於對數據爭用較小的環境。由於不需要鎖定任何記錄,它將會提高性能,因為鎖定記錄需要附加的伺服器資源。另外,為了維護記錄鎖,需要與資料庫伺服器保持持久連線。由於在開放式並發模型中並不會這樣,所以與伺服器的連線可以在較少的時間內為大量的客戶端提供服務。
在開放式並發模型中,如果當某用戶接收到來自資料庫的值後,另一用戶在該用戶試圖修改該值之前即將其修改,則認為發生了衝突。