2013-05-10 34 views
0

存档并删除过程。哪一个被推荐?阅读时删除(添加每个删除语句)并在最后进行批量删除或单个删除时删除是否好?

此过程在窗口关闭以外的任何外部事务结束时运行,以阻止干扰下面的tx。

一,批量删除

object = read() 

while (hasNext()) 
{ 
    object = next(); 
    call the archive_process to archive the object. 
    add to delete. 
} 

batch_delete. 

II。单一删除语句。

object = read() 

while (hasNext()) 
{ 
    object = next(); 
    call the archive_process to archive the object. 
} 

use the same sql as above, but instead delete in a single statement. 

哪一个被推荐?

+1

这取决于。我希望在指定要删除的所有数据的位置使用单个删除。 – 2013-05-10 17:12:54

+0

@LuiggiMendoza是的,这就是我想要做的(使用一个删除语句),但只是想检查。谢谢! – 2013-05-10 17:14:55

+1

如果另一个事务在您执行归档时添加了满足读取查询的新项目,则第二个解决方案会将其删除而不归档。 – 2013-05-10 17:14:57

回答

2

这一切都取决于您的特定需求:

  • 如果你的代码需要每个记录被删除,因此它可以执行其他任务,在每个循环时间删除一行可能是必要的。
  • 如果您的代码可以独立完成其任务,那么记录将被删除或不删除,最后删除所有内容(在单个批次中)会更好。

您需要记住,每个delete都会触发您的数据操作,并且可能会影响程序的磁盘读写速度。与许多单行删除操作相比,单个批量删除可能会对代码的速度产生积极影响。

0

除了其他的答案 - 检查你还有足够的UNDO支持DELETE命令。此外,更大的音量DELETE可能会变得太慢 - 检查是否存在替代方法。请注意许多指标的影响。