锁表需要更多时间来执行更新语句oracle

时间:2011-12-19 14:25:21

标签: oracle plsql locking batch-processing

我们有一个批处理过程,它读取基表并执行一些聚合,然后用修改后的标志更新表。

我们有一个更新声明,它可以更新大约300万行。作为业务需求的一部分,我们需要在我们正在更新的表上进行表级锁定。

UPDATE TABLE1 t1 SET PARAMETER1=(SELECT p1 from TABLE2 t2 where t1.ROW_ID=ROWIDTOCHAR(t2.ROW_ID)

我们今天观察到的是,带有表级锁定的更新语句需要35分钟,而没有表级别锁定需要20分钟。

我无法确定这一观察结果。请帮忙!

干杯, Dwarak

2 个答案:

答案 0 :(得分:1)

除了您的数据库之外,没有人可以告诉您观察的原因。你必须做一个AWR报告。

但是,很可能UPDATE的运行时间更长,因为该表之前已被锁定。

答案 1 :(得分:1)

您是否考虑过测试中的缓存(包括数据库和文件系统)?根据您执行的操作,由于数据已经在内存中,因此一个语句可能运行得更快。