日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
SQLServer互斥試探:當(dāng)竟然不能實(shí)現(xiàn)的時(shí)候(sqlserver互斥)

SQL Server 互斥試探是一種有效的數(shù)據(jù)庫事務(wù)控制技術(shù),可以確保在同一時(shí)間,每一條記錄都只有一個(gè)客戶端可以訪問。它的實(shí)現(xiàn)原理是通過嘗試將一個(gè)特殊的“標(biāo)識(shí)符”加載到每一條記錄時(shí),如果該標(biāo)識(shí)符已經(jīng)被加載,那么服務(wù)器就拒絕執(zhí)行命令。這實(shí)際上就模擬出了一個(gè)互斥鎖,防止了在同一時(shí)間同一條記錄被多個(gè)客戶端訪問。

然而,互斥試探并不是沒有局限性。最顯著的一個(gè)局限性是當(dāng)特殊“標(biāo)識(shí)符”在試探的時(shí)候被多線程加載的情況,這時(shí),服務(wù)器就無法分辨,使客戶端無法保證互斥性。

為了解決這個(gè)問題,我們可以使用atomi_test_and_set 函數(shù)及 SQL Server _interlock 內(nèi)置函數(shù)。這兩個(gè)函數(shù)都可以對(duì)指定的變量產(chǎn)生原子級(jí)的讀取和設(shè)置操作,這樣就能有效的建立互斥從而保證客戶端的互斥性。

以下是一個(gè)使用 atomi_test_and_set函數(shù) 實(shí)現(xiàn)SQL Server互斥試探的示例:

DECLARE @val INT

— 嘗試把 @val 設(shè)置為-1

SET @val = atomic_test_and_set(-1);

— 如果@val 不等于-1,說明其它客戶端已經(jīng)訪問此記錄了

IF(@val!=-1)

BEGIN

RAISERROR (‘The record is already accessed by other clients’, 16, 1);

END

ELSE

BEGIN

— 訪問資源,這里可以放置你的代碼……

— 完成任務(wù)后,客戶端直接解除@val 的鎖

SET @val = atomic_test_and_set(0);

END

以下是使用 _ interlock 內(nèi)置函數(shù)實(shí)現(xiàn)SQL Server互斥試探的示例:

DECLARE @val INT

— 獲取變量 @val 的值

SET @val = _Interlock(3, 0);

— 如果 @val 的值不等于0,說明其它客戶端已經(jīng)訪問此記錄

IF(@val!=0)

BEGIN

RAISERROR (‘The record is already accessed by other clients’, 16, 1);

END

ELSE

BEGIN

— 訪問資源,這里可以放置你的代碼……

— 完成任務(wù)后,客戶端直接解除@val 的鎖

SET @val = _Interlock(1, 0);

END

從上面的示例可以看出,使用atomi_test_and_set / _interlock 函數(shù)來實(shí)現(xiàn)SQL Server互斥試探的實(shí)現(xiàn)原理,大大簡(jiǎn)化了對(duì)記錄的互斥訪問,因此,可以有效的防止記錄被多個(gè)客戶端訪問,并確保了數(shù)據(jù)的完整性。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗(yàn)。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


當(dāng)前文章:SQLServer互斥試探:當(dāng)竟然不能實(shí)現(xiàn)的時(shí)候(sqlserver互斥)
分享鏈接:http://www.5511xx.com/article/dhhjcos.html