我對SQL很陌生。我正在使用SQL Server 2008 R2。我有以下問題;有沒有辦法檢查事務授予的鎖
(1)
事務已啓動,但尚未達到其提交點。
UPDATE Student
SET subject = 'Technology'
WHERE subjectCode = 'tech';
當該正在執行什麼類型的鎖定的由具有全表/行?
(2)
是否有一種方式來獲得由事務持有的鎖?
我對SQL很陌生。我正在使用SQL Server 2008 R2。我有以下問題;有沒有辦法檢查事務授予的鎖
(1)
事務已啓動,但尚未達到其提交點。
UPDATE Student
SET subject = 'Technology'
WHERE subjectCode = 'tech';
當該正在執行什麼類型的鎖定的由具有全表/行?
(2)
是否有一種方式來獲得由事務持有的鎖?
答案(1):
如果交易沒有被阻止任何預先存在的鎖,然後在Student
表中的所有行與subjectCode = 'tech'
現在對他們有(X)
(獨家)鎖。
在頁面和表級別上,將會有(IX)
(intent exclusive)鎖定 - 表明在「層次結構」(表格 - >頁面 - >行)的更下方的某處存在排它鎖。
如果您要更新超過5000行,然後鎖升級將被踢入,並且SQL Server已使用單個表級別排他鎖來取代5000多個單獨的行級排他鎖。這意味着基本上沒有人能夠對這張桌子做任何事情。
對於你的問題(2) - see the answers to this other SO question。
問題1的好解釋。謝謝。 – 2013-04-24 05:56:22
參見http://dba.stackexchange.com/q/12810/5203。 – GSerg 2013-04-23 20:20:04