也许对这个问题没有简单的答案,但我想问一问,如果有人(如果不是简单的答案)至少有一个见识的话。
在很多情况下,我都会创建一个循环,遍历数据库表中的许多记录以进行一些更新,并且可以合法地在末尾进行一次大提交,或者在处理它时提交每条记录。即一次提交一个不会造成任何数据完整性问题。
是否有明确的案例说明哪个更好?
让我想到的是,我最近有一个这样的程序,因为它是一个运行时间很长的程序(大约80分钟),所以我从一个大型提交切换为一小段提交,但由于失败而中途失败数据。我解决了问题并重新运行,但是当我可以只处理先前未处理的记录时,它必须从头开始重新开始。
当我进行此更改时,我注意到运行时间大致相同。
假定不需要回滚整个持久性的能力(在这种情况下,只有一个答案;在外部提交),在循环内部提交可以使事务日志较小,但是需要更多往返数据库的往返时间。完全相反。哪个更快,取决于平均操作数和要整体提交的数据量。对于可保留约10-20条记录的例程,请在循环外提交。对于1m-2m的记录,我要分批提交。
| 归档时间: |
|
| 查看次数: |
5103 次 |
| 最近记录: |