从内部部署网络性能访问Azure SQL数据库



我有一个VB.NET桌面解决方案,可以将SQL Server用作数据库服务器。当在本地或本地网络上运行时,数据查询最多运行1-2秒。访问Azure Sql数据库时,相同的代码运行15到30秒。我选择了一个尽可能靠近客户所在地的地区,但这无济于事。

提高这个系统性能的最佳方法是什么?我需要创建一个混合网络或类似的效果吗?

我提前道歉,我不是网络工程师,在解决此类性能问题方面没有太多经验。

谢谢。

在比较SQL Azure和SQL Server之间的性能时,需要记住以下几点:

  • 如果您的客户端/应用层不在Azure中,那么在SQL Azure中,网络上的往返次数更重要。如果在本地往返需要2毫秒,但在云示例中往返需要150毫秒,那么往返次数确实会很快增加。有时,可以将批处理大小设置得更大,以从运行客户端的任何位置隐藏数据中心的一些延迟
  • 您在SQL Server和SQL Azure上也有可能没有真正获得相同的查询计划,这可能是您所看到的性能差异的一部分。在这两种情况下,深入了解查询计划选择的一种方法是使用查询存储(在SQL Azure中默认打开,但可以在SQL 2016+中启用)。你可以在这里阅读:https://learn.microsoft.com/en-us/azure/sql-database/sql-database-operate-query-store.还有每月发布的SSMS客户端工具,它有很好的UI来导航查询存储。你可以在这里下载最新的。当查看查询执行不同的性能时,首先要查看整体平面形状是否相同。如果它们不同,那么这可能就是性能差异的实际解释。如果它们是相同的,那么下一个选项更有可能是你的问题
  • 最后,在某些情况下,客户使用非常小的保留大小(例如:Basic)运行SQL Azure,并将其与工作站或笔记本电脑的性能进行比较。基本和标准(S3左右)数据库通常运行在不到一个CPU核心上。因此,如果您试图将性能与本地机器进行比较,则需要记住,保留大小也会对性能产生重大影响。尝试更大的尺寸(用于测试)可以帮助隔离是否存在这种情况。如果是这样的话,有各种方法可以提高查询的性能(索引,考虑查询是如何编写的/它要求查看是否有更简单的方法来表示事物,等等)可能是提高查询效率的一种选择,以便在较小的性能层中足够高效地运行(以节省资金)

更广泛地解释为什么SQL中的任何通用查询都很慢是一个更大的主题,因此,如果你发布调查中的一些细节,它可能会帮助人们缩小你是否有索引问题、与参数嗅探有关的问题,或者人们在构建SQL应用程序时遇到的其他更常见的陷阱之一。

祝你好运——我希望这能帮助你下一步解决你的绩效问题。

最新更新