您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn.

数据仓库单位 (专用 SQL 池的 Dwu) (以前的 Azure Synapse 分析中的 SQL DW)

针对选择理想数目的数据仓库单位 (DWU) 来优化价格和性能以及如何更改单位数提供了建议。

什么是数据仓库单位?

专用 sql DW (以前的 sql DW) 表示正在预配的分析资源的集合。 分析资源定义为 CPU、内存和 IO 的组合。

这三项资源捆绑到称为数据仓库单位 (DWU) 的计算规模单位中。 DWU 表示抽象、规范化的计算资源和性能度量值。

更改服务级别会改变系统可用的 DWU 数量,从而调整系统的性能和成本。

若要提高性能,可以增加数据仓库单位的数量。 若要降低性能,可以减少数据仓库单位数。 存储和计算成本分别计费,因此更改数据仓库单位数不会影响存储成本。

数据仓库单位性能基于这些数据仓库负载指标:

  • 标准专用 SQL 池 (以前的 SQL DW) query 可以多长时间扫描大量的行,然后执行复杂的聚合。 这是一种 I/O 和 CPU 密集型操作。
  • 专用 SQL 池 (以前的 SQL DW) 可从 Azure 存储 Blob 或 Azure Data Lake 引入数据的速度。 这是一种网络和 CPU 密集型操作。
  • CREATE TABLE AS SELECT T-SQL 命令复制表的速度。 此操作涉及从存储读取数据、将数据分配到设备的节点上,以及重新将数据写入到存储。 这是一种 CPU、IO 和网络密集型操作。

增加 DWU:

  • 以线性方式更改系统对扫描、聚合和 CTAS 语句的性能
  • 增加 PolyBase 加载操作的读取器和编写器数量
  • 增加并发查询和并发槽的最大数量。

服务级别目标

服务级别目标 (SLO) 是确定数据仓库的成本和性能级别的可伸缩性设置。 第 2 代服务级别以计算数据仓库单位 (cDWU) 计量,例如 DW2000c。 第 1 代服务级别以 DWU 计量,例如 DW2000。

(SLO) 的服务级别目标是可伸缩性设置,它确定专用 SQL 池 (以前的 SQL DW) 的成本和性能级别。 Gen2 专用 SQL 仓库的服务级别 (以前的 SQL DW) 以数据仓库单位 (DWU) 来度量,例如 DW2000c。

备注

专用 SQL 仓库 (以前的 SQL DW) Gen2 最近添加了额外的缩放功能,以支持低到 100 cDWU 的计算层。 当前在 Gen1 上需要较低计算层的现有数据仓库现可升级到当前可用区域中的 Gen2,无需额外成本。 如果你的区域尚不支持,仍可升级到支持的区域。 有关详细信息,请参阅升级到 Gen2

在 T-sql 中,SERVICE_OBJECTIVE 设置确定专用 SQL 池的服务级别和性能层 (以前的 SQL DW) 。

CREATE DATABASE mySQLDW
(Edition = 'Datawarehouse'
 ,SERVICE_OBJECTIVE = 'DW1000c'
)
;

性能层和数据仓库单位

每个性能层用于其数据仓库单位测量的单位都略有不同。 当规模单位直接转换为计费时,这种差异会反映在发票上。

  • 第 1 代数据仓库以数据仓库单位计量 (DWU)。
  • 第 2 代数据仓库以计算数据仓库单位 (cDWU) 计量。

DWU 和 cDWU 都支持增加或减少计算,以及在无需使用数据仓库时暂停计算。 这些操作均可按需进行。 第 2 代还会在计算节点上使用基于本地磁盘的缓存以提高性能。 缩放或暂停系统时,缓存将失效,因此在达到最佳性能前,缓存需要预热一段时间。

每个 SQL Server(例如 myserver.database.windows.net)都有一个允许指定数据仓库单位数的数据库事务单位 (DTU) 配额。 有关详细信息,请参阅工作负荷管理容量限制

容量限制

每个 SQL Server(例如 myserver.database.windows.net)都有一个允许指定数据仓库单位数的数据库事务单位 (DTU) 配额。 有关详细信息,请参阅工作负荷管理容量限制

我需要多少个数据仓库单位?

合适的数据仓库单位数很大程度上取决于工作负荷及已加载到系统的数据量。

查找最适合工作负荷的 DWU 的步骤:

  1. 首先选择一个较小的 DWU。
  2. 在测试数据加载到系统中时,监视应用程序性能,将所选 DWU 数目与观测到的性能变化进行比较。
  3. 确认峰值活动周期的其他要求。 在活动中表现出明显峰值和低谷的工作负载可能需要频繁地进行缩放。

专用 SQL 池 (以前的 SQL DW) 是一种扩展系统,它可以预配大量计算和查询就前往的数据量。

要查看其真正的缩放功能(尤其是针对较大的 DWU),建议在缩放的同时对数据集进行缩放,确保可向 CPU 提供足够的数据。 对于规模测试,建议至少使用 1 TB。

备注

此外,如果可以计算节点之间拆分工作,与多个并行化只会增加查询性能。 如果发现该缩放未更改性能,建议优化表设计和/或查询。 有关查询优化指南,请参阅管理用户查询

权限

更改数据仓库单位需要 ALTER DATABASE 中所述的权限。

Azure 内置角色(如 SQL DB 参与者和 SQL Server 参与者)可以更改 DWU 设置。

查看当前的 DWU 设置

查看当前的 DWU 设置:

  1. 在 Visual Studio 中打开“SQL Server 对象资源管理器”。
  2. 连接到与逻辑 SQL 服务器关联的 master 数据库。
  3. 从 sys.database_service_objectives 动态管理视图中选择。 以下是示例:
SELECT  db.name [Database]
,        ds.edition [Edition]
,        ds.service_objective [Service Objective]
FROM    sys.database_service_objectives   AS ds
JOIN    sys.databases                     AS db ON ds.database_id = db.database_id
;

更改数据仓库单位

Azure 门户

若要更改 DWU,请执行以下操作:

  1. 打开 Azure 门户,打开数据库,并单击“缩放”。

  2. 在“缩放”下,向左或向右移动滑块,以更改 DWU 设置。

  3. 单击“ 保存”。 此时会显示确认消息。 单击“是”确认,或者单击“否”取消。

PowerShell

备注

本文已经过更新,以便使用 Azure Az PowerShell 模块。 若要与 Azure 交互,建议使用的 PowerShell 模块是 Az PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

若要更改 DWU,请使用 Set-AzSqlDatabase PowerShell cmdlet。 以下示例将托管在服务器 MyServer 上的数据库 MySQLDW 的服务级别目标设置为 DW1000。

Set-AzSqlDatabase -DatabaseName "MySQLDW" -ServerName "MyServer" -RequestedServiceObjectiveName "DW1000c"

有关详细信息,请参阅 PowerShell cmdlet for 专用 sql 池 (以前的 SQL DW)

T-SQL

使用 T-SQL,可查看当前的 DWU 设置,更改设置,以及检查进度。

若要更改 DWU,请执行以下操作:

  1. 连接到与服务器关联的 master 数据库。
  2. 使用 ALTER DATABASE TSQL 语句。 以下示例将数据库 MySQLDW 的服务级别目标设置为 DW1000c。
ALTER DATABASE MySQLDW
MODIFY (SERVICE_OBJECTIVE = 'DW1000c')
;

REST API

若要更改 DWU,请使用创建或更新数据库 REST API。 以下示例将托管在服务器 MyServer 上的数据库 MySQLDW 的服务级别目标设置为 DW1000c。 该服务器位于名为 ResourceGroup1 的 Azure 资源组中。

PUT https://management.azure.com/subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/Microsoft.Sql/servers/{server-name}/databases/{database-name}?api-version=2014-04-01-preview HTTP/1.1
Content-Type: application/json; charset=UTF-8

{
    "properties": {
        "requestedServiceObjectiveName": "DW1000c"
    }
}

有关更多 REST API 示例,请参阅 以前的 SQL DW) (专用 sql 池的 REST api

检查 DWU 更改的状态

DWU 更改可能需要几分钟才能完成。 如果要自动缩放,建议实现逻辑以确保某些操作在继续另一项操作前已完成。

检查通过不同终结点的数据库状态可允许你正确实现自动化。 门户在完成操作和数据库当前状态时提供通知,但不允许以编程方式检查状态。

不能使用 Azure 门户检查向外扩展操作的数据库状态。

检查 DWU 更改的状态:

  1. 连接到与服务器关联的 master 数据库。
  2. 提交以下查询以检查数据库状态。
SELECT    *
FROM      sys.databases
;
  1. 提交以下查询以检查操作状态

    SELECT    *
    FROM      sys.dm_operation_status
    WHERE     resource_type_desc = 'Database'
    AND       major_resource_id = 'MySQLDW'
    ;
    

此 DMV 返回 (以前的 SQL DW) (如操作和操作的状态,即 IN_PROGRESS 或已完成)的各种管理操作的相关信息。

缩放工作流

启动缩放操作时,系统首先终止所有打开的会话,回退所有打开的事务以确保状态一致。 对于缩放操作,缩放仅在此事务回退完成后才会发生。

  • 对于纵向扩展操作,系统会拆离所有计算节点,预配额外的计算节点,然后将其重新附加到存储层。
  • 对于纵向缩减操作,系统会拆离所有计算节点,然后仅将所需的节点重新附加到存储层。

后续步骤

若要了解有关如何管理性能的详细信息,请参阅用于工作负荷管理的资源类内存和并发限制