到一個這東西都寫到3了,針對上回說到30000條數據的批量插入工作。30000條數據的批量插入在一個事務里處理固然是快,但是這只是測試環境,30000條數據在數據庫的緩存里必然對數數據庫的緩存和鎖數量都是一個大的挑戰,固在新的程序中我們使用了分批事務提交的方式,這樣為了保持數據的正確行就只能人為控制數據庫中已被插入的數據是否delete掉。另外,使用Batch塊提交會引發一個問題就是,如果batch塊中發生了異常,我們得不到異常數據的行號即任何信息,所以只能是魚和熊掌不可兼得(我已關注過insert方法中返回pk的方法了,但好像在batch中他反回不了出錯的行號,也許是我沒有找到方法,如有人有好方法請共享一下,在這里表示感謝),大家酌情考慮吧,只能到到自己需要的平衡點了。
建議:如果對數據的準確性毋庸置疑的話就是用batch處理。如果不能確定準確性的話,如果對那條數據出錯無所謂的話就也可以用batch,但是非要返回出錯行號的話就不要用batch了,直接在外面套用一個事務,然后try catch一下,處理一下行號。
posted on 2007-06-28 21:32
小平 閱讀(3291)
評論(4) 編輯 收藏