2011-12-08 160 views
0

我正在進行批量插入以插入80k條記錄和每批1200條記錄。 查詢執行正常。問題是我從mssql服務器獲取數據並從中創建一個批處理數組。所以有些更改是由於某些原因導致批量插入失敗。mysql批量插入

但是,當一個批量插入失敗時,它會爲該特定批次的所有1200個記錄執行。

那麼,有什麼方法可以找出如何從批次插入失敗的1200批記錄中獲取確切的記錄。

還有一個問題。

在做這些插入操作時,網站在更新的時候出現故障。

有沒有什麼辦法,在這段時間以及該網站沒有下降。

任何幫助將不勝感激。

感謝

+0

檢查日誌文件... – ComputerSaysNo

+0

感謝您的答覆,但日誌文件將顯示批量查詢意味着插入到表(列)values(),(),()...。不是哪個特定的插入導致批次失敗。 –

+0

在日誌文件中必須存在錯誤行,因爲您可以搜索批處理並找到問題。 – ComputerSaysNo

回答

2

任何工具會給你更多的性能,爲您的瓶頸是服務器...... 你能做些什麼來降低服務器負載要麼使用事務,或使用「插入延遲」。如果您的db支持它(mysql可能需要一個特定的後端來支持它,具體取決於mysql版本),您可以通過發送「start tansaction」啓動一個事務,然後發送所有的插入內容另一個,並用「提交」或「回滾」完成交易。 這個方法有很大的好處,那就是db在你提交之前知道它不必重新計算索引。

插入延遲:[http://dev.mysql.com/doc/refman/4.1/...t-delayed.html] 這是一個特殊的mysql命令,可以讓你給關於插件的重要性分貝的提示。 插入延遲總是會被處理,當數據庫不會被佔用做別的事情時,它比標準插入/更新具有低優先級。

+0

感謝Wasim的回覆。交易存在問題,我無法使用它。而對於插入延遲,我的網站是一個產品銷售和拍賣網站。並且插入延遲並不能保證您實際插入的時間,因此產品成本和拍賣的變更不會立即反映出來。所以我沒有去追求它。 –

+0

是否有任何工具,當然是免費的一個,顯示MySQL服務器的負載和時間等 –

+0

因此,通過您正在使用的編程語言的腳本。應用撥款檢查並處理錯誤。 – 2011-12-08 09:36:06