我正在使用laravel 5.1并想要更新拥有近20万行的mysql表。它更新了近25000行,之后却没有。更新此内容需要将近一个半小时。
有什么建议吗?
答案 0 :(得分:0)
首先要检查的内容很少。
例如,如果脚本在同一位置一致地停止更新,那么在该特定语句的SQL中可能会出错。因此,请确保检查mysql返回给PHP的任何错误(请参阅手册以了解PDO和MySQLi中的错误。)
如果你通过PHP运行200K不同的SQL查询,一次一个,它一定会很慢,因为你要在每个查询中点击SQL解析器,查询执行和结果获取步骤。例如,有一些更快的替代方法,如LOAD DATA INFILE,绕过MySQL中的整个解析器和查询执行步骤,允许您直接从CSV写入数据库对象文件。这对于一次加载大量数据非常有用,非常快。
答案 1 :(得分:0)
你检查你的错误日志。我想,你说25000 raw是好的更新,然后停止。更新时可能会导致某些数据库行传递错误。如果你可以逐个检查更新表,你可以验证它。
例如:首先更新1-2000,然后下一个2000-40000。当更新20000-250000范围只传递错误时它意味着您的程序正常并且db条目传递错误。但是块方式确定,当增加load.it可以帮助您测试您的程序可以处理负载。这是某种测试方法。
您的程序可能很慢,因为有大量数据,它还依赖于您的计算机或服务器或开发环境性能。尝试重新因子或优化你的代码提高性能。你也尝试非关系数据库(mongodb)一段时间,它可能会给你处理大量数据的好时机。我认为这可能有助于你解决问题。