更新零行然后提交?

Ste*_*age 4 sql oracle commit

哪个过程对于影响零行的更新更有效?

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上出现更多争用.

Qua*_*noi 5

COMMIT 确实强制日志文件同步,因此系统必须等待.

但是,ROLLBACK它也会在某个时候发生其中任何一个.

因此,如果您既不发出COMMIT也不发布ROLLBACK,那么您只是停留在一个开放的事务中,迟早导致日志同步等待.

您可能希望批处理UPDATE操作,而不是等待第一次成功更新并提交.