也許這個問題沒有簡單的答案,但是我要求如果有人有,如果不是簡單的答案,至少有一個見解。更好的提交內部或外部循環?
我已經有很多場合創建一個循環,通過數據庫表中的許多記錄執行某些更新,並且我可以合法地在最後做一個大提交,或者在我處理時提交每條記錄它。即一次提交一個不會產生任何數據完整性問題。
有明確的情況哪個更好?
讓我想起的是,我有一個這樣的程序,我最近從一個大的提交切換到一堆小提交,因爲它是一個相當長的運行程序 - 大約80分鐘 - 它失敗了一半通過壞數據的方式。我解決了這個問題並重新運行了,但是當它能夠處理先前未處理的記錄時,它必須從一開始就重新開始。
我注意到當我做出這個改變時,運行時間差不多一樣。
我不確定你的意思是「永遠不會寫一個循環來進行更新,除非處理相當大的批次」。嗯,而不是什麼?如果我只有一個記錄要更新,當然我不會有循環。 – Jay 2010-10-08 17:40:37
是的,如果整個更新必須被視爲一個單一的事務,如果只有一部分完成將導致不一致的數據,當然提交必須在外面。我在想,從邏輯的角度來看,這並不重要。 – Jay 2010-10-08 17:41:53
與基於集合的更新相反。如果你有100條記錄需要更新,那麼他們可以在99.9%的時間內完成一次無循環更新,並且應該這樣做。 Daatbase不適合逐行操作。 – HLGEM 2010-10-08 18:04:22