2013-05-10 35 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可能會變得太慢 - 檢查是否存在替代方法。請注意許多指標的影響。