如何加速通过Azure的Web服务插入数据性能

如何加速通过Azure的Web服务插入数据性能

问题描述:

我试图将6000行插入到数据库中。这项操作大约需要1分钟。如何加速通过Azure的Web服务插入数据性能

我的架构如下:

控制台应用程序 - >与端点Web服务 - > sql数据库

控制台应用程序正在运行作为Azure中的webjob,并使用高级3(P3)计划, 1个实例向外扩展。 控制台应用程序正在使用Parallel.For来更快地插入。

Web服务端点正在使用带有8个实例的P3计划。来自8+的实例数量没有任何变化,所以问题在其他地方。当我检查实时遥测时,我可以看到每秒有200个请求,请求持续时间是200ms,这意味着Web服务不是瓶颈。

数据库是P4和DTU百分比低于30%,所以这也不是问题。

我发现的一件事是,当我从本地计算机运行控制台应用程序时,我可以在50秒内完成操作,与需要1分钟的天青webjob相比。我试图将webjob缩放到4或8个例子,但没有运气。

我可以进一步观察以进一步了解Azure能否更快地完成此操作?

+1

如果您使用的是“SQL Server”,我将google如何批量将数据插入到使用XML和临时表的数据库有一些关于如何做到这一点的很好的例子,因为我现在使用这种方法在几秒钟内做了30000行。您也可以查看如何在Web服务中执行批量插入。 – MethodMan

+0

如果您可以提供控制台应用程序如何插入数据的详细信息,这将会很有帮助。你使用普通的ADO.Net?实体框架或其他一些ORM等。例如,使用的方法可能是瓶颈。 10秒并不是什么大不了的海事组织,随着时间的推移以及每次运行数百次,你可能会发现平均差距并不大。 另外。如果你不平行插入,它是否有很大的区别?如果是这样,那么几乎肯定在控制台应用程序中的代码是问题的一部分... –

+0

实体框架用于web服务 –

我试图将webjob缩放到4或8个没有运气的实例。

WebJob有两种类型。连续和触发。只有Continuous WebJob可以扩展并在多个实例上运行。创建WebJob时,可以选择WebJob类型和缩放类型。

enter image description here

您还需要重写代码,以适应规模WebJob。例如,如果要将6000行插入表中,则每个作业可以插入1500行(如果实例数为4)。