Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 从网站在数据库中插入10万行_Asp.net Mvc_Database_Nhibernate_Database Design_Batch Processing - Fatal编程技术网

Asp.net mvc 从网站在数据库中插入10万行

Asp.net mvc 从网站在数据库中插入10万行,asp.net-mvc,database,nhibernate,database-design,batch-processing,Asp.net Mvc,Database,Nhibernate,Database Design,Batch Processing,我有一个网站,用户可以上传excel电子表格,将数据加载到表格中。excel电子表格中可能有几个10万行。当他上传文件时,网站需要在数据库表中插入等量的行 我应该采取什么策略来做到这一点?我想显示一个“请等待页面”,直到操作完成,但我希望他能够继续浏览该网站。而且,由于当时数据库会很忙,这不会阻止人们在网站上工作吗 我的数据访问层是NHibernate 谢谢, Y显示“请等待”页面将非常不友好,因为您的用户可能会等待很长时间,并且会阻止web服务器上的线程 我将上传文件,存储它,并在队列中创建一

我有一个网站,用户可以上传excel电子表格,将数据加载到表格中。excel电子表格中可能有几个10万行。当他上传文件时,网站需要在数据库表中插入等量的行

我应该采取什么策略来做到这一点?我想显示一个“请等待页面”,直到操作完成,但我希望他能够继续浏览该网站。而且,由于当时数据库会很忙,这不会阻止人们在网站上工作吗

我的数据访问层是NHibernate

谢谢,
Y

显示“请等待”页面将非常不友好,因为您的用户可能会等待很长时间,并且会阻止web服务器上的线程


我将上传文件,存储它,并在队列中创建一个条目(您需要一个auther表)来指示有一个文件正在等待处理。然后,您可以使用另一个进程(它甚至可以在自己的服务器上运行),从该队列表中提取任务,并在自己的时间内处理xls文件。

显示请等待页面将非常不友好,因为您的用户可能会等待很长时间,并且会阻塞web服务器上的线程


我将上传文件,存储它,并在队列中创建一个条目(您需要一个auther表)来指示有一个文件正在等待处理。然后,您可以有另一个进程(甚至可以在自己的服务器上运行),该进程从该队列表中拾取任务,并在自己的时间内处理xls文件。

我将创建一个上载队列,将此请求提交给。然后用户就可以每隔一段时间在队列上签入一次。可以在处理行时将批处理操作的进度存储在队列中

此外,数据库服务器是健壮、功能强大的多任务系统。除非你在插入时发现网站有问题,否则不要认为它会阻止人们在网站上工作


然而,就插入或并发读/写性能而言,有一些机制可以解决这一问题。您可以在MySQL中使用“INSERT LOW PRIORITY”语法,或者让应用程序通过在每次插入之间休眠一毫秒来限制插入。此外,您如何编写insert语句,是否使用绑定参数,以及是否使用多值insert都会影响insert性能,以及它在很大程度上如何影响客户端。

我将创建一个上载队列,将此请求提交给。然后用户就可以每隔一段时间在队列上签入一次。可以在处理行时将批处理操作的进度存储在队列中

此外,数据库服务器是健壮、功能强大的多任务系统。除非你在插入时发现网站有问题,否则不要认为它会阻止人们在网站上工作


然而,就插入或并发读/写性能而言,有一些机制可以解决这一问题。您可以在MySQL中使用“INSERT LOW PRIORITY”语法,或者让应用程序通过在每次插入之间休眠一毫秒来限制插入。此外,如何编写insert语句、是否使用绑定参数以及是否使用多值insert都会影响insert性能以及它对客户端的影响程度。

提交时,您可以将DB操作传递给异步RequestHandler,并在操作完成时设置会话值


当异步进程正在进行时,您可以检查每个请求的会话值,如果设置了会话值(operation=completed),则会显示一条消息,例如在模式或任何消息机制中

提交时,您可以将DB操作传递给异步RequestHandler,并在完成时设置会话值


当异步进程正在进行时,您可以检查每个请求的会话值,如果设置了会话值(operation=completed),则会显示一条消息,例如在模式或任何消息机制中

谢谢-我可以创建另一个线程来加载表中的数据吗?与用户一样,当另一个线程加载数据库中的数据时,用户上传文件并立即返回网站。+1这样做的另一个好处是,它将帮助您管理网络上的峰值负载database@Yannis-我会写一个单独的过程。将数据库上传与您的网站完全分开。你可以在另一个线程上做,但我认为没有什么好处,完全分开做会更容易。+1有一个不同的进程来做这个处理肯定是一条路要走。因为它甚至可以在另一台服务器上,所以它确实可以扩展。还有一个问题——让它在不同的进程上是可以的,但我到底该如何向等待网站的用户反馈呢?我必须向某个表或其唯一目的是保持数据操作进度的某个表写入某些内容感谢-我可以创建另一个线程来加载表中的数据吗?与用户一样,当另一个线程加载数据库中的数据时,用户上传文件并立即返回网站。+1这样做的另一个好处是,它将帮助您管理网络上的峰值负载database@Yannis-我会写一个单独的过程。将数据库上传与您的网站完全分开。你可以在另一个线程上做,但我认为没有什么好处,完全分开做会更容易。+1有一个不同的进程来做这个处理肯定是一条路要走。因为它甚至可以在另一台服务器上,所以它确实可以扩展。还有一个问题——让它在不同的进程上是可以的,但我到底该如何向等待网站的用户反馈呢?我必须写一些东西到某个表格上,或者写一些它唯一的目的是保持进度的东西