我的應用程序當前需要將大量數據上載到數據庫服務器(SQL Server),並在本地SQLite數據庫(本地緩存)上。高效使用SQL事務
爲了達到速度的目的,我在將數據插入數據庫時總是使用事務。但是現在我正在處理類似20k行或更多的插入批次,我擔心事務可能會導致問題。基本上,我不知道的是,如果交易限制了您可以在其下插入多少數據。
使用具有大量行的事務插入到數據庫中的正確方法是什麼?例如,你是否每1000行開始/提交一次?
我的應用程序當前需要將大量數據上載到數據庫服務器(SQL Server),並在本地SQLite數據庫(本地緩存)上。高效使用SQL事務
爲了達到速度的目的,我在將數據插入數據庫時總是使用事務。但是現在我正在處理類似20k行或更多的插入批次,我擔心事務可能會導致問題。基本上,我不知道的是,如果交易限制了您可以在其下插入多少數據。
使用具有大量行的事務插入到數據庫中的正確方法是什麼?例如,你是否每1000行開始/提交一次?
不,沒有這樣的限制。與您可能認爲的相反,SQLite會將待處理的事務寫入數據庫文件,而不是RAM。所以你不應該在交易中寫入的數據量上受到限制。
見SQLite的文檔這些信息:http://sqlite.org/docs.html
遵循這樣的實現限制鏈接「SQLite中限制」。
請點擊鏈接「SQLite如何實現原子提交」以瞭解事務如何工作
我沒有看到這樣做的任何問題,但如果有任何約束/參照完整性錯誤,那麼可能你再次插入它們,並且表被鎖定,直到交易被提交。分解成較小的部分,同時記錄每批中的活動將有所幫助。
更好的選擇是將BCP插入到目標中,同時處理很多行甚至是SSIS包來執行此操作。
您使用的是哪種類型的數據庫? – krock 2010-07-02 05:06:21