既然 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/