gpt4 book ai didi

sql - 什么决定了多表查询的锁定顺序?

转载 作者:行者123 更新时间:2023-12-04 01:09:30 27 4
gpt4 key购买 nike

SQL 标准是否指定了多表查询的锁定顺序?

例如,给定:
SELECT department.id FROM permissions, terminals, departments WHERE department.id = ? AND terminal.id = ? AND permissions.parent = department.id AND permissions.child = terminals.id;

  • SQL 标准是否保证锁定顺序还是由(特定于实现的)执行计划决定?
  • 有没有办法保证锁定顺序?
  • 如果没有办法保证锁定顺序,我们应该如何防止死锁?

  • 更新 :请不要在没有解释你的理由的情况下投票结束这个问题。就我而言,这是一个编程问题,这使它成为 Stackoverflow 的主题。如果您认为问题需要进一步完善,请解释,我将非常乐意为您解答。

    最佳答案

    根据 https://stackoverflow.com/a/112256/14731锁定顺序由特定于实现的执行顺序决定。答案进一步说,没有一种确定性的方法来防止死锁。而在命令式编程中,我们可以通过以相同的顺序获取锁来防止死锁,而在声明式系统中,我们似乎必须通过在检测到死锁时重试操作来解决它们。

    此外,我认为由于数据库执行计划在其生命周期内发生变化,因此在技术上不可能防止死锁。

    关于sql - 什么决定了多表查询的锁定顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16551962/

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