在 Azure SQL 数据库中缩放弹性池资源

适用于:Azure SQL 数据库

本文介绍如何在 Azure SQL 数据库中缩放适用于弹性池和共用数据库的计算和存储资源。

更改计算资源(vCore 或 DTU)

最初选择 vCore 或 eDTU 数量后,可以使用以下任何方法,根据实际体验动态地纵向扩展或缩减弹性池:

更改服务层级或重新缩放计算大小的影响

更改弹性池的服务层级或计算大小遵循适用于单一数据库的类似模式,该过程主要涉及到由服务执行的以下步骤:

  1. 为弹性池创建新的计算实例

    使用请求的服务层级和计算大小为弹性池创建新的计算实例。 如果服务层级和计算大小的某些组合发生更改,必须在新的计算实例中创建每个数据库的副本,此过程涉及到数据复制,可能会对总体延迟造成很大的影响。 无论如何,在执行此步骤期间,数据库会保持联机,并且连接会继续定向到原始计算实例中的数据库。

  2. 将连接路由切换到新的计算实例

    将删除与原始计算实例中的数据库建立的现有连接。 将与新计算实例中的数据库建立任何新的连接。 更改后,对于服务层级和计算大小的某些组合,在切换期间会分离再重新附加数据库文件。 无论如何,切换操作都可能会导致服务出现短暂的中断,此时,数据库一般会出现 30 秒以下的不可用情况(通常只有几秒钟)。 如果连接断开时有长时间运行的活动事务,则此步骤的持续时间可能会变长,以便恢复中止的事务。 加速的数据库恢复可以降低中止长期运行的事务的影响。

重要

执行工作流中的任何步骤期间都不会丢失数据。

更改服务层级或重新缩放计算大小所造成的延迟

更改服务层、缩放单个数据库或弹性池的计算大小、将数据库移入/移出弹性池或在弹性池之间移动数据库的预计延迟的参数设置如下:

弹性池缩放延迟 到基本、标准、常规用途弹性池 到高级、业务关键型弹性池
从基本、标准、常规用途弹性池 与数据库的数目成正比 • 由于数据复制,延迟与已用数据库空间成比例。
• 对于每 GB 的已用空间,延迟通常小于 1 分钟。
从高级、业务关键型弹性池 • 由于数据复制,延迟与已用数据库空间成比例。
• 对于每 GB 的已用空间,延迟通常小于 1 分钟。
• 由于数据复制,延迟与已用数据库空间成比例。
• 对于每 GB 的已用空间,延迟通常小于 1 分钟。

注意

  • 更改服务层或者缩放弹性池的计算时,应使用池中所有数据库的已用空间之和来计算估计值。
  • 对于标准和常规用途弹性池,如果弹性池使用高级文件共享 (PFS) 存储,则将数据库移入/移出弹性池或在弹性池之间移动数据库的延迟与数据库大小成正比。 若要确定池是否正在使用 PFS 存储,请在任何池数据库上下文中执行以下查询。 如果 AccountType 列中的值为 PremiumFileStoragePremiumFileStorage-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-AzSqlElasticPoolActivityStop-AzSqlElasticPoolActivity

更改服务层级或重新缩放计算大小时的其他注意事项

  • 减少弹性池的 vCore 或 eDTU 时,该池使用的空间必须小于目标服务层和池计算的最大数据大小限制。
  • 增加弹性池的 eDTU 时,在以下情况下可能会产生额外的存储成本:
    • 目标池支持池的最大数据大小,以及
    • 池的最大数据大小超过了目标池附送的存储量。
  • 例如,如果最大数据大小为 100 GB 的 100 eDTU 标准池缩小为 50 eDTU 标准池,那么将产生额外存储费用,因为目标池支持的最大数据大小为 100 GB,其附送的存储量仅为 50 GB。 因此,额外的存储量为 100 GB - 50 GB = 50 GB。 有关额外存储定价的信息,请参阅 SQL 数据库定价。 如果实际使用的空间量小于附送的存储量,只要将最大数据大小减少到附送的量,就能避免此项额外费用。

重新缩放期间的计费

将根据使用最高服务层级的数据库存在的每个小时 + 在该小时适用的计算大小进行计费,无论使用方式或数据库处于活动状态是否少于一小时。 例如,如果创建了单一数据库,并在五分钟后将其删除,则将按该数据库存在一小时收费。

更改弹性池存储大小

可通过 Azure 门户PowerShellAzure CLIREST API 指定弹性池的存储大小(最大数据大小)。 增加弹性池的最大数据大小时,指定的值不能超过池服务目标的最大数据大小限制。 减小最大数据大小时,指定的新值必须等于或大于池中所有数据库已分配的空间总和。

重要

在某些情况下,可能需要收缩数据库来回收未使用的空间。 有关详细信息,请参阅管理 Azure SQL 数据库中的文件空间

基于 vCore 的购买模型

  • “常规用途”或“业务关键”层中弹性池的存储大小(最大数据大小)可以指定为使用 vCore 购买模型的弹性池的资源限制中指定的最大数据大小限制。 弹性池的最大数据大小可以 1 GB 的倍数增加或减小。
  • 弹性池的存储价格等于指定的最大数据大小乘以服务层级的存储单价。 有关存储价格的详细信息,请参阅 SQL 数据库定价

重要

在某些情况下,可能需要收缩数据库来回收未使用的空间。 有关详细信息,请参阅管理 Azure SQL 数据库中的文件空间

基于 DTU 的购买模型

  • 弹性池的 eDTU 价格附送了一定容量的存储,无需额外费用。 超出附送的量后,可花费额外的费用预配额外的数据存储,但不能超过与预配的 eDTU 对应的最大数据大小限制。 对于附送的存储量和最大数据大小限制,请参阅使用 DTU 购买模型的弹性池的资源限制
  • 弹性池的额外存储价格等于额外存储量乘以服务层级的额外存储单价。 有关额外存储价格的详细信息,请参阅 SQL 数据库定价
  • “标准”或“高级”层弹性池的最大数据大小的有效值可以是以下值之一:50 GB、100 GB、150 GB、200 GB、250 GB、300 GB、400 GB、500 GB、750 GB、800 GB、1024 GB、1200 GB、1280 GB、1536 GB、1600 GB、1792 GB、2000 GB、2048 GB、2304 GB、2500 GB、2560 GB、2816 GB、3000 GB、3072 GB、3328 GB、3584 GB、3840 GB、4096 GB。 指定的最大数据大小不能超过为预配的 eDTU 指定的最大数据大小限制。

重要

在某些情况下,可能需要收缩数据库来回收未使用的空间。 有关详细信息,请参阅管理 Azure SQL 数据库中的文件空间

监视或取消缩放更改

服务层级更改或计算重新缩放操作可以监视或取消。

在 SQL 弹性池概述页面中,导航到“通知”并选择指示有正在进行的操作的磁贴:

Screenshot from the Azure portal of an ongoing deployment in progress.

在生成的正在进行的部署页面上,选择“取消”。

权限

若要通过 Azure 门户、PowerShell、Azure CLI 或 REST API 缩放弹性池,需要 Azure RBAC 权限,特别是参与者、SQL DB 参与者角色或 SQL Server 参与者 Azure RBAC 角色。 有关详细信息,请参阅 Azure RBAC 内置角色

有关总体资源限制,请参阅 SQL 数据库基于 vCore 的资源限制 - 弹性池SQL 数据库基于 DTU 的资源限制 - 弹性池