gpt4 book ai didi

sql - 如何避免数据库死锁?

转载 作者:行者123 更新时间:2023-12-04 21:42:19 24 4
gpt4 key购买 nike

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

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

如果我们不应该避免僵局(你将不得不非常努力地让我相信这一点),那么我们应该怎么做?

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

最佳答案

只是不要使用那些可能导致死锁的功能。 ON DELETE CASCADE可以以强制顺序的方式重写,从而避免死锁。
SELECT ... FOR UPDATE专门设计用于避免锁定——它允许您选择和锁定一行,以便您可以在所有线程上保持一致的顺序。

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

关于sql - 如何避免数据库死锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14131108/

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