如何避免数据库死锁?

2023-11-29

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

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

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

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


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

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

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

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

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

  • 有没有办法刷新 Oracle 中 PL/SQL 的输出?

    我有一个从 shell 脚本中调用的 SQL 脚本 需要很长时间才能运行 目前它包含dbms output put line不同点的声明 这些打印语句的输出会出现在日志文件中 但仅在脚本完成后才会出现 有什么方法可以确保脚本运行时输出出现在
  • Python 和 SQLite:插入表

    具有以下表架构 tablename name varchar 100 age int sex char 1 有一个list有 3 行 每行代表一个表行 row1 laks 444 M row2 kam 445 M row3 kam 445
  • 如何使用 SQL 语法更改主键约束?

    我有一个表 其主键约束中缺少一列 我不想通过 SQL Server 对其进行编辑 而是想将其放入脚本中以将其添加为更新脚本的一部分 我可以使用什么语法来执行此操作 我必须删除并重新创建关键约束吗 是的 唯一的方法是使用 Alter 表删除约
  • 具有多个表的 SQL select 语句

    给出以下两个表 Person table id pk first middle last age Address table id pk person id fk person id street city state zip 如何创建返回
  • 选择视图的列

    我正在尝试选择 a 的列名称view以类似的方式选择information schema columns 我似乎找不到办法做到这一点 有其他人以前这样做过或者知道这是否可能吗 information schema columns Table
  • 当用户单击链接时如何在表中创建新字段

    我的表格如下图所示 In order to insert data from this form into table I coded this supplier info supplier name POST supplier name
  • TFS 2017 如何使用 SQL 查询工作项

    我正在寻找一种使用 SQL 选择直接从 TFS 的 SQL 数据库查询工作项的方法 对于 TFS 2010 您可以使用一些数据库视图来实现此目标 TFS2010 如何在关系仓库上使用 SQL 查询工作项 https blogs msdn m
  • 通过sql视图向多个表插入数据

    mysql 有没有办法通过视图向多个表插入数据 MySQL 参考手册对于可更新视图是这样说的 一些视图是可更新的 也就是说 您可以在诸如以下的语句中使用它们UPDATE DELETE or INSERT更新基础表的内容 为了使视图可更新 必
  • 在 VBScript 中的 SQL 字符串中使用 Excel 命名范围

    我已经在这里和谷歌上搜索过 但仍然无法解决我的问题 我正在尝试在我的中等效地使用 Excel 的命名范围 vbs文件 下面的代码可以在 excel 中的 VBA 中运行 但我无法让它在 vbs file ThisWorkbook Sheet
  • 如何使用 SQL 计算一条路线的行驶次数?

    我需要确定在给定的日期范围内每辆车行驶特定路线的次数 但建立在数据库之上的 GPS 管理软件没有此功能 该数据库包含多个存储 GPS 路线和位置数据的表 路线由多个位置和序列号组成 位置是附加到名称的一组上限和下限纬度 经度值 车辆每分钟将
  • 从条件表中获取 WHERE 子句的条件

    我创建了以下简单的DataModel 我用以下数据填充了表格 1 桌子Customer INSERT INTO test customer CustomerName Country RegistrationDate VALUES Custo
  • 将多对多关系中的所有相关记录分组,SQL 图形连接组件

    希望我错过了一个简单的解决方案 我有两张桌子 其中包含一份公司列表 第二个包含出版商列表 两者之间的映射是多对多的 我想要做的是将表 A 中与表 B 中的发布商有任何关系的所有公司捆绑或分组 反之亦然 最终结果看起来像这样 GROUPID
  • varchar 值的转换溢出了 int 列

    对于某些值 nReservationID SELECT phoneNumber CASE WHEN ISNULL rdg2 nPhoneNumber 0 0 THEN ISNULL rdg2 nMobileNumber 0 ELSE ISN
  • 一张 400GB 表,一个查询 - 需要调优思路 (SQL2005)

    我有一个大表 我想对其进行优化 我正在使用 MS SQL 2005 服务器 我将尝试描述它的使用方式 如果有人有任何建议 我将非常感激 该表约400GB 有1亿行 每天插入100万行 该表有 8 列 1 列数据和 7 列用于查找 排序 k1
  • 如何将mysql的默认端口从3306更改为3360

    我想更改MySQL服务器的默认端口号 目前它是3306 我想将其更改为3360 我努力了 port 3360 但事情对我不起作用 请提供更改端口的查询 而不是任何配置 我使用的是 Windows 8 64 位 您需要编辑您的my cnf文件
  • SQL仅选择列上具有最大值的行[重复]

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 这个问题在这里已经有答案了 我有这个文件表 这里是简化版本 id rev content 1 1 2 1 1 2 1 3 如何
  • QSqlDatabasePrivate::removeDatabase:连接“myConnectionName”仍在使用中,所有查询将停止工作

    我有一个文件夹 里面有很多数据库 有时可能会删除或添加数据库到该文件夹 所以我使用 QTimer 并读取所有数据库 这是我的代码 this gt timer new QTimer this this gt timer gt setInter
  • Android 和 Azure 移动服务:使用 invokeAPI 返回记录集

    我正在尝试一些非常简单的事情 我有一个名为 missingvehiclesfrominventoryjob 的自定义 API 它只是从标准 SQL 查询返回记录集 我可以在我的 WinForms 和 Windows Phone 应用程序中轻
  • 如何在 JPA/Hibernate 中执行本机 SQL 脚本?

    我有一个带有数据库转储的 SQL 脚本 我如何使用 Hibernate 执行它EntityManager 我这样尝试过 EntityManager manager getEntityManager Query q manager creat
  • 依靠条件连接大表的速度很慢

    当表很小时 这个查询有合理的时间 我试图找出瓶颈是什么 但我不知道如何分析EXPLAIN结果 SELECT COUNT FROM performance analyses INNER JOIN total sales ON total sa

随机推荐

  • 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 标准并未指定此行为 更不用说具体的实现了