新聞中心
悲觀鎖和樂觀鎖是數(shù)據(jù)庫并發(fā)控制的兩種一般方式,其中,悲觀鎖體現(xiàn)對對象的排他性寫策略,它假設(shè)每次訪問數(shù)據(jù)庫會失敗,如果不能鎖定數(shù)據(jù),就令用戶等待,直到該數(shù)據(jù)的鎖被釋放;而樂觀鎖是認(rèn)為相反,也就是假設(shè)每次訪問數(shù)據(jù)庫會成功,基于此,樂觀鎖在對對象進行寫操作時會檢查數(shù)據(jù)版本是否失效,以確定對象是否被其他用戶修改,如果被其他用戶修改,則拒絕更新,否則更新最新的數(shù)據(jù)。

創(chuàng)新互聯(lián)長期為上1000+客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為南岳企業(yè)提供專業(yè)的做網(wǎng)站、成都網(wǎng)站建設(shè),南岳網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
從理論上講,悲觀鎖比樂觀鎖更安全,但樂觀鎖能更好地利用數(shù)據(jù),因為它不會因發(fā)行鎖而鎖定數(shù)據(jù),而是在更新對象時,檢查對象的版本以確保對象的有效性,從而減少了等待時間,加快了處理速度。
MSSQL中,悲觀鎖和樂觀鎖可以使用Transact-SQL語句實現(xiàn)。 悲觀鎖通過寫操作引發(fā),比如select語句后加上with(xlock)參數(shù),從而鎖定數(shù)據(jù)表,如:
SELECT * FROM orders WITH (XLOCK)
ERROR_TYPENAME
樂觀鎖通過讀操作引發(fā),比如向表中加入一個timestamp(rowversion)列,在任何更新操作完成時,該列的數(shù)據(jù)都會更新,然后輪詢該列,以確定數(shù)據(jù)是否有更新,如:
SELECT * FROM orders WHERE rowversion = @rowversion
ERROR_TYPENAME
從性能上比較,悲觀鎖將在性能上產(chǎn)生更大的開銷,因為每次訪問表都需要在數(shù)據(jù)庫中發(fā)行鎖定,導(dǎo)致等待時間更長。樂觀鎖則更輕量,用戶可以減少對表鎖定的概率,以提高處理速度。
總之,悲觀鎖和樂觀鎖都有其各自優(yōu)勢和劣勢,要根據(jù)業(yè)務(wù)的不同而選擇合適的并發(fā)控制方式。 在MSSQL中,開發(fā)者可以根據(jù)需要來選擇使用上面提到的兩種方式來實現(xiàn)數(shù)據(jù)
的并發(fā)控制。
香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機、虛擬主機、域名注冊、VPS主機、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。
新聞名稱:MSSQL中悲觀鎖與樂觀鎖的比較(mssql悲觀鎖和樂觀鎖)
文章出自:http://fisionsoft.com.cn/article/dhgijhd.html


咨詢
建站咨詢
