azure-sql-database - 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 撞到风扇的一侧。考虑到这种重新配置的范围和整个预测系统,我觉得提前进行小/全面测试以获得代表性基准是不可行的。如果还有什么我应该考虑的(相关或半相关的),请随时为我指明正确的方向。
解决方案
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
推荐阅读
- amazon-web-services - 在 oauth2.0 授权码授予流程中获取新的刷新令牌
- python-3.x - Python如何在达到某些字节后从生成的日志文件中删除日志历史记录
- python - 如何绘制分组数据?
- javascript - 在全局范围内定义函数以在 NodeJS 的 .then() 中使用
- kdb - 如何在列表过程中忽略错误/异常?
- tensorflow - 内核矩阵的值是多少?
- django - 是否可以在不使用模型表单的情况下进行 Django CRUD 操作?
- python - 在 macOS 中安装 PyAudio 时出错:如何解决此问题?
- c++ - 用swap优化赋值运算符是否可行
- java - Mac 上带有 JRE11 的 Eclipse 2020-09 正在启动 300% CPU java 进程