如果多个用户希望修改Oracle数据库中的同一数据块,会发生什么情况

如果多个用户希望修改Oracle数据库中的同一数据块,会发生什么情况,oracle,oracle11g,database-performance,database-administration,Oracle,Oracle11g,Database Performance,Database Administration,如果多个用户试图修改同一块中的行,Oracle数据库如何处理这种情况?我知道他们不能修改同一行。但是对于同一块中的不同行,它是如何工作的呢? 我的意思是,Oracle如何处理行级锁,而当您修改一行时,它会修改整个块?您应该在dba.stackexchange.com上问这个问题,以便获得更好的响应 当DML(插入、更新、删除)或SELECT FOR Update完成时,会发生行级锁定。此行级锁由包含创建锁的DML的事务控制。当事务提交或回滚时,锁被释放。如果另一个事务试图更新同一行,它必须等待初

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

您应该在dba.stackexchange.com上问这个问题,以便获得更好的响应

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

区块标头包含一个ITL(感兴趣的交易列表),其中为每个要修改区块的交易分配了插槽。INITRANS表设置是一个允许在表块上执行多个事务的数字。默认值为低,对于高并发表,该值设置为10到50之间的任意值。如果INITRANS设置为1,则将等待下一个尝试修改同一块的事务


因此,不修改整个块;行锁在ITL和分配给表的数字内处理。

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