2010-07-02 60 views
2

我的應用程序當前需要將大量數據上載到數據庫服務器(SQL Server),並在本地SQLite數據庫(本地緩存)上。高效使用SQL事務

爲了達到速度的目的,我在將數據插入數據庫時​​總是使用事務。但是現在我正在處理類似20k行或更多的插入批次,我擔心事務可能會導致問題。基本上,我不知道的是,如果交易限制了您可以在其下插入多少數據。

使用具有大量行的事務插入到數據庫中的正確方法是什麼?例如,你是否每1000行開始/提交一次?

+0

您使用的是哪種類型的數據庫? – krock 2010-07-02 05:06:21

回答

1

不,沒有這樣的限制。與您可能認爲的相反,SQLite會將待處理的事務寫入數據庫文件,而不是RAM。所以你不應該在交易中寫入的數據量上受到限制。

見SQLite的文檔這些信息:http://sqlite.org/docs.html

遵循這樣的實現限制鏈接「SQLite中限制」。

請點擊鏈接「SQLite如何實現原子提交」以瞭解事務如何工作

1

我沒有看到這樣做的任何問題,但如果有任何約束/參照完整性錯誤,那麼可能你再次插入它們,並且表被鎖定,直到交易被提交。分解成較小的部分,同時記錄每批中的活動將有所幫助。

更好的選擇是將BCP插入到目標中,同時處理很多行甚至是SSIS包來執行此操作。