请问如果使用TransactionScope开启一个分布式事务,使用该事务两个并发的连接会互相死锁吗

BusyDonkey 2017-03-16 12:14:32
如果在.Net中用TransactionScope开启一个事务。

然后在该事务范围内启动两个并发的线程,连接到数据库对同一张表加表级别的X锁并长时间持续占有,请问这种情况这两个线程的其中一个连接会Block住另外一个线程的连接吗?

如果会,那岂不是两个数据库连接就算是在同一个事务中,也会发生死锁?
...全文
440 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2017-03-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 BusyDonkey 的回复:]请问我理解的对吗?[/Quote]
就是这样啊。
TransactionScope 怎么可能凭空改变数据库的事务机制,那就太黑科技了。
唐诗三百首 2017-03-16
  • 打赏
  • 举报
回复
其实对于数据库来讲, 是2个不同的进程.
BusyDonkey 2017-03-16
  • 打赏
  • 举报
回复
引用 2 楼 Tiger_Zhao 的回复:
好吧我没注意分布式事务。 以下属于个人猜想:内部就是两个独立的事务,始终不存在真正的“一个事务有两个连接”,两个事务锁定冲突很正常啊。
谢谢大神解答,意思就是TransactionScope所以启用的分布式事务,实际上也是开启了多个事务,只是做了事务状态的统一管理? 然后就算多个事务是在同一个分布式事务中,其实彼此之间也会相互锁定资源发生阻塞甚至死锁? 请问我理解的对吗?
昵称被占用了 2017-03-16
  • 打赏
  • 举报
回复
X锁肯定会引起其他进程等待
Tiger_Zhao 2017-03-16
  • 打赏
  • 举报
回复
好吧我没注意分布式事务。
以下属于个人猜想:内部就是两个独立的事务,始终不存在真正的“一个事务有两个连接”,两个事务锁定冲突很正常啊。
Tiger_Zhao 2017-03-16
  • 打赏
  • 举报
回复
先请问你怎么做到一个事务有两个连接?

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧