SQL 数据库选项和性能:了解每个服务层提供的功能

Azure SQL 数据库提供四个服务层:基本标准高级高级 RS。 每个服务层提供多个性能级别来处理不同的工作负荷。 更高的性能级别提供更多的资源,旨在逐级提高吞吐量。 可在不停机的情况下动态更改服务层和性能级别。 基本、标准和高级服务层都提供 99.99% 的运行时间 SLA、灵活的业务连续性选项、安全功能和按小时计费功能。 高级 RS 层提供的性能级别、安全功能和业务连续性功能与高级层相同,但 SLA 更低。

Important

与高级或标准数据库相比,高级 RS 数据库以更少的冗余副本运行。 因此,在发生服务故障时,可能需要从备份中恢复数据库,这最长会出现 5 分钟的滞后时间。

可以使用服务层中具有特定性能级别的专用资源创建单一数据库。 还可以在弹性池中创建数据库,弹性池中的资源在多个数据库之间共享。 可用于单一数据库的资源以数据库事务单位 (DTU) 表示,可用于弹性池的资源则以弹性数据库事务单位 (eDTU) 表示。 有关 DTU 和 eDTU 的详细信息,请参阅什么是 DTU?

选择服务层

下表提供了最适用于不同应用程序工作负荷的层的示例。

服务层 目标工作负荷
基本 最适合小型数据库,通常支持在给定时间执行一个活动操作。 示例包括用于开发或测试的数据库,或不常使用的小型应用程序。
标准 云应用程序的转到选项,提供低到中等的 IO 性能要求,并支持多个并发查询。 示例包括工作组或 Web 应用程序。
高级 专为高事务量设计,提供高 IO 性能要求,并支持许多并发用户。 示例包括支持任务关键型应用程序的数据库。
高级 RS 专为不需要最高可用性保证的 IO 密集型工作负荷设计。 示例包括测试高性能工作负荷或数据库不是记录系统的分析工作负荷。

首先请确定是要运行包含定义数量的专用资源的单一数据库,还是要在一组数据库之间共享某个资源池。 查看弹性池注意事项。 若要确定服务层,首先确定需要的最少数据库功能:

服务层功能 基本 标准 高级 高级 RS
最大单一数据库大小 2 GB 250 GB 4 TB* 500 GB
最大的弹性池大小 156 GB 2.9 TB 4 TB* 750 GB
弹性池中的最大数据库大小 2 GB 250 GB 500 GB 500 GB
每个池的数据库数目上限 500 500 100 100
最大单一数据库 DTU 5 100 4000 1000
弹性池中的每数据库最大 DTU 5 3000 4000 1000
数据库备份保留期 7 天 35 天 35 天 35 天

确定最低服务层后,就可以确定数据库的性能级别(DTU 数)。 通常情况下,一开始可以使用标准 S2 和 S3 性能级别。 对于具有较高 CPU 或 IO 要求的数据库,高级性能级别是合适的起点。 与最高的标准性能级别相比,高级性能级别提供更多 CPU 和至少高 10 倍的 IO。

单一数据库服务层和性能级别

对于单一数据库,每个服务层内都具有多个性能级别。 可以使用 Azure 门户、PowerShellTransact-SQL、C# 和 REST API 灵活选择最适合工作负荷需求的级别。

尽管有多个托管的数据库,你的数据库仍可确保获得一组资源,并且数据库的预期性能特征不受影响。

基本服务层

性能级别 基本
最大 DTU 5
最大数据库大小* 2 GB
最大内存 OLTP 存储 不适用
最大并发工作线程数(请求数) 30
最大并发登录数 30
最大并发会话数 300

标准服务层

性能级别 S0 S1 S2 S3
最大 DTU 10 20 50 100
最大数据库大小* 250 GB 250 GB 250 GB 250 GB
最大内存 OLTP 存储 不适用 不适用 不适用 不适用
最大并发工作线程数(请求数) 60 90 120 200
最大并发登录数 60 90 120 200
最大并发会话数 600 900 1200 2400

高级服务层

性能级别 P1 P2 P4 P6 P11 P15
最大 DTU 125 250 500 1000 1750 4000
最大数据库大小* 500 GB 500 GB 500 GB 500 GB 4 TB 4 TB
最大内存中 OLTP 存储 1 GB 2 GB 4 GB 8 GB 14 GB 32 GB
最大并发工作线程数(请求数) 200 400 800 1600 2400 6400
最大并发登录数 200 400 800 1600 2400 6400
最大并发会话数 30000 30000 30000 30000 30000 30000

高级 RS 服务层

性能级别 PRS1 PRS2 PRS4 PRS6
最大 DTU 数 125 250 500 1000
最大数据库大小* 500 GB 500 GB 500 GB 500 GB
最大内存中 OLTP 存储 1 GB 2 GB 4 GB 8 GB
最大并发工作线程数(请求数) 200 400 800 1600
最大并发登录数 200 400 800 1600
最大并发会话数 30000 30000 30000 30000

*最大数据库大小是指数据库中数据的最大大小。

Note

如需本服务层表中所有其他行的详细说明,请参阅 服务层功能和限制

上下缩放单一数据库

在一开始选取服务层和性能级别以后,即可根据实际经验对单一数据库动态地进行上下缩放。 若需增加或减少,可以使用 Azure 门户、PowerShellTransact-SQL、C# 和 REST API 轻松更改数据库层。

更改数据库的服务层和/或性能级别将在新的性能级别创建原始数据库的副本,然后将连接切换到副本。 在此过程中不会丢失任何数据,但在切换到副本的短暂瞬间,将禁用与数据库的连接,因此可能回滚某些处于进行状态的事务。 此时间范围因具体情况而异,但平均低于 4 秒,并且在超过 99%的情况下低于 30 秒。 在禁用连接的瞬间有大量事务正在进行时,此时间范围可能更长。

整个扩展过程的持续时间同时取决于更改前后数据库的大小和服务层。 例如,250 GB 的数据库以标准服务层为源和/或目标的更改应在 6 小时内完成。 而同样大小的数据库在高级服务层内更改性能级别应在 3 小时内完成。

  • 若要对数据库进行降级,数据库应小于目标服务层允许的最大大小。
  • 在启用了异地复制的情况下升级数据库时,必须先将辅助数据库升级到所需的性能层,然后再升级主数据库。
  • 从高级服务层降级时,必须先终止所有异地复制关系。 可以按照在中断后恢复主题中所述的步骤停止主数据库与活动次要数据库之间的复制过程(常规指南)。
  • 各服务层的还原服务不同。 如果降级,可能无法再还原到某个时间点,或者备份保留期变短。 有关详细信息,请参阅 Azure SQL 数据库备份和还原
  • 更改完成前不会应用数据库的新属性。

弹性池服务层和性能 (eDTU)

池允许数据库共享和使用 eDTU 资源,而无需为该池中的每个数据库分配特定性能级别。 例如,标准池中的单一数据库可使用 0 个 eDTU 到最大数据库 eDTU 数(配置池时设置的)运转。 弹性池允许多个具有不同工作负荷的数据库有效地使用在整个池中都可用的 eDTU 资源。 有关详细信息,请参阅 弹性池的价格和性能注意事项

下表描述了弹性池的资源限制。 请注意,弹性池中单个数据库的资源限制通常与池外部基于 DTU 和服务层的单个数据库相同。 例如,S2 数据库的最大并发辅助进程数为 120 个。 因此,如果池中每个数据库的最大 DTU 是 50 DTU(这等效于 S2),则标准池中数据库的最大并发辅助进程数也是 120 个辅助进程。

基本弹性池限制

池大小 (eDTU) 50 100 200 300 400 800 1200 1600
每个池的最大数据存储空间* 5 GB 10 GB 20 GB 29 GB 39 GB 78 GB 117 GB 156 GB
每个池的最大内存中 OLTP 存储 不适用 不适用 不适用 不适用 不适用 不适用 不适用 不适用
每个池的数据库最大数目 100 200 500 500 500 500 500 500
每个池的最大并发工作线程数(请求数) 100 200 400 600 800 1600 2400 3200
每个池的最大并发登录数 100 200 400 600 800 1600 2400 3200
每个池的最大并发会话数 30000 30000 30000 30000 30000 30000 30000 30000
每个数据库的最小 eDTU 数 {0, 5} {0, 5} {0, 5} {0, 5} {0, 5} {0, 5} {0, 5} {0, 5}
每个数据库的最大 eDTU 数 {5} {5} {5} {5} {5} {5} {5} {5}
每个数据库的最大数据存储 2 GB 2 GB 2 GB 2 GB 2 GB 2 GB 2 GB 2 GB

标准弹性池限制

池大小 (eDTU) 50 100 200 300 400 800
每个池的最大数据存储空间* 50 GB 100 GB 200 GB 300 GB 400 GB 800 GB
每个池的最大内存中 OLTP 存储 不适用 不适用 不适用 不适用 不适用 不适用
每个池的数据库最大数目 100 200 500 500 500 500
每个池的最大并发工作线程数(请求数) 100 200 400 600 800 1600
每个池的最大并发登录数 100 200 400 600 800 1600
每个池的最大并发会话数 30000 30000 30000 30000 30000 30000
每个数据库的最小 eDTU 数 {0,10,20,
50}
{0,10,20,
50,100}
{0,10,20,
50,100}
{0,10,20,
50,100}
{0,10,20,
50,100}
{0,10,20,
50,100}
每个数据库的最大 eDTU 数 {10,20,
50}
{10,20,
50,100}
{10,20,
50,100}
{10,20,
50,100}
{10,20,
50,100}
{10,20,
50,100}
每个数据库的最大数据存储 250 GB 250 GB 250 GB 250 GB 250 GB 250 GB

标准弹性池限制(续)

池大小 (eDTU) 1200 1600 2000 2500 3000
每个池的最大数据存储空间* 1.2 TB 1.6 TB 2 TB 2.4 TB 2.9 TB
每个池的最大内存中 OLTP 存储 不适用 不适用 不适用 不适用 不适用
每个池的数据库最大数目 500 500 500 500 500
每个池的最大并发工作线程数(请求数) 2400 3200 4000 5000 6000
每个池的最大并发登录数 2400 3200 4000 5000 6000
每个池的最大并发会话数 30000 30000 30000 30000 30000
每个数据库的最小 eDTU 数 {0,10,20,
50,100}
{0,10,20,
50,100}
{0,10,20,
50,100}
{0,10,20,
50,100}
{0,10,20,
50,100}
每个数据库的最大 eDTU 数 {10,20,
50,100}
{10,20,
50,100}
{10,20,
50,100}
{10,20,
50,100}
{10,20,
50,100}
每个数据库的最大数据存储 250 GB 250 GB 250 GB 250 GB 250 GB

高级弹性池限制

池大小 (eDTU) 125 250 500 1000
每个池的最大数据存储空间* 250 GB 500 GB 750 GB 750 GB
每个池的最大内存中 OLTP 存储 1 GB 2 GB 4 GB 10 GB
每个池的数据库最大数目 50 100 100 个 100 个
每个池的最大并发工作线程数(请求数) 200 400 800 1600
每个池的最大并发登录数 200 400 800 1600
每个池的最大并发会话数 30000 30000 30000 30000
每个数据库的最小 eDTU 数 {0,25,50,75,
125}
{0,25,50,75,
125,250}
{0,25,50,75,
125,250,500}
{0,25,50,75,
125,250,500,
1000}
每个数据库的最大 eDTU 数 {25,50,75,
125}
{25,50,75,
125,250}
{25,50,75,
125,250,500}
{25,50,75,
125,250,500,
1000}
每个数据库的最大数据存储 500 GB 500 GB 500 GB 500 GB

高级 RS 弹性池限制

池大小 (eDTU) 125 250 500 1000
每个池的最大数据存储空间* 250 GB 500 GB 750 GB 750 GB
每个池的最大内存中 OLTP 存储 1 GB 2 GB 4 GB 10 GB
每个池的最大数据库数 50 100 100 个 100
每个池的最大并发工作线程数(请求数) 200 400 800 1600
每个池的最大并发登录数 200 400 800 1600
每个池的最大并发会话数 30000 30000 30000 30000
每个数据库的最小 eDTU 数 {0,25,50,75,
125}
{0,25,50,75,
125,250}
{0,25,50,75,
125,250,500}
{0,25,50,75,
125,250,500,
1000}
每个数据库的最大 eDTU 数 {25,50,75,
125}
{25,50,75,
125,250}
{25,50,75,
125,250,500}
{25,50,75,
125,250,500,
1000}
每个数据库的最大数据存储 500 GB 500 GB 500 GB 500 GB
Important

*入池数据库共享池存储空间,因此弹性池中的数据存储空间被限制为池的剩余存储空间或每个数据库的最大存储空间(取二者之中的较小者)。

** 对于 eDTU 至少为 1500 的高级池来说,每个池的默认最大数据存储为 750 GB。 若要提高每个池的最大数据存储大小,必须使用 Azure 门户或 PowerShell 显式选择该大小。对于中国地区,每个池的最大存储上限目前为 750 GB。

上下缩放弹性池

在一开始选取服务层和性能级别以后,即可根据实际经验对弹性池动态地进行上下缩放。

  • 更改每个数据库的最小 eDTU 数或每个数据库的最大 eDTU 数通常可在五分钟或更少的时间内完成。
  • 更改池大小 (eDTU) 所需的时间取决于池中所有数据库的总大小。 每 100 GB 的更改平均需要 90 分钟或更短的时间。 例如,如果池中所有数据库的总空间为 200 GB,则更改每个池的池 eDTU 时,预计延迟为 3 小时或更短的时间。

如需详细步骤,请参阅在 Azure 门户中管理弹性池使用 Powershell 管理弹性池使用 Transact-SQL 管理弹性池使用 C# 管理弹性池

后续步骤