【问题标题】:Can two transaction run at same time in Oracle?两个事务可以在 Oracle 中同时运行吗?
【发布时间】:2010-08-06 20:38:13
【问题描述】:

我有一个方法

void SaveApplicationData()
{
   begin transaction
   update
   insert
   commit transaction
}

如果两个用户同时调用这个方法,这两个数据库事务可以同时运行吗?

【问题讨论】:

    标签: transactions concurrency oracle10g


    【解决方案1】:

    大量事务可以同时运行。但是,如果它们更新相同的行,它们很可能存在锁定问题,并且可能会回滚一个或多个。 (我已经很久没有处理冲突的交易了。)

    【讨论】:

    • 在 Oracle 中,一个事务会简单地等待另一个事务完成。唯一会自动回滚的情况是发生死锁。
    • @Ding:事务可以同时进行。只要它们不尝试更改相同的数据,它们就会同时运行,或者在某些情况下,如果一个事务正在读取数据,另一个事务(尚未提交)已更改。事务就像它们按顺序运行一样,Oracle 投入了大量工作来使其顺利运行,但是您可以在一个仍在处理的同时启动许多事务。
    【解决方案2】:

    是的,它们可以同时运行

    【讨论】:

      【解决方案3】:

      确保使用正确的Isolation Level

      【讨论】:

        【解决方案4】:

        不,它不能同时运行。假设你有一个账户有 k 美元,在第一次交易中你要求提取 k 美元,在第二次交易中你要求相同。您将获得 2 k 美元,因为您同时进行了交易,并且您的账户余额显示两次交易均为 k 美元。所以避免这种情况,我认为他们使用同步。没有完成第一笔交易,你不能去第二个,如果你去,你必须等到第一个完成。

        【讨论】:

          猜你喜欢
          • 2021-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-07-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多