我们有一个.NET(C#)应用程序,每秒钟向Sql Server数据库执行大约10-30次插入命令。在设计应用程序时,执行插入的应用程序与Sql Server数据库一起在现场,所以网络延迟并没有真正考虑。如何通过WAN有效处理顺序数据库操作
至少网络延迟像你通过广域网或通过互联网没有考虑。
应用程序按顺序执行这些插入操作。所以,如果10-30次插入花费1秒以上,应用程序就会开始落后。我们现有的缓冲系统只能处理网络延迟中偶尔出现的“打嗝”,假设网络延迟最终会消失,应用程序将有机会赶上。
在网络等待时间持续足够高的情况下,10-30个插入总是占用一秒以上,应用程序当然变得不可用。
为了这个问题,我们假设我们没有办法减少网络延迟,或增加sql server的性能,或者类似的东西,并且10-30插入命令总是要花费1秒钟以上并导致应用程序落后于失败点。
在.NET或Sql Server本身中有没有一种很好的方式来并行执行这些命令,以利用带宽来弥补延迟?
我意识到我们可以编写我们自己的系统来处理所有这些,但它似乎已经是云数据库服务器的常见问题了。
我已经阅读了关于批处理和利用事务一次性发送更多命令的方法,但即使这样做了,但如果网络延迟足够高,它似乎最终会触发一堵墙。
我们希望应用程序能够容忍更高和更高的延迟,但也不会太落后于插入。
是否有无论如何你可以在本地运行SQLExpress并使用SQL复制来为你处理syncronisation? – 2015-03-25 10:10:57
不幸的是,我们实际上首先想到了这样做。我们有一个安全约束,即数据不能在本地驻留在磁盘上,而必须直接从内存中传输。 – Mike 2015-03-25 19:10:02