msSqlServer是如何判断死锁的
当对数据库并发访问的时候,当两个会话同时等待访问由其他会话锁定的资源时,便会发生死锁。
当sql发现死锁的访问后,将选择其中一个会话作为死锁牺牲品来解决死锁.
这个是msSqlServer的基本功能,我想大多数人都有所了解,
我想问的是,msSqlServer自身是如何判断2个访问发生了死锁的啊,
我做了一个简单的存储过程,然后用并发去执行,超不过10次就提示,发生了死锁,我很不理解啊.
存储过程代码
ALTER PROCEDURE [dbo].[test] ASBEGIN SET TRANSACTION ISOLATION LEVEL SERIALIZABLEBEGIN TRANSACTIONinsert dbo.temp(name) select top 1 id from TransferInformation where RecordsState<>5declare @id intselect @id=name from temp where id= @@IDENTITYupdate TransferInformation set RecordsState=5 where Id=@id COMMIT TRANSACTIONEND