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

以最短停机时间动态缩放数据库资源 - Azure SQL 数据库和 Azure SQL 托管实例

适用于:Azure SQL 数据库Azure SQL 托管实例

使用 Azure SQL 数据库和 Azure SQL 托管实例,能够以极少的停机时间向数据库动态添加更多资源;但存在一个切换期间,在此期间与数据库的连接会短时间丢失,可以使用重试逻辑来缓解这种情况。

概述

当对应用的需求从数个设备和客户增加到数百万个时,Azure SQL 数据库和 SQL 托管实例可动态缩放规模,并最大限度减少停机时间。 可伸缩性是平台即服务 (PaaS) 最重要的特性之一,它允许在需要时向服务动态添加更多资源。 Azure SQL 数据库允许轻松更改分配给数据库的资源(CPU 电源、内存、IO 吞吐量和存储)。

由于应用程序使用量增加导致无法通过索引或查询重写方法解决的性能问题,您可以采取措施进行缓解。 添加更多资源可在数据库达到当前资源限制并需要更多电源处理传入的工作负荷时快速做出反应。 Azure SQL 数据库还可以在不需要资源以降低成本时缩减资源。

不必担心购买硬件和更改底层基础结构。 可以使用滑块通过 Azure 门户轻松缩放数据库。

Azure SQL 数据库提供 基于 DTU 的购买模型概述 和 基于 vCore 的购买模型,而 Azure SQL 托管实例仅提供 基于 vCore 的购买模型。

  • 基于 DTU 的购买模型在以下三个服务层级中提供包括计算、内存和 I/O 资源在内的各种内容,以支持轻型到重型数据库工作负载:基本、标准和高级。 每个层中的不同性能级别提供这些资源的不同组合,你可以向其添加更多的存储资源。
  • 基于 vCore 的购买模型允许选择 vCore 数、内存容量,以及存储的容量和速度。 此购买模型提供三个服务层级:“常规用途”、“业务关键”和“超大规模”。

可随时更改数据库、弹性池或托管实例的服务层级、计算层级和资源限制。 例如,可以使用无服务器计算层次在单个数据库上构建你的第一个应用程序,然后随时手动或以编程方式将其服务层级更改为预配置的计算层,以满足你的解决方案的需求。

注意

在下面一个重要的例外情况下,不能更改数据库服务层级:

  • 如果数据库使用的功能仅限于业务关键层级/高级服务层级,则无法将这些数据库改为使用常规用途/标准服务层级。 目前,唯一的此类功能是内存中 OLTP。
  • 最初在“超大规模”服务层级中创建的数据库无法迁移到其他服务层级。 如果将 Azure SQL 数据库中的现有数据库迁移到“超大规模”服务层级,可以在最初迁移到“超大规模”服务层级后的 45 天内反向迁移到“常规用途”服务层级。 如果要将数据库迁移到另一个服务层级(例如“业务关键”),请先反向迁移到“常规用途”服务层级,然后执行进一步的迁移。 有关详细信息,请参阅 反向从“超大规模”迁移数据库。

可以通过更改服务目标或缩放来调整分配给数据库的资源,以满足工作负荷需求。 这样,你只需在必要的时候为需要的资源付费。 有关缩放操作可能对应用程序产生的影响,请参阅注释。

Azure SQL 数据库提供动态缩放数据库的功能:

  • 在单一数据库中,可以使用 DTU 或 vCore 模型来定义将分配给每个数据库的最大资源量。
  • 弹性池允许定义池中每组数据库的最大资源限制。

Azure SQL 托管实例允许您进行扩展:

  • SQL 托管实例使用 vCore 模式,并允许定义分配给实例的最大 CPU 核心数和最大存储空间。 该托管实例中的所有数据库都将共享分配给该实例的资源。

提示

动态缩放允许客户以手动或编程方式更改资源分配。 动态缩放功能适用于所有 Azure SQL 数据库和 Azure SQL 托管实例资源。

除了支持动态缩放之外,Azure SQL 数据库中的 无服务器计算层 还支持自动缩放。 无服务器层中的数据库根据工作负载需求自动在客户指定的范围内缩放资源。 无需客户操作即可缩放数据库。

纵向扩展或纵向缩减操作的影响

在上述任何一种情况下,启动纵向扩展或纵向缩减操作都将重新启动数据库引擎进程,并将其移到不同的虚拟机(如果需要)。 将数据库引擎进程移动到新的虚拟机是一个联机过程,在此过程中你可以继续使用现有的 Azure SQL 数据库服务。 一旦目标数据库引擎准备好处理查询,与当前数据库引擎的开放连接将被终止,并且未提交的事务将被回滚。 将与目标数据库引擎建立新连接。

注意

建议不要在运行长期事务(例如数据导入、数据处理作业、索引重新生成等)或实例上有任何活动连接时缩放托管实例。 为防止完成缩放所耗费的时间比平时更长,应在所有长时间运行的操作完成后缩放实例。

注意

当放大/缩小过程完成时,可能会出现短暂的连接中断。 如果已实现了标准暂时性错误的重试逻辑,则不会感知到故障转移的发生。

替代刻度方法

在不更改数据库或应用程序代码的情况下,缩放资源是提升数据库性能的最简单和最有效的方法。 在某些情况下,即使是最高的服务层级、计算大小和性能优化,也可能无法以成功和经济高效的方式处理工作负载。 在该情况下,可选择其他选项对数据库进行缩放:

  • 读扩展是一个可用的功能,它提供数据的一个只读副本,可以在此副本中执行高需求的只读查询,例如报表。 只读副本将处理只读工作负载,而不会影响主数据库上的资源使用情况。
  • 数据库分片是一组技术,可用于将数据拆分为多个数据库,并单独对这些数据库进行缩放。

异地副本的缩放操作

当您的 Azure SQL 资源具有异地副本时,请考虑以下与缩放操作相关的指南: