如果多个用户想要修改Oracle数据库中的相同数据块,会发生什么

问题描述 投票:0回答:1

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

oracle oracle11g database-performance database-administration
1个回答
0
投票

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

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

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

因此,整个块不会被修改;行锁在ITL中处理,并分配给表。

© www.soinside.com 2019 - 2024. All rights reserved.