在我繼續之前,這純粹是一個直覺問題。也就是說,我沒有找到解決PHP/MySQL代碼中特定錯誤的答案。相反,我想了解在解決我的問題時需要考慮的一系列可能的問題。爲此,我不會發布代碼或附加腳本 - 我只會解釋我做了什麼以及發生了什麼。MySQL沒有插入所有成功的插入查詢...爲什麼?
我已經寫PHP腳本,
- 讀取的X記錄的CSV文本文件插入到一個MySQL數據庫表和/或更新重複條目適用;
- 插入上述記錄成什麼樣,我會要求該數據集的「根」表;
- 選擇特定字段的子集的記錄從「根」表,然後插入這些記錄到一個「主」表;和
- 創建從主表用於分配的輸出導出的文本文件。
有幾個CSV文件,我正在通過每30分鐘單獨的計劃cron任務處理。所有人都說,從各種渠道來看,估計有420,000個從文件到根表的插入事務,另外還有420,000個通過計劃任務從根表到主表的插入事務。
一個任務本身涉及的約40萬條記錄的CSV文件。處理中不包含錯誤,但這裏有個問題:MySQL指出的400,000條記錄中已經成功插入到根表中,其中只有大約92,000條記錄實際存儲在根表中 - 我正在丟失約308,000條記錄任務。
分別約爲16,000 1000交易的其他計劃任務的過程,而這些交易完全處理。事實上,如果我將交易數量從400,000減少到10,000,那麼這些處理也很好。顯然,這不是目標。
爲了解決這個問題,我已經嘗試了幾種補救措施......
- 正在增加我的服務器的內存(並在php.ini文件中增加了最大限制)
- 獲得一個專用數據庫擴展存儲器(而不是共享的VPS數據庫)
- 重寫我的代碼,以基本上消除存儲陣列的是倒吸存儲器和處理fgetcsv()處理在運行
- 使用延遲插入的MySQL語句(相對於純的INSERT語句)
...,沒有這些補救措施的根據需要工作過。
應該在這一點上應注意什麼範圍的補救措施的,鑑於迄今所採取的行動沒有成功的?謝謝...
第一步:郵編 – 2012-05-20 16:07:55