gpt4 book ai didi

sql - 零 SQL 死锁设计 - 有编码模式吗?

转载 作者:行者123 更新时间:2023-12-01 19:23:20 25 4
gpt4 key购买 nike

我在 MS SQL Server 2005 之上运行的 .NET 2.0 Web 应用程序上遇到了非常罕见但烦人的 SQL 死锁。过去,我们一直以非常经验的方式处理 SQL 死锁 - 基本上是调整查询,直到它有效。

然而,我发现这种方法非常不令人满意:耗时且不可靠。我非常愿意遵循确定性查询模式,以确保通过设计永远不会遇到 SQL 死锁。

例如,在 C# 多线程编程中,一个简单的设计规则(例如必须按照其字典顺序获取锁)可确保永远不会发生死锁。 p>

有没有保证不会出现死锁的 SQL 编码模式?

最佳答案

编写防死锁代码确实很困难。即使您以相同的顺序访问表,您仍然可能会遇到死锁 [1]。我写了a post on my blog其中详细阐述了一些可以帮助您避免和解决僵局情况的方法。

如果您想确保两个语句/事务永远不会死锁,您可以通过使用 sp_lock 系统存储过程观察每个语句消耗哪些锁来实现它。要做到这一点,您必须非常快,或者使用带有保持锁提示的开放事务。

<小时/>

注释:

  1. 任何同时需要多个锁的 SELECT 语句都可能对以相反顺序获取锁的智能设计事务造成死锁。

关于sql - 零 SQL 死锁设计 - 有编码模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/111707/

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