Aar*_* Fi 4 sql oracle
我有一个Update查询,每次只重新计算一行中的每个列值.由于这些Update查询发生在同一行,我一直看到更多的行级锁争用.
我想也许一个解决方案就是让后续的更新只是抢占任何正在进行的更新.这可能吗?Oracle是否支持此类更新?
要完整地阐明这个想法:
我的想法是,第5步可以简单地说:查询#1中止,查询#2继续.或者可以免除首先获得行级锁定.
我意识到如果更新查询只更新给定行中的列的子集,则此逻辑将是灾难性的错误.但事实并非如此 - 每次都会重新计算每一列.
Gar*_*ers 5
我会问一个物理表是否是正确的机制,无论你在做什么.一个因素是如何处理交易.任何意味着"不要在交易期间锁定"的东西都会遇到交易问题.
有几个非交易选项:
全局上下文值可能很有用(取决于您是否在RAC上)以及如何在重新启动后处理持久性.
另一个选项是DBMS_PIPE,您有一个后台进程维护该表,而单独的会话将消息发送到该进程,而不是直接更新表.
排队是另一种想法.
如果您只需要减少锁定记录的时间,那么自主事务可能就是答案
归档时间:
15 年,2 月 前
查看次数:
3891 次
最近记录:
11 年,11 月 前