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

时间:2019-01-21 09:10:37

标签: azure-sql-database

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

改善该系统性能的最佳方法是什么?我需要创建一个混合网络还是类似的东西?

我很抱歉,我不是网络工程师,并且在解决此类性能问题方面经验不足。

谢谢。

1 个答案:

答案 0 :(得分:1)

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

  • 如果您的客户端/应用程序层不在Azure中,则在SQL Azure中网络往返次数的影响更大。如果在本地示例中往返需要2毫秒,但往返需要150毫秒,那么往返次数实际上可以迅速增加。有时,可以将批处理大小做大一些,以便从运行客户端的任何地方隐藏到数据中心的延迟。
  • 还有很大的机会,您实际上没有在SQL Server和SQL Azure上获得相同的查询计划,并且这可能是您看到的性能差异的一部分。在这两种情况下了解查询计划选择的一种方法是使用查询存储(在SQL Azure中默认为启用,但可以在SQL 2016+中启用)。您可以在这里阅读有关内容:https://docs.microsoft.com/en-us/azure/sql-database/sql-database-operate-query-store。还有每月发布一次的SSMS客户端工具,该工具具有不错的UI来导航查询存储。您可以下载最新的here。在查看查询为何执行效果不同的性能时,首先要查看总体计划形状是否相同。如果它们不同,则可能是性能差异的实际解释。如果它们相同,那么下一个选项更可能是您遇到的问题
  • 最后,在某些情况下,客户运行的SQL Azure预留空间很小(例如:基本),并将其与工作站或便携式计算机的性能进行比较。基本和标准(S3左右)数据库通常在少于CPU的内核上运行。因此,如果您尝试将性能与本地计算机进行比较,则需要记住,预留大小也会对性能产生重大影响。尝试使用更大的尺寸(用于测试)可以帮助隔离是否存在这种情况。如果是这样,则可以使用多种方法来提高查询性能(建立索引,考虑查询的编写方式/询问要查询的内容是否有更简单的表示方式等),从而可以提高效率。的查询可以在较小的性能层中足够有效地运行(以节省资金)。

对于为什么通用查询的SQL速度慢的更广泛的解释是一个更大的话题,因此,如果您从调查中发布一些细节,则可能会帮助人们缩小是否存在索引问题,与参数嗅探有关的问题或与之相关的问题。人们在构建SQL应用程序时遇到的另一个更常见的陷阱。

祝您好运-希望这可以帮助您下​​一步找出性能问题。