你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

适用于: Azure SQL 数据库

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

更改计算资源(vCore 或 DTU)

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

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

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

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

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

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

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

重要

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

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

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

服务层 基本单一数据库、
标准 (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 分钟

注意

  • 如果更改服务层或者重新缩放弹性池的计算大小,则应使用池中所有数据库的已用空间之和来计算估计值。
  • 如果向/从弹性池移动数据库,则只有数据库使用的空间会影响延迟,弹性池使用的空间不会影响延迟。
  • 对于标准和常规用途弹性池,如果弹性池使用高级文件共享 (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-AzSqlDatabaseActivityStop-AzSqlDatabaseActivity

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

  • 减少弹性池的 vCore 或 eDTU 时,该池使用的空间必须小于目标服务层和池 eDTU 所允许的最大大小。
  • 当重新缩放弹性池的 eDTU 时,如果 (1) 目标池支持池的存储上限,(2) 存储上限超过了目标池附送的存储量,将产生额外存储费用。 例如,如果最大大小为 100 GB 的 100 eDTU 标准池缩小为 50 eDTU 标准池,那么将产生额外存储费用,因为目标池支持的最大大小为 100 GB,其附送的存储量仅为 50 GB。 因此,额外存储量为 100 GB – 50 GB = 50 GB。 有关额外存储定价的信息,请参阅 SQL 数据库定价。 如果实际使用的空间量小于附送的存储量,只要将数据库最大大小减少到附送的量,就能避免此项额外费用。

重新缩放期间的计费

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

更改弹性池存储大小

重要

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

基于 vCore 的购买模型

  • 可将存储预配到最大大小限制。

    • 对于“标准”或“常规用途”服务层级中的存储,按 10 GB 增量增减大小
    • 对于“高级”或“业务关键”服务层级中的存储,按 250 GB 增量增减大小
  • 可以通过增大或减小其最大大小来预配弹性池的存储空间。

  • 弹性池的存储价格等于存储量乘以服务层级的存储单价。 有关额外存储价格的详细信息,请参阅 SQL 数据库定价

重要

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

基于 DTU 的购买模型

重要

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

后续步骤

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