gpt4 book ai didi

t-sql - 如何分析 Azure SQL 死锁?

转载 作者:行者123 更新时间:2023-12-03 03:38:30 24 4
gpt4 key购买 nike

我知道有人问过这个问题here但 1)它相对较旧,2)它对我没有多大帮助。

我在数据库上进行了一些操作,遇到了相对较多的死锁。设置如下:

表格:

表 A 带有外键到表 B。

操作:

插入表A

插入表B

更新表 B 中的行

删除表B中的行

删除表A中的行

问题:

这些操作基本上可以按任何顺序发生,因为我有多个辅助角色,因此这些操作必须是幂等的,但是,每个辅助角色将使用表 A 中的不同主键。我仍在尝试解决问题表上锁的概念,据我了解,A 上的任何删除都会首先锁定表 B,删除那里的相关行,然后从 A 中删除该行。我目前假设这是一个原子操作,没有时间执行锁定表 B 和锁定表 A 之间有额外的锁,因为我无法想象有什么方法可以解决这个问题。

我目前能够在 Microsoft Visual Studio 中捕获以下格式的异常:

事务(进程 ID xxx)在锁资源上与另一个进程发生死锁,并被选为死锁牺牲品。重新运行事务。

此异常似乎可能发生在上述任何操作上。

我的问题是:我如何知道哪些锁/事务导致了死锁?有谁知道在我们收到异常后有什么有用的查询吗?

最佳答案

sys.event_log答案就在这里。

它位于您服务器的 masterdb 中,并且应该包含一个条目,其中包含您的数据库在上个月遇到的所有死锁图。

有了死锁图,sql server 上有很多教程 deadlock graph debugging

关于t-sql - 如何分析 Azure SQL 死锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15503334/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com