applies to:Azure SQL Database
Azure SQL Managed Instance
Azure SQL Database和Azure SQL Managed Instance允许您动态地向数据库添加更多资源,并且只需极少的停机时间。然而,会有一个切换期间,期间与数据库的连接会短暂中断,可以通过重试逻辑进行缓解。
概述
当你的应用需求从少数设备和客户增长到数百万时,Azure SQL 数据库和 SQL 托管实例可以即时扩展,停机时间最小。 可伸缩性是平台即服务 (PaaS) 最重要的特性之一,它允许在需要时向服务动态添加更多资源。 Azure SQL Database使你能够轻松更改分配给数据库的资源(CPU 电源、内存、IO 吞吐量和存储)。
可以通过其他方法缓解由于应用程序使用增加而引起的性能问题,因为这些问题无法通过索引或查询重写方法来解决。 添加更多资源可在数据库达到当前资源限制并需要更多电源处理传入的工作负荷时快速做出反应。 Azure SQL Database还使你能够在不需要资源以降低成本时缩减资源。
不必担心购买硬件和更改底层基础结构。 可以使用滑块通过Azure门户轻松缩放数据库。
Azure SQL Database提供了基于 DTU 的购买模型概述和基于 vCore 的购买模型,而Azure SQL Managed Instance仅提供基于 vCore 的购买模型。
- 基于 DTU 的购买模型在以下三个服务层级中提供包括计算、内存和 I/O 资源在内的各种内容,以支持轻型到重型数据库工作负载:基本、标准和高级。 每个层中的不同性能级别提供这些资源的不同组合,你可以向其添加更多的存储资源。
- 基于 vCore 的购买模型允许选择 vCore 数、内存容量,以及存储的容量和速度。 此购买模型提供三个服务层级:“常规用途”、“业务关键”和“超大规模”。
可随时更改数据库、弹性池或托管实例的服务层级、计算层级和资源限制。 例如,可以使用无服务器计算层次在单个数据库上构建你的第一个应用程序,然后随时手动或以编程方式将其服务层级更改为预配置的计算层,以满足你的解决方案的需求。
注意
在下面一个重要的例外情况下,不能更改数据库服务层级:
- 如果数据库使用的功能仅限于业务关键层级/高级服务层级,则无法将这些数据库改为使用常规用途/标准服务层级。 目前,唯一的此类功能是内存中 OLTP。
- 最初在“超大规模”服务层级中创建的数据库无法迁移到其他服务层级。 如果将Azure SQL Database中的现有数据库迁移到“超大规模”服务层级,可以在原始迁移到“超大规模”后的 45 天内反向迁移到“常规用途”服务层级。 如果要将数据库迁移到另一个服务层级(例如“业务关键”),请先反向迁移到“常规用途”服务层级,然后执行进一步的迁移。 有关详细信息,请参阅 反向从“超大规模”迁移数据库。
可以通过更改服务目标或缩放来调整分配给数据库的资源,以满足工作负荷需求。 这样,你只需在必要的时候为需要的资源付费。 有关缩放操作可能对应用程序产生的影响,请参阅注释。
Azure SQL Database提供动态缩放数据库的功能:
Azure SQL Managed Instance也可以进行扩展:
- SQL Managed Instance使用 vCores 模式,使你可以定义分配给实例的最大 CPU 核心数和最大存储数。 该托管实例中的所有数据库都将共享分配给该实例的资源。
提示
动态缩放允许客户以手动或编程方式更改资源分配。 动态缩放功能适用于所有Azure SQL Database和Azure SQL Managed Instance资源。
除了支持动态缩放之外,Azure SQL Database中的 无服务器计算层还支持自动缩放。 无服务器层中的数据库根据工作负载需求自动在客户指定的范围内缩放资源。 无需客户操作即可缩放数据库。
扩展或缩减操作的影响
在上述任何一种情况下,启动纵向扩展或纵向缩减操作都将重新启动数据库引擎进程,并将其移到不同的虚拟机(如果需要)。 将数据库引擎进程移动到新的虚拟机是一个 online 进程,在此期间,可以继续使用现有的Azure SQL Database服务。 一旦目标数据库引擎准备好处理查询,与当前数据库引擎的开放连接将被终止,并且未提交的事务将被回滚。 将与目标数据库引擎建立新连接。
注意
建议不要在运行长期事务(例如数据导入、数据处理作业、索引重新生成等)或实例上有任何活动连接时缩放托管实例。 为防止缩放所需时间比平时更长,应在所有长时间运行的操作完成时进行实例缩放。
注意
当放大/缩小过程完成时,可能会出现短暂的连接中断。 如果已实现了标准暂时性错误的重试逻辑,则不会注意到故障切换。
替代缩放方法
在不更改数据库或应用程序代码的情况下,缩放资源是提升数据库性能的最简单和最有效的方法。 在某些情况下,即使是最高的服务层级、计算大小和性能优化,也可能无法以成功和经济高效的方式处理工作负载。 在该情况下,可选择其他选项对数据库进行缩放:
- 读取横向扩展是一项功能,在这种功能中,您会获得数据的一个只读副本,可在该副本中执行较复杂的只读查询,例如报表生成。 只读副本将处理只读工作负载,而不会影响主数据库上的资源使用情况。
- 数据库分片是一组技术,可用于将数据拆分为多个数据库,并单独对这些数据库进行缩放。
异地副本的缩放操作
当Azure SQL资源具有异地副本时,请考虑以下缩放操作指南:
- Azure SQL Database:活动异地复制、故障转移组
- Azure SQL Managed Instance:Failover 组
相关内容
- 有关通过更改数据库代码提升数据库性能的信息,请参阅查找并应用性能建议。
- 有关让内置数据库智能优化数据库的信息,请参阅自动微调。
- 有关读取横向扩展Azure SQL Database的信息,请参阅如何使用只读副本对只读查询工作负荷进行负载均衡。
- 有关数据库分片的信息,请参阅 使用 Azure SQL 数据库进行扩展。
- 有关使用脚本监视和扩展单个数据库的示例,请参阅使用 PowerShell 监视和扩展单个 SQL 数据库。