gpt4 book ai didi

sql - oracle数据库中的分发事务锁

转载 作者:行者123 更新时间:2023-12-04 07:03:30 25 4
gpt4 key购买 nike

我对 oracle 数据库中的事务锁有一些疑问。到目前为止我发现的是:

事业 : 已超过分布式事务中等待锁的时间。这个时间在初始化参数DISTRIBUTED_LOCK_TIMEOUT中指定.

行动 : 这种情况被视为死锁,语句被回滚。要将超时间隔设置为更长的间隔,请调整初始化参数DISTRIBUTED_LOCK_TIMEOUT ,然后关闭并重新启动实例。

我想更详细地了解的其他一些事情是:

  • 有人提到发生了“分布式事务”中的锁定。那么什么样的数据库操作会导致这种情况呢?更新记录?选择记录 ?
  • 无论如何,“分布式”是什么意思。我在各处都看到过这个术语,但我似乎无法推断出它的含义。
  • 我们可以做些什么来减少这种锁的实例?
  • 最佳答案

    分布式事务意味着您的事务有两个不同的参与者。如果您使用 PL/SQL,这通常意味着涉及多个数据库。但它可能只是表明应用程序在与数据库的交互中使用了外部事务协调器。例如,一个 J2EE 应用程序可能想要创建一个分布式事务,该事务包括针对数据库发出 SQL 语句以将 100 美元从帐户 A 转移到帐户 B 以及为该事务创建 JMS 消息的应用程序服务器操作,该操作最终将导致发送转移的电子邮件通知。在这种情况下,应用程序希望确保中间层的状态与后端的状态匹配。

    分布式事务不是免费的。它们可能涉及相当多的额外开销,因为您至少需要使用 two-phase commit protocol验证作为分布式事务一部分的所有组件都已准备好提交并验证它们都已提交。这涉及发送大量网络数据包,这些数据包可能占 OLTP 事务等待时间的很大一部分。分布式事务也会导致管理问题,因为您最终会遇到这样的情况:一个参与者的事务在表明它已准备好提交后失败,或者事务协调器失败而各个参与者都有打开的事务。

    所以第一个问题是你的应用程序是否真的需要分布式事务。有时,开发人员会发现他们在真正不需要的时候意外地请求了分布式事务。如果您不确定什么是分布式事务,则完全有可能您并不真正需要它们。

    关于sql - oracle数据库中的分发事务锁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1463139/

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