在 Azure SQL 数据库中缩放单一数据库资源
适用于:Azure SQL 数据库
本文介绍如何在预配的计算层级中缩放适用于 Azure SQL 数据库的计算和存储资源。 另外,无服务器计算层级提供自动缩放计算功能,并且按秒对使用的计算计费。
最初选择 vCore 或 DTU 数量后,可以使用以下内容,根据实际体验动态地纵向扩展或缩减单一数据库:
重要
在某些情况下,可能需要收缩数据库来回收未使用的空间。 有关详细信息,请参阅管理 Azure SQL 数据库中数据库的文件空间。
注意
Microsoft Entra ID 以前称为 Azure Active Directory (Azure AD)。
影响
更改服务层级或计算大小主要涉及到由服务执行的以下步骤:
为数据库创建新的计算实例。
使用请求的服务层级和计算大小创建新的计算实例。 更改后,对于服务层级和计算大小的某些组合,必须在新的计算实例中创建数据库的副本,此过程涉及到数据复制,可能会对总体延迟造成很大的影响。 无论如何,在执行此步骤期间,数据库会保持联机,并且连接会继续定向到原始计算实例中的数据库。
将连接路由切换到新的计算实例。
将删除与原始计算实例中的数据库建立的现有连接。 将与新计算实例中的数据库建立任何新的连接。 更改后,对于服务层级和计算大小的某些组合,在切换期间会分离再重新附加数据库文件。 无论如何,切换操作都可能会导致服务出现短暂的中断,此时,数据库一般会出现 30 秒以下的不可用情况(通常只有几秒钟)。 如果连接断开时有长时间运行的事务正在运行,则此步骤的持续时间可能会变长,以便恢复中止的事务。 Azure SQL 中的加速数据库恢复可以降低中止长期运行的事务的影响。
重要
执行工作流中的任何步骤期间都不会丢失数据。 确保已在特定的应用程序和组件中实现某些重试逻辑,这些应用程序和组件在服务层级更改时使用 Azure SQL 数据库。
延迟
更改服务层、缩放单个数据库或弹性池的计算大小、将数据库移入/移出弹性池或在弹性池之间移动数据库的预计延迟的参数设置如下:
数据库缩放延迟 | 到基本单一数据库, 标准单一数据库 (S0-S1) |
到标准单一数据库 (S2-S12), 常规用途单一数据库, 基本弹性共用数据库, 标准弹性共用数据库, 常规用途共用数据库 |
到高级单一数据库或共用数据库, 业务关键型单一数据库或共用数据库 |
到超大规模单一数据库数据库 |
---|---|---|---|---|
从基本单一数据库, 标准单一数据库 (S0-S1) |
• 延迟时间恒定,与已用空间无关。 • 通常不到 5 分钟。 |
• 由于数据复制,延迟与已用数据库空间成比例。 • 对于每 GB 的已用空间,延迟通常小于 1 分钟。 |
• 由于数据复制,延迟与已用数据库空间成比例。 • 对于每 GB 的已用空间,延迟通常小于 1 分钟。 |
• 由于数据复制,延迟与已用数据库空间成比例。 • 对于每 GB 的已用空间,延迟通常小于 1 分钟。 |
从基本共用数据库, 标准单一数据库 (S2-S12), 标准共用数据库, 常规用途单一数据库或共用数据库 |
• 由于数据复制,延迟与已用数据库空间成比例。 • 对于每 GB 的已用空间,延迟通常小于 1 分钟。 |
• 对于单一数据库,延迟时间是恒定的,与已用空间无关。 • 对于单一数据库,延迟时间通常小于 5 分钟。 • 对于弹性池,延迟时间与数据库数量成正比。 |
• 由于数据复制,延迟与已用数据库空间成比例。 • 对于每 GB 的已用空间,延迟通常小于 1 分钟。 |
• 由于数据复制,延迟与已用数据库空间成比例。 • 对于每 GB 的已用空间,延迟通常小于 1 分钟。 |
从高级单一数据库或共用数据库, 业务关键型单一数据库或共用数据库 |
• 由于数据复制,延迟与已用数据库空间成比例。 • 对于每 GB 的已用空间,延迟通常小于 1 分钟。 |
• 由于数据复制,延迟与已用数据库空间成比例。 • 对于每 GB 的已用空间,延迟通常小于 1 分钟。 |
• 由于数据复制,延迟与已用数据库空间成比例。 • 对于每 GB 的已用空间,延迟通常小于 1 分钟。 |
• 由于数据复制,延迟与已用数据库空间成比例。 • 对于每 GB 的已用空间,延迟通常小于 1 分钟。 |
从超大规模单一数据库数据库 | 不可用 | 有关受支持的方案和限制,请参阅从超大规模反向迁移。 | 不可用 | • 延迟时间恒定,与已用空间无关 • 通常不到 2 分钟 |
注意
- 此外,对于标准 (S2-S12) 和常规用途数据库,如果数据库使用高级文件共享 (PFS) 存储,则将数据库移入/移出弹性池或在弹性池之间移动数据库的延迟与数据库大小成正比。
- 如果向/从弹性池移动数据库,则只有数据库使用的空间会影响延迟,弹性池使用的空间不会影响延迟。
- 若要确定数据库是否正在使用 PFS 存储,请在数据库的上下文中执行以下查询。 如果 AccountType 列中的值为
PremiumFileStorage
或PremiumFileStorage-ZRS
,则该数据库使用的是 PFS 存储。
SELECT s.file_id,
s.type_desc,
s.name,
FILEPROPERTYEX(s.name, 'AccountType') AS AccountType
FROM sys.database_files AS s
WHERE s.type_desc IN ('ROWS', 'LOG');
注意
- 将单一数据库从“业务关键”层缩放到“常规用途”层时,区域冗余属性默认保持不变。
- 当常规用途单一数据库的区域冗余更改时,缩放操作的延迟与数据库大小成正比。
提示
若要监视正在进行的操作,请参阅:使用 SQL REST API 管理操作、使用 CLI 管理操作、使用 T-SQL 监视操作及以下两个 PowerShell 命令:Get-AzSqlDatabaseActivity 和 Stop-AzSqlDatabaseActivity。
监视或取消缩放更改
服务层级更改或计算重新缩放操作可以监视或取消。
在 SQL 数据库概述页面中,查找指示正在执行的缩放操作的横幅,然后选择正在进行的部署的“查看更多”链接。
在生成的“正在进行的操作”页面上,选择“取消此操作”。
权限
若要通过 Transact-SQL 缩放数据库:使用 ALTER DATABASE
。 若要缩放数据库,登录名必须是服务器管理员登录名(预配 Azure SQL 数据库逻辑服务器时创建)、服务器的 Microsoft Entra 管理员、master
中 dbmanager 数据库角色的成员、当前数据库中的 db_owner 数据库角色的成员,或数据库的 dbo
。 有关详细信息,请参阅 ALTER DATABASE。
若要通过 Azure 门户、PowerShell、Azure CLI 或 REST API 缩放数据库:需要 Azure RBAC 权限,特别是参与者、SQL DB 参与者角色或 SQL Server 参与者 Azure RBAC 角色。 有关详细信息,请参阅 Azure RBAC 内置角色。
其他注意事项
- 如果要升级到更高的服务层级或计算大小,除非显式指定了更大的大小(最大),否则,最大数据库大小不会增大。
- 若要对数据库进行降级,数据库所用空间必须小于目标服务层级和计算大小允许的最大大小。
- 从“高级”层级降级至“标准”层级时,如果同时满足 (1) 目标计算大小支持该数据库的最大大小,(2) 最大大小超出目标计算大小包括的存储量,那么将产生额外存储费用 。 例如,如果将最大大小为 500 GB 的 P1 数据库缩小至 S3,那么将产生额外的存储费用,因为 S3 支持的最大大小为 1 TB,而它的附送存储量仅为 250 GB。 因此,额外的存储量为 500 GB - 250 GB = 250 GB。 有关额外存储定价的信息,请参阅 Azure SQL 数据库定价。 如果实际使用的空间量小于附送的存储量,只要将数据库最大大小减少到附送的量,就能避免此项额外费用。
- 在启用了异地复制的情况下升级数据库时,请先将其辅助数据库升级到所需的服务层级和计算大小,然后再升级主数据库(用于实现最佳性能的常规指南)。 升级到另一版本时,需要先升级辅助数据库。
- 在启用了异地复制的情况下降级数据库时,请先将其主数据库降级到所需的服务层级和计算大小,然后再降级辅助数据库(用于实现最佳性能的常规指南)。 降级到另一版本时,需要先降级主数据库。
- 各服务层级的还原服务不同。 如果要降级到基本层,则备份保持期也将缩短。 请参阅 Azure SQL 数据库中的自动备份。
- 更改完成前不会应用数据库的新属性。
- 更改服务层时,如果需要进行数据复制以缩放数据库(请参阅延迟),对缩放操作的高资源利用率可能会导致更长的缩放时间。 使用加速数据库恢复 (ADR),长期事务的回滚并不是很重要的延迟源,但高并发资源使用率可能会降低计算、存储和网络带宽资源的缩放能力,尤其是对于较小的计算大小。
计费
将根据使用最高服务层级的数据库存在的每个小时 + 在该小时适用的计算大小进行计费,无论使用方式或数据库处于活动状态是否少于一小时。 例如,如果创建了单一数据库,并在五分钟后将其删除,则将按该数据库存在一小时收费。
更改存储大小
基于 vCore 的购买模型
可以使用 1GB 作为增量,将存储预配到数据存储最大大小限制。 最小可配置数据存储为 1 GB。 有关各服务目标中数据存储的最大大小限制,请参阅资源限制文档页,了解使用 vCore 购买模型的单一数据库的资源限制和使用 DTU 购买模型的单一数据库的资源限制。
可通过 Azure 门户、Transact-SQL、PowerShell、Azure CLI 或 REST API 为单一数据库增加或减少大小上限,以预配数据存储。 如果最大大小值是以字节为单位指定的,则该值必须是 1 GB(1073741824 字节)的倍数。
可以存储在数据库的数据文件中的数据量受所配置的数据存储最大大小限制。 除了该存储之外,Azure SQL 数据库还会自动增加额外 30% 的存储用于事务日志。 单一数据库或弹性池的存储价格等于数据存储与事务日志存储量之和乘以服务层级的存储单价。 例如,如果数据存储设置为 10 GB,则额外的事务日志存储为 10 GB * 30% = 3 GB,计费存储的总量为 10 GB + 3 GB = 13 GB。
注意
事务日志文件的最大大小是自动管理的,在某些情况下可能大于数据存储最大大小的 30%。 这不会提高数据库的存储价格。
对于
tempdb
数据库,Azure SQL 数据库会自动为每个 vCore 分配 32 GB。tempdb
位于所有服务层级的本地 SSD 存储中。tempdb
的成本包含在单一数据库或弹性池的价格中。有关存储价格的详细信息,请参阅 Azure SQL 数据库定价。
重要
在某些情况下,可能需要收缩数据库来回收未使用的空间。 有关详细信息,请参阅管理 Azure SQL 数据库中数据库的文件空间。
基于 DTU 的购买模型
- 单一数据库的 DTU 价格附送了一定容量的存储,无需额外费用。 超出附送的量后,可花费额外的费用预配额外的存储,但不能超过存储上限,不超过 1 TB 时,以 250 GB 为增量进行预配,超出 1 TB 时,以 256 GB 为增量进行预配。 有关包括的存储量和大小上限,请参阅单一数据库:存储大小和计算大小。
- 可通过 Azure 门户、Transact-SQL、PowerShell、Azure CLI 或 REST API 为单一数据库增加大小上限,以预配额外存储。
- 单一数据库的额外存储价格等于额外存储量乘以服务层级的额外存储单价。 有关额外存储价格的详细信息,请参阅 Azure SQL 数据库定价。
重要
在某些情况下,可能需要收缩数据库来回收未使用的空间。 有关详细信息,请参阅管理 Azure SQL 数据库中数据库的文件空间。
异地复制的数据库
若要更改复制的辅助数据库的数据库大小,请更改主数据库的大小。 然后,此更改也会在辅助数据库上复制并实现。