我们有一个批处理过程,它读取基表并执行一些聚合,然后用修改后的标志更新表。
我们有一个更新声明,它可以更新大约300万行。作为业务需求的一部分,我们需要在我们正在更新的表上进行表级锁定。
UPDATE TABLE1 t1 SET PARAMETER1=(SELECT p1 from TABLE2 t2 where t1.ROW_ID=ROWIDTOCHAR(t2.ROW_ID)
我们今天观察到的是,带有表级锁定的更新语句需要35分钟,而没有表级别锁定需要20分钟。
我无法确定这一观察结果。请帮忙!
干杯, Dwarak
答案 0 :(得分:1)
除了您的数据库之外,没有人可以告诉您观察的原因。你必须做一个AWR报告。
但是,不很可能UPDATE
的运行时间更长,因为该表之前已被锁定。
答案 1 :(得分:1)
您是否考虑过测试中的缓存(包括数据库和文件系统)?根据您执行的操作,由于数据已经在内存中,因此一个语句可能运行得更快。