我有一个网站,用户可以在其中载的excel电子表格载的数据在一个表中。可以有几100k行的excel电子表格。当他上传的文件的网站需要插入一个相同数量的数据库中的行表中。

什么样的战略应当我需要这样做吗?我想的是显示"请等网页",直到作完成,但我希望他能够继续在浏览网站。此外,由于数据库在这段时间将是繁忙的-不,阻止人们从工作的网站上?

我的数据访问层在它能够.

谢谢, Y

有帮助吗?

解决方案

显示,请等待页面将是非常不友好的用户可以瓦亭相当长一段时间,并会阻止你的Web服务器上线。

我要上传的文件,其存储和创建队列的条目(你需要为这个anouther表)表明,有要处理的文件等待。然后,您可以有另一个进程(这甚至可以在它自己的服务器上运行),它从队列表拿起任务和进程在它的XLS文件是自己的时间。

其他提示

我将创建一个上传队列,将提交该请求。然后,用户可以只检查队列每过一段时间。作为行处理你可以存储在队列中的批量操作的进度。

另外,数据库服务器是健壮的,强大的,多任务系统。除非你已经观察到的一个问题与网站,而刀片发生不认为它会阻止人们在网站上工作。

然而,只要插入件或并行读/写性能变为有机制来处理这一点。你可以使用“插入低优先级”的语法在MySQL或睡觉每个刀片之间的毫秒让应用程序油门刀片。此外,你怎么手艺插入语句时,无论您使用绑定的参数或没有,无论您使用多值的插入会影响插入性能以及它如何影响客户到大的程度。

在提交你可以通过数据库操作的一个步RequestHandler,并设置一届会议的价值时,其完成。

而asynch过程正在进行中,你可以检查该届会议的价值在每个请求并且如果是组(运=完成)显示的消息,例如在一个模式或任何消息的机制。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top