首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

请教一个有关死锁的有关问题

2012-03-09 
请问一个有关死锁的问题请问: 一个事务从开始到结束时间太长的话其它的进程去update或insert这张表的时候

请问一个有关死锁的问题
请问: 一个事务从开始到结束时间太长的话其它的进程去update或insert这张表的时候是不是会产生互锁? 同样去select这张表时会不会产生超时?  
还有一个问题就是   产生死锁是不是都是因为事务所产生的?

[解决办法]
看你锁定的形式.是表锁定还是行锁定.
[解决办法]
举个死锁的例子给你看看:

-- 测试环境
USE tempdb
GO
CREATE TABLE t1(id int)
INSERT t1 VALUES(1)
CREATE TABLE t2(id int)
INSERT t2 VALUES(2)
GO

-- 查询窗口1中执行下面的语句
USE tempdb
GO
BEGIN TRAN
SELECT * FROM t1 WITH(TABLOCKX)
WAITFOR DELAY '00:00:10 '
UPDATE t2 SET id = 1
COMMIT TRAN
GO

-- 查询窗口2中执行下面的语句
USE tempdb
GO
BEGIN TRAN
SELECT * FROM t2 WITH(TABLOCKX)
WAITFOR DELAY '00:00:10 '
UPDATE t1 SET id = 1
COMMIT TRAN
GO


-- 测试完成后删除测试环境
DROP TABLE t1, t2

[解决办法]
你应该了解一下什么是死锁什么是阻塞?!

死锁一定会阻塞,但是阻塞不一定是死锁!

热点排行