【问题标题】:What happens if multiple users want to modify the same data block in Oracle Database如果多个用户想要修改 Oracle 数据库中的同一个数据块会发生什么
【发布时间】:2020-03-16 09:20:32
【问题描述】:

如果多个用户尝试修改同一块中的行,Oracle 数据库如何处理这种情况?我知道他们不能修改同一行。但是它是如何对同一块中的不同行起作用的呢? 我的意思是,Oracle如何处理行级锁,而当您修改一行时它会修改整个块?

【问题讨论】:

  • 工作正常,据我所知。什么都没有发生,每个人都修改了他们的行,他们不会互相阻止(意思是:阻止)。
  • 简单的回答:它只是在 Oracle 中工作。如果您想了解更详细的信息,请参阅Overview of the Oracle Database Locking Mechanism

标签: oracle oracle11g database-performance database-administration


【解决方案1】:

您应该在 dba.stackexchange.com 上提出这个问题以获得更好的答复。

当 DML(插入、更新、删除)或 SELECT FOR UPDATE 完成时会发生行级锁定。此行级锁由包含创建锁的 DML 的事务控制。当事务提交或回滚时,锁被释放。如果另一个事务试图更新同一行,它必须等到初始事务提交或回滚。

区块头包含一个 ITL(Interested Transaction List),为每个想要修改区块的交易分配插槽。 INITRANS 表设置是一个允许在表块上进行多个事务的数字。默认值为低,对于高并发表,设置为 10 到 50 之间的任何值。如果 INITRANS 设置为 1,则将等待下一个尝试修改同一块的事务。

所以,整个块没有被修改;行锁在 ITL 内处理并分配给表的编号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 2019-01-13
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多