哪个过程对于影响零行的更新更有效?
UPDATE table SET column = value WHERE id = number;
IF SQL%Rowcount > 0 THEN
COMMIT;
END IF;
Run Code Online (Sandbox Code Playgroud)
要么
UPDATE table SET column = value WHERE id = number;
COMMIT;
Run Code Online (Sandbox Code Playgroud)
换句话说,如果更新影响ZERO行并发出提交,我是否会产生任何额外费用?
我有一个系统受到日志文件同步等待的阻碍...我想知道是否发出提交; 针对影响零行的事务,会将该语句写入日志,从而导致LGWR上出现更多争用.
COMMIT 确实强制日志文件同步,因此系统必须等待.
但是,ROLLBACK它也会在某个时候发生其中任何一个.
因此,如果您既不发出COMMIT也不发布ROLLBACK,那么您只是停留在一个开放的事务中,迟早会导致日志同步等待.
您可能希望批处理UPDATE操作,而不是等待第一次成功更新并提交.