我正在使用laravel 5.1並且想要更新擁有近20萬行的mysql表。它更新了近25000行,然後它不更新。更新此過程需要將近1個半小時。Laravel artisan命令在一段時間後停止
有何建議?
我正在使用laravel 5.1並且想要更新擁有近20萬行的mysql表。它更新了近25000行,然後它不更新。更新此過程需要將近1個半小時。Laravel artisan命令在一段時間後停止
有何建議?
有幾件事你想先檢查。
如果腳本在同一地方停止更新一致,例如,它可能是SQL在該特定語句中的錯誤。因此,請確保您正在檢查mysql返回給PHP的任何錯誤(請參閱處理PDO和MySQLi中的錯誤的手冊)。
如果您通過PHP一次運行200K個不同的SQL查詢,它肯定會很慢,因爲您要在每個查詢中擊中SQL解析器,查詢執行和結果提取步驟。有一些更快的替代方案,例如LOAD DATA INFILE,它繞過MySQL中的整個解析器和查詢執行步驟,允許您直接從CSV寫入數據庫對象文件。這對於將大量數據一次加載到數據庫非常有用,非常快速。
你檢查你的錯誤日誌。我想,你說25000原始更新,然後停止。更新時可能會導致一些數據庫行傳遞錯誤。如果您可以逐個檢查更新表,則可以驗證它。
例如:首先更新1-2000,然後更新2000-40000。當更新20000-250000範圍只傳遞錯誤,這意味着你的程序是好的,數據庫條目傳遞錯誤。但塊明智確定,當增加load.it可以幫助你測試你的程序可以處理負載。這是一些測試方法。
您的程序可能會很慢,因爲有大量的數據收集,它也取決於您的計算機或服務器或開發環境的性能。嘗試重新設置因子或優化代碼以提高性能。您也可以嘗試非關係數據庫(mongodb)一段時間,這可能會在處理大量數據時給您帶來好時間。我認爲這可能有助於你解決你的麻煩。
最初它每秒更新6-7行,並且速度連續降低,幾乎爲零。 –
最初,它每秒更新6-7行,並且速度連續降低,幾乎爲零。 –