我需要一些帮助。
我在Heroku上有一个php应用程序。在这个应用程序中,有一个上传csv文件的表单,要在Mysql(cleardb)上导入。
问题是,文件大(总是很大),以及它花费太多时间完成的功能(大约90秒)。 heroku的超时时间为30秒,并且没有办法改变它。
我尝试使用Heroku Scheduler(如cron),但使用此调度程序的最小频率为10分钟,并且可能需要90秒的脚本需要30分钟,因为正如我所说, heroku的超时时间为30秒。
好吧,我该怎么办?有另一种调度程序吗?
导入示例:
CSV
name,productName,points,categoryName,coordName,date
MYSQL
[用户]
userID
userName
categoryID
coordID
[产品]
productID
productName
[COORDS]
coordID
coordName
[类别]
categoryID
categoryName
[分]
pointID
productID
userID
value
在所有表中,我需要进行选择以查看类别,坐标等是否已经存在。如果存在,则返回id,如果不存在,则插入一个新行。
我认为没有办法减少时间执行时间。我试图找到一种方法将时间表减少到2分钟,3分钟等等。因此,在大约10分钟内,所有线路都将被导入。
谢谢!
答案 0 :(得分:1)
这就是我开始的原因(因为它相对简单/快速实施,应该给你一个参考点和一些在短时间内进行进一步测试的余地):
将所有数据按原样导入临时表(如果服务器的RAM允许您也可以尝试memory engine)。
然后,在导入数据之后,创建以下查询所需的索引(并通过EXPLAIN或任何其他工具检查,以显示索引是否以及如何使用): / p>