SQL Server死鎖測(cè)試
SQL Server死鎖問(wèn)題很值得我們?nèi)パ芯浚旅婢妥髁艘粋€(gè)相關(guān)方面的測(cè)試,看看究竟什么時(shí)候會(huì)出現(xiàn)SQL Server死鎖問(wèn)題。
SQL Server死鎖測(cè)試
--增設(shè) 帳戶表_2
CREATE TABLE 帳戶表_2
(
帳號(hào) CHAR(4),
余額 INT
)
GO
INSERT 帳戶表_2
SELECT 'C',100
UNION ALL
SELECT 'D',200
--在第一個(gè)連接中執(zhí)行以下語(yǔ)句
BEGIN TRAN
UPDATE 帳戶表 SET 余額=3 WHERE 帳號(hào)='A'
WAITFOR DELAY '00:00:10'
UPDATE 帳戶表_2 SET 余額=3 WHERE 帳號(hào)='C'
COMMIT TRAN
--在第二個(gè)連接中執(zhí)行以下語(yǔ)句
BEGIN TRAN
UPDATE 帳戶表_2 SET 余額=4 WHERE 帳號(hào)='C'
WAITFOR DELAY '00:00:10'
UPDATE 帳戶表 SET 余額=4 WHERE 帳號(hào)='A'
COMMIT TRAN
--刪除測(cè)試表
DROP TABLE 帳戶表,帳戶表_2
--同時(shí)執(zhí)行,系統(tǒng)會(huì)檢測(cè)出死鎖,第一個(gè)連接的事務(wù)可能正常執(zhí)行,SQL Server 終止第二個(gè)連接的事務(wù)(不涉及超時(shí))。
--如果沒(méi)有出現(xiàn)死鎖,則在其它事務(wù)釋放鎖之前,請(qǐng)求鎖的事務(wù)被阻塞。
--LOCK_TIMEOUT 設(shè)置允許應(yīng)用程序設(shè)置語(yǔ)句等待阻塞資源的最長(zhǎng)時(shí)間。
4、更新數(shù)據(jù)時(shí)候允許進(jìn)行插入
5、插入數(shù)據(jù)時(shí)不允許更新\讀取
【編輯推薦】