【问题标题】:Comparative Analysis of Performance Tiers in SQL AzureSQL Azure 中性能层的比较分析
【发布时间】:2018-01-12 12:36:47
【问题描述】:

有人可以笼统地解释一下 SQL Azure 中不同性能层之间的区别吗?

我了解到,在考虑基本安装 SQL Server 时,SQL Azure IS NOT与 SQL Server 的本地实例相同。例如,我们目前将二进制数据存储在 SQL Azure 的数据库中。从我们的 SQL Azure 数据库中删除一个 50MB 的 blob 大约需要 80 秒。在 SQL Server 的本地实例中,只需几秒钟。在这种情况下,Log IO 似乎是被锤击的东西。我被告知数据被多次复制(我假设这是出于冗余原因)。此外,有人告诉我,如果我以与配置 SQL Azure 完全相同的方式(硬件、复制等)配置本地环境,我会看到类似的性能。

回到原来的问题。与 S3 相比,性能水平如何?我想弄清楚的是,当我经常听到“我们的 SQL Server 运行在一台非常慢的机器上并且它的性能优于 SQL Azure”之类的话时,如何解释为什么这个性能层似乎工作得如此糟糕。我希望能够比较两者以真正理解为什么存在差异。

【问题讨论】:

  • SQL Azure 相对较慢,但我发现的大多数性能问题更多是由于应用程序性能造成的,例如您的登录页面进行了 100 次 sql 调用。比较 SQL Azure 中的不同级别并不容易,具有 200 DTU 的 Standard 比具有 125 DTU 的 Premium 慢一个数量级。优化我的应用后,我只需手动尝试它们,直到找到性能可接受的层。

标签: sql-server azure-sql-database


【解决方案1】:

如果您在 Azure SQL 数据库上存储 50 MB 的 BLOB 并且您看到高日志 IO,那么您的工作负载似乎是 I/O 密集型的。高级层适用于这种工作负载。如果您知道数据库所需的 IOPS,它可能会帮助您了解 S3 或多或少提供 150 IOPS 的性能。 P4 提供高达 4000 IOPS 的性能。 This 文章可以帮助您了解 DTU 的含义并确定适合您工作负载的层。

请允许我建议您将 BLOB 对象存储在 Azure BLOB 存储中,并且仅将这些对象的元数据存储在 Azure SQL 数据库中,以降低当前对数据库 I/O 的需求。在 Azure SQL 数据库上存储 BLOB 对象会增加数据库的大小,并且可能会提示扩展层,因为数据库可能很快就会达到当前层的存储限制。 Azure BLOB 存储更具可扩展性,并且在其中存储 BLOB 更便宜。如果您不在数据库中存储 BLOB,那么您可以使用标准层并节省资金,而不是使用高级层。

【讨论】:

【解决方案2】:

要评估 Azure SQL 数据库服务层的性能,需要考虑两件事。

第一个是与您的服务层关联的DTUs(数据库事务单元)的数量。 DTU 衡量数据库可用的资源量。它们混合了 CPU、IO 和内存。此blog post 中描述了确切的公式。分配给数据库的 DTU 计数越大,它运行查询的速度就越快。

第二个因素是关于硬件性能瓶颈。与标准服务层相比,高级服务层在具有更高 IO 和更大内存的机器上运行。因此,如果您的应用程序的性能主要依赖于 IO,那么无论 DTU 的数量如何,您都可以通过迁移到 Premium 获得显着的收益。

【讨论】:

    猜你喜欢
    • 2015-07-31
    • 2021-12-14
    • 1970-01-01
    • 1970-01-01
    • 2018-03-10
    • 2011-07-12
    • 2010-12-04
    • 1970-01-01
    • 2013-01-13
    相关资源
    最近更新 更多