SQL Server的并發(fā)控制介紹
SQL Server的并發(fā)控制時(shí)怎樣的呢?這是很多人都提到過(guò)的問(wèn)題,下面就為您詳細(xì)介紹SQL Server的并發(fā)控制,供您參考學(xué)習(xí)。
SQL Server 2005支持使用行版本控制的兩個(gè)事務(wù)隔離級(jí)別。一個(gè)是已提交讀隔離的新實(shí)現(xiàn),另一個(gè)是新事務(wù)隔離級(jí)別(快照)。
當(dāng)許多人試圖同時(shí)修改數(shù)據(jù)庫(kù)中的數(shù)據(jù)時(shí),必須實(shí)現(xiàn)一個(gè)控制系統(tǒng),使一個(gè)人所做的修改不會(huì)對(duì)他人所做的修改產(chǎn)生負(fù)面影響。這稱為并發(fā)控制。
SQL Server的并發(fā)控制理論根據(jù)建立并發(fā)控制的方法而分為兩類:
悲觀并發(fā)控制
一個(gè)鎖定系統(tǒng),可以阻止用戶以影響其他用戶的方式修改數(shù)據(jù)。如果用戶執(zhí)行的操作導(dǎo)致應(yīng)用了某個(gè)鎖,只有這個(gè)鎖的所有者釋放該鎖,其他用戶才能執(zhí)行與該鎖沖突 的操作。這種方法之所以稱為悲觀并發(fā)控制,是因?yàn)樗饕糜跀?shù)據(jù)爭(zhēng)用激烈的環(huán)境中,以及發(fā)生并發(fā)沖突時(shí)用鎖保護(hù)數(shù)據(jù)的成本低于回滾事務(wù)的成本的環(huán)境中。
樂(lè)觀并發(fā)控制
在樂(lè)觀并發(fā)控制中,用戶讀取數(shù)據(jù)時(shí)不鎖定數(shù)據(jù)。當(dāng)一個(gè)用戶更新數(shù)據(jù)時(shí),系統(tǒng)將進(jìn)行檢查,查看該用戶讀取數(shù)據(jù)后其他用戶是否又更改了該數(shù)據(jù)。如果其他用戶更新了數(shù)據(jù),將產(chǎn)生一個(gè)錯(cuò)誤。一般情況下,收到錯(cuò)誤信息的用戶將回滾事務(wù)并重新開(kāi)始。
這種方法之所以稱為樂(lè)觀并發(fā)控制,是因?yàn)樗饕糜跀?shù)據(jù)爭(zhēng)用較少的環(huán)境中,以及回滾事務(wù)的成本偶爾高于讀取數(shù)據(jù)時(shí)鎖定數(shù)據(jù)的成本的環(huán)境中。
Microsoft SQL Server 2005 支持某個(gè)范圍的并發(fā)控制。用戶通過(guò)為游標(biāo)上的連接或并發(fā)選項(xiàng)選擇事務(wù)隔離級(jí)別來(lái)指定并發(fā)控制的類型。這些特性可以使用 Transact-SQL 語(yǔ)句或通過(guò)數(shù)據(jù)庫(kù)應(yīng)用程序編程接口(API,如 ADO、ADO.NET、OLE DB 和 ODBC)的屬性和特性來(lái)定義。
【編輯推薦】
SQL SERVER連接DB2數(shù)據(jù)庫(kù)
SQL Server級(jí)聯(lián)更新的實(shí)現(xiàn)