VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 783|回复: 3

请问一个有关死锁的问题

[复制链接]

1

主题

1

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-3 17:00:01 | 显示全部楼层 |阅读模式
请问: 一个事务从开始到结束时间太长的话其它的进程去update或insert这张表的时候是不是会产生互锁? 同样去select这张表时会不会产生超时?  
还有一个问题就是 产生死锁是不是都是因为事务所产生的?
回复

使用道具 举报

0

主题

29

帖子

16.00

积分

新手上路

Rank: 1

积分
16.00
发表于 2020-1-3 23:09:01 | 显示全部楼层
看你锁定的形式.是表锁定还是行锁定.
回复

使用道具 举报

0

主题

41

帖子

13.00

积分

新手上路

Rank: 1

积分
13.00
发表于 2020-1-3 23:39:01 | 显示全部楼层
举个死锁的例子给你看看:

-- 测试环境
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
回复

使用道具 举报

0

主题

4

帖子

5.00

积分

新手上路

Rank: 1

积分
5.00
发表于 2020-1-3 23:57:01 | 显示全部楼层
你应该了解一下什么是死锁什么是阻塞?!

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表