如何避免数据库死锁?

2023-11-29

一些数据库功能,例如SELECT ... FOR UPDATE and ON DELETE CASCADE,隐式地容易受到死锁的影响,因为数据库没有指定将使用什么锁定顺序。我发现two 讨论这暗示 SQL 标准并未指定此行为,更不用说具体的实现了。因此,我假设我们无法控制锁定顺序(至少,如何做到这一点并不明显)。

如果我们不能依赖锁定顺序,我们应该如何避免数据库死锁?

如果我们不应该避免僵局(你将不得不非常努力地说服我这一点)那么我们应该做什么?

这个问题与数据库无关,所以请不要问我正在使用哪个数据库。


只是不要使用那些可能导致死锁的功能。ON DELETE CASCADE可以以强制执行顺序的方式重写,从而避免死锁。

SELECT ... FOR UPDATE专门设计用于允许您避免锁定——它允许您选择并锁定一行,以便您可以在所有线程上保持一致的顺序。

您必须小心使用它,如果您不了解所有更新的锁定顺序,可能会导致死锁。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免数据库死锁? 的相关文章

  • SQL 内连接两个具有相同列名的表

    我有两个表 其列数不同 我不知道有多少列或名称是什么 例如表 A 和表 B TableA ID B ID variable TableB ID variable Query SELECT TableA TableB FROM TableA
  • MySQL - 基于日期加入

    是否可以根据同一日期连接两个表 而不考虑时间 就像是 从预约左侧加入销售 约会 日期 销售 日期 唯一的问题是它是一个日期时间字段 所以我想确保它只查看日期并忽略时间 你可以这样做 FROM appointments LEFT JOIN s
  • SQL Server 查询从字符串中删除最后一个单词

    SO 中已经有一个带有 MySQL 标签的问题的答案 因此 我决定让您的生活更轻松 并为 SQL Server 用户提供以下答案 总是很高兴看到不同的答案 也许会有更好的表现 快乐编码 SELECT SUBSTRING YourString
  • 在 ASP.NET 中将多个字段绑定到列表框

    我对 ASP NET 尤其是 LINQ 和 SQL 还很陌生 假设我有一个表 员工 其中包含 姓氏 名字 和 ID 字段 我想将其绑定到列表框 我希望列表框显示其内容 例如 LASTNAME FIRSTNAME 并且我希望每个项目的值为 I
  • 如何在 Postgres 中将表从公共模式移动到其他模式

    Postgres 9 1 数据库包含公共模式中的表 yksus1 ykssu9 pgAdmin 显示了这些定义 如下面的代码所示 如何将这些表移至 Firma1 架构 Firma1 模式中的其他表具有对这些表主键的外键引用 对这些表的外键引
  • 解析器解析 SQL 查询并返回 Java 中的列名和相应的表名 [重复]

    这个问题在这里已经有答案了 可能的重复 Java 的 SQL 解析器库 https stackoverflow com questions 660609 sql parser library for java 我需要一个解析器 它应该以以下
  • 树形表的sql查询

    我有一个树形结构的表 id parentId name 1 0 Category1 2 0 Category2 3 1 Category3 4 2 Category4 5 1 Category5 6 2 Category6 7 3 Cate
  • 将 SQL 保留在存储过程中与代码中的优点和缺点是什么

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动
  • 从 all_tab_columns 中选择,其中表有 > 0 行

    我需要在大型数据库中搜索与列名匹配的表 但该表必须有超过 0 行 顺便说一句 这是查询 SELECT FROM all tab columns WHERE column name LIKE ID SUPPORT 您可以使用单个查询来过滤名称
  • mysql查询获取根父级

    我的表中有以下数据categories id parent id title 1 0 A 2 1 B 3 2 C 4 3 D 5 4 E 现在我想获取类别 id 4 的根类别标题 parent id 0 即标题 A 的类别 id 1 如何在
  • 用数组“插入”

    我想知道是否有一种方法可以在值列表上使用 插入 我正在尝试这样做 insert into tblMyTable Col1 Col2 Col3 values value1 value2 value3 所以 我想说的是 value2 将是一个字
  • 函数 SQL 中的函数

    我可以在表值函数中调用标量函数吗 Thanks 是的 只要表值函数完成后返回一个表即可 用户自定义函数可以嵌套 也就是说 一个用户定义的函数可以 呼叫另一个 嵌套级别为 被调用函数时递增 开始执行 并在以下时间递减 被调用函数完成 执行 用
  • SQL - 只能在计算列上创建 UNIQUE 或 PRIMARY KEY 约束

    我正在尝试创建一个带有名为 profileID 的计算列的表 但是当我尝试这样做时 CREATE TABLE Profiles id int IDENTITY 1 1 NOT NULL profileID AS id 19379 62327
  • WHERE IN 条件不接受字符串值

    我正在动态构造一个带有名称的字符串用户数据在 PL Sql 过程中通过附加用户名 单引号 和逗号 的形式 abc123 xyz456 pqr789 但是当我将此字符串传递给 SELECT 语句的 WHERE IN 条件时 SELECT FR
  • 无法附加数据库或创建新数据库 - SQL Server 2008 [重复]

    这个问题在这里已经有答案了 可能的重复 SQL Server 2008 Express 无法附加 mdf 文件 https stackoverflow com questions 1424811 sql server 2008 expres
  • 使用 IF..ELSE IF 控制 T-SQL SP 中的流程 - 还有其他方法吗?

    我需要将我的 T SQL 存储过程 MS SQL 2008 控制流分支到多个方向 CREATE PROCEDURE fooBar inputParam INT AS BEGIN IF inputParam 1 BEGIN END ELSE
  • 仅选择多索引 DataFrame 的一个索引

    我正在尝试仅使用多索引 DataFrame 中的一个索引创建一个新的 DataFrame A B C first second bar one 0 895717 0 410835 1 413681 two 0 805244 0 813850
  • 将 1GB 文件的内容流式传输到单列下的 sqlite 表

    下面的实现给出了具有 4 GB 堆空间的 1 GB 大小的文件的内存不足错误 Files lines 将返回一个流 但在运行 Collectors joining 时会出现堆错误 我们可以使用 jooq 和 jdbc 保留原始行分隔符来流式
  • 使用 WAMP 在浏览器中显示为注释的 PHP 代码 [关闭]

    Closed 这个问题是无法重现或由拼写错误引起 help closed questions 目前不接受答案 正如标题中所述 我的 PHP 代码显示在浏览器代码检查器中 就像被注释掉一样 例如
  • 将查询结果即时导出到文件

    我需要将查询结果导出到 csv 文件并将该文件放在网络共享文件夹中 是否可以在存储过程中实现此目的 如果是 则会出现另一个限制 我可以在没有系统管理员权限的情况下实现此目的 也就是不使用 xp cmdshell BCP 实用程序吗 如果 2

随机推荐

  • xsd 从枚举或等效类型中选择多个值

    我有以下 XSD 示例
  • 以编程方式设置 AUTO_INCRMENT 值

    所以这有效 ALTER TABLE variation AUTO INCREMENT 10 但我想这样做 ALTER TABLE variation AUTO INCREMENT SELECT MAX id 1 FROM old db va
  • Java 中的字符串解析,使用 split 分隔符选项卡“\t”

    我正在处理一个以制表符分隔的字符串 我正在使用以下方法来完成此操作split功能 并且在大多数情况下都有效 当某个字段丢失时就会出现问题 因此我不会在该字段中获取 null 而是获取下一个值 我将解析后的值存储在字符串数组中 String
  • 为什么我要 make() 或 new() ?

    介绍文档用了很多段落来解释之间的区别new and make 但实际上 您可以在本地范围内创建对象并返回它们 为什么要使用这对分配器 Go 有多种内存分配和值初始化的方式 T someLocalVar new make 创建复合文字时也可能
  • 如何在 IIS 中托管 WCF 服务而无需 SVC 文件

    我想在 IIS 中部署双接口 SOAP REST XML JSON WCF 服务 只需一个配置文件和二进制文件 URL 中没有 svc 文件 我们使用VS2012和 Net 4 5 我们有类似的东西 我遵循这里的指南 http blogs
  • 使用 chrome 驱动程序/firefox 驱动程序时如何更改 Webdriver 中的文件下载位置

    我试图通过使用特定文件夹内的 另存为 选项来保存图像 我找到了一种方法 可以右键单击要使用另存为选项保存的图像 但我遇到的问题是在获取操作系统窗口询问在哪里保存文件后 我无法发送所需的位置 因为我不知道该怎么做 我浏览了这个论坛上提出的类似
  • SwiftUI - Mapkit - 绑定 Mapkit 并在注释标注按钮上显示视图

    我有一个 SwiftUI 应用程序 其中显示了一张地图 使用由 UIViewRepresentable 制作的 Mapkit 并显示了不同的注释 在每个注释上 我都实现了一个标注按钮 我想在按下按钮时完全更改主视图 我的想法是使用主视图和地
  • 如何使用 itext 7.1.0 将以文本为内容的矩形旋转到某个角度(例如逆时针方向 90')?

    我必须有一个矩形 其中包含一些上下文作为文本 我必须将矩形旋转到某个角度 例如逆时针 90 这样内容也会旋转 然而 当我编写这段代码时 它只显示一个矩形 这是代码 package main import java io FileNotFou
  • XSLT 1.0 分组依据

    我有以下 XML 数据
  • 有没有办法在 pandas 数据框中附加列表? [复制]

    这个问题在这里已经有答案了 我在 pandas 中有一个专栏dataframe dfr其中有一个空列表 当我尝试附加它时 整个列都被更改 下面是附加的代码 N 10 Nr list range 10 dfr pd DataFrame Nr
  • 计算图像浏览次数

    我想要一个图像代码来计算图像被查看的次数 无论图像在哪个网站上找到 我想使用 img src 标签 并让 src 指向一个 php 页面 该页面计算该视图 然后返回要查看的图像 我在想这样的事情 img src www mywebsiteu
  • 在导航选项卡上切换处于活动状态的 css 类

    我对 Vue 还很陌生 所以我正在构建一个测试项目来尝试一下 我有一些标签 div class tabs ul li class is active a first tab a li li a second tab a li li a th
  • 在 R 中将数据帧按 3 列拆分为所有可能的数据帧组合

    我需要从原始数据帧拆分为 3 列的所有可能组合中接收所有可能的数据帧 所有数据框必须包含 id 列 我陷入了困境 不知道如何保存所有可能的数据帧 以便可以进一步处理所有数据帧 想法之一是将它们保存到列表中 但我仍然不知道如何将所有必要的列绑
  • 通过 ref 传入对象

    有什么区别 public function Foo ref Bar bar bar Prop 1 public function Foo Bar bar bar Prop 1 本质上 ref 的意义是什么 对象不总是通过引用吗 关键是你从来
  • 重写所有 URL

    我想重写类似的东西 http www example com index php var1 val1 var2 val2 var3 val3 Into http www example com var1 val1 var2 val2 var
  • C++:为事件处理程序创建匿名类

    免责声明 该描述包含许多 Qt 细节 他们没有必要回答这个问题 我只是想给你介绍一下背景 我需要对此做出反应focusInEvent of a QTextEdit 不幸的是 这不能作为信号使用 这就是为什么我需要子类化QTextEdit 由
  • 从另一个 ViewController 获取 NSDate 到 titleForHeaderInSection

    我有两个视图 第一个是日历 第二个是带有tableView 我正在尝试显示从第一个视图中选择的日期 设法获取里面选定的日期ViewDidLoad我的 secondaryView 的方法 我如何添加我的NSDate to my NSStrin
  • iTextSharp CreateInk 方法:曲线和角

    我正在使用 iTextSharp 使用 PdfAnnotation CreateInk 在 PDF 文档中绘制标记图形 我正在尝试绘制矩形 并传入五个坐标的数组 我知道 iTextSharp 有一个专门用于绘制矩形的函数 但我尝试仅使用一种
  • 如何在 macOS 上从源代码构建 docker-ce

    有人知道是否有从源代码构建并用其替换 Mac 上的 docker 二进制文件的指南吗 自述文件没有说所以我尝试了一些 make target 但得到了https github com docker for mac issues 3353 E
  • 如何避免数据库死锁?

    一些数据库功能 例如SELECT FOR UPDATE and ON DELETE CASCADE 隐式地容易受到死锁的影响 因为数据库没有指定将使用什么锁定顺序 我发现two 讨论这暗示 SQL 标准并未指定此行为 更不用说具体的实现了