首页 > 解决方案 > Azure SQL 超大规模 - 0 个辅助副本?

问题描述

背景

我为不同的目的开发了一个预测引擎(时间序列)。处理、建模和预测模块是用 Python 编写的,数据当前存储在 Azure SQL 数据库中。目前,数据库是通用(基于 vCore)服务层、预配置计算层和 Gen5(12 个 vCore)硬件配置。我正在接近最大存储的限制(大约 3 TB),但由于我几乎每天都读取整个数据库(仅限冷启动模型),除了增加存储大小之外,我没有看到许多其他选择。截断部分历史数据是不可能的。

问题

在 12 个 vCore 时,最大存储约为 3 TB,从 $ 角度来看,增加 vCore 以启用大约 4 TB 的最大存储大小是不可行的(特别是因为它是存储,而不是计算,这是瓶颈)。我已经阅读了一些关于 Azure 平台上的替代服务/层的信息,并且发现 Hyperscale 可能会解决我的问题:我可以保持 vCore 不受影响并拥有高达 100 TB 的存储空间。具有零次要副本(其他条件相同)的配置最终将在与以前相同的 $-range 中结束(请参阅“背景”)。我的印象是辅助副本(只读节点)是超大规模架构的核心,所以我不确定这种零辅助副本的概述设置是否被滥用/误用。例如,它会提供相同的性能吗?还是我可以期待性能下降(即使使用相同的 vCore 配置)?主读/写节点是否基本上类似于非超大规模节点?我应该考虑的其他方面?添加一个(或多个)次要副本可能在未来是相关的(例如,与减少 vCore 相结合),但 $-wise 不是一个选项 atm。

微软表示“不支持从超大规模更改到另一个服务层的能力”(真的吗?),所以我想澄清这一点以避免进行半手动数据迁移(和增量迁移)并同时拥有两个实例 -如果 shait 撞到风扇的一侧。考虑到这种重新配置的范围和整个预测系统,我觉得提前进行小/全面测试以获得代表性基准是不可行的。如果还有什么我应该考虑的(相关或半相关的),请随时为我指明正确的方向。

标签: azure-sql-databasereplication

解决方案


I'm one of the PM on the Azure SQL DB team. I see that UtkarshPal-MT already gave you extensive answer, so I'm chimining in on to complete the picture. Azure SQL DB Hyperscale offers different type of secondary replicas. The replicas that can help to get an higher SLA are named High-Availability replica. You can use 0 replicas without any issue. What will happen is that if the primary replicas for any reason is not available, we need to spin up a new (compute) replica from scratch (as there are no HA replica available) so that can take some time (minutes, usually) which means that your service will not be available that amount time. Having an HA replica, drastically diminish the time in which the database is not available.

You can read all the details here:

https://docs.microsoft.com/en-us/azure/azure-sql/database/service-tier-hyperscale-replicas?tabs=tsql

The SLA are defined here:

https://www.azure.cn/en-us/support/sla/sql-data/

Regarding the performances: unless you are specifically using secondary replicas also to offload read-only workload, you'll not have performance hit by not having an HA replica


推荐阅读