azure - 将新的 SQL Azure 层与旧层进行比较

标签 azure azure-sql-database

既然 Microsoft 提供了新的 SQL Azure 服务级别(基本、标准、高级),我们正在尝试弄清楚它们如何映射到现有服务级别(Web 和商业)。

本质上,新等级分割中有六个性能级别:Basic、S1、S2、P1、P2 和 P3(详细信息请参见:http://msdn.microsoft.com/library/dn741336.aspx)

有谁知道旧的数据库层如何映射到这六个级别?例如,Business 相当于 S1 吗? S2?

我们需要能够回答这个问题,以便确定将现有数据库迁移到哪些服务层/级别。

最佳答案

我们刚刚完成了性能比较。

我无法发布我们的 SQL 查询,但我们使用了 3 个与我们的正常事件相匹配的不同测试用例。在每个测试用例中,我们对数千行执行了多次带有表连接和聚合计算(SUM、AVG 等)的查询。我们的测试数据库规模不大 - 大小约为 5GB,有几百万行。

一些注意事项:对于每一个,我们都测试了我的本地计算机,这是一台已经使用 5 年的 iMac,在虚拟机(“本地”)、SQL Azure Business(“商业”)、SQL Azure Premium 中运行 Windows/SQL Server P1、SQL Azure 标准 S2 和 SQL Azure 标准 S1。基本层看起来太慢了,所以我们没有测试它。所有这些测试都是在系统上没有其他事件的情况下完成的。查询没有返回数据,因此网络性能希望不是一个因素。

这是我们的结果:

测试一

Local: 1 second
Business: 2 seconds
P1: 2 seconds
S2: 4 seconds
S1: 14 seconds

测试二

Local: 2 seconds
Business: 5 seconds
P1: 5 seconds
S2: 10 seconds
S1: 30 seconds

测试三

Local: 5 seconds
Business: 12 seconds
P1: 13 seconds
S2: 25 seconds
S1: 77 seconds

结论:

在与不同层级合作几天后,我们的团队得出了一些结论:

  • P1 的执行水平似乎与 SQL Azure Business 相同。 (P1 是价格的 10 倍)
  • 除了入门数据库之外,Basic 和 S1 都太慢了。
  • 业务层是一项共享服务,因此性能取决于服务器上的其他用户。我们的数据库显示最多 4.01% CPU、0.77% 数据 IO、0.14% 日志 IO,并且我们遇到了重大性能问题和超时。 Microsoft 支持确认我们“只是在一个非常繁忙的服务器上”。
  • 业务层在不同服务器和区域之间提供不一致的服务。就我们而言,我们转移到不同地区的不同服务器,我们的服务恢复正常。 (我们认为这是一个临时解决方案)
  • S1、S2、P1 级别似乎在不同区域提供相同的性能。我们测试了西部和中北部。
  • 考虑到上述结果,我们普遍对 SQL Azure 的 future 感到担忧。几年来,业务层一直对我们来说非常有用,但它计划在 12 个月内停止服务。与商务层相比,新层的价格似乎过高。

我确信有 100 种方法可以使这更科学,但我希望这些统计数据可以帮助其他人做好评估准备。

更新:

Microsoft 支持人员向我们发送了一条非常有用的查询,以评估您的数据库使用情况。

SELECT
       avg(avg_cpu_percent) AS 'Average CPU Percentage Used',
       max(avg_cpu_percent) AS 'Maximum CPU Percentage Used',
       avg(avg_physical_data_read_percent) AS 'Average Physical IOPS Percentage',
       max(avg_physical_data_read_percent) AS 'Maximum Physical IOPS Percentage',
                   avg(avg_log_write_percent) AS 'Average Log Write Percentage',
       max(avg_log_write_percent) AS 'Maximum Log Write Percentage',
       --avg(avg_memory_percent) AS 'Average Memory Used Percentage',
       --max(avg_memory_percent) AS 'Maximum Memory Used Percentage',
       avg(active_worker_count) AS 'Average # of Workers',
       max(active_worker_count) AS 'Maximum # of Workers'
FROM sys.resource_stats
WHERE database_name = 'YOUR_DATABASE_NAME' AND
start_time > DATEADD(day, -7, GETDATE())

最有用的部分是百分比代表 S2 实例的百分比。根据 Microsoft 支持,如果您处于 100%,则您正在使用 100% 的 S2,200% 相当于 P1 实例。

尽管价格差异令人震惊,但我们现在在 P1 实例方面运气非常好。

关于azure - 将新的 SQL Azure 层与旧层进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24789501/

相关文章:

azure - Windows Azure 上的 32 位旧版 COM DLL

使用 SQL Server Management Studio 的 SQL Azure 数据库

java - Azure VMSS 中 guest 操作系统指标和主机操作系统指标之间的差异

sql-server - SQL Azure 将来是否支持 SQL Server Service Broker?

azure - 是否可以重命名 Azure Synapse SQL 池?

Azure SQL - 使用 ADO.NET 时的默认隔离级别

wcf - Microsoft Azure 上的实时应用程序

azure - Service Fabric Actor 或 Azure Functions

azure - VSCODE 事件栏上丢失了我的 Azure 图标

c# - Azure 角色实例通过内部端点进行水平复制