配置高性能 Azure-SSIS Integration Runtime

适用于: Azure 数据工厂 Azure Synapse Analytics

提示

试用 Microsoft Fabric 中的数据工厂,这是一种适用于企业的一站式分析解决方案。 Microsoft Fabric 涵盖从数据移动到数据科学、实时分析、商业智能和报告的所有内容。 了解如何免费开始新的试用

本文介绍如何配置高性能 Azure-SSIS Integration Runtime (IR)。 通过 Azure-SSIS IR 可以在 Azure 中部署和运行 SQL Server Integration Services (SSIS) 包。 有关 Azure-SSIS IR 的详细信息,请参阅 Integration Runtime 一文。 有关在 Azure 上部署和运行 SSIS 包的详细信息,请参阅将 SQL Server Integration Services 工作负荷直接迁移到云

重要

本文包含 SSIS 开发团队成员进行的内部测试所得出的性能结果和观察数据。 结果可能不同。 在完成配置设置(会影响成本和性能)前进行自我测试。

要配置的属性

配置脚本的以下部分显示创建 Azure-SSIS Integration Runtime 时可以配置的属性。 有关完整的 PowerShell 脚本和说明,请参阅将 SQL Server Integration Services 包部署到 Azure

# If your input contains a PSH special character, e.g. "$", precede it with the escape character "`" like "`$"
$SubscriptionName = "[your Azure subscription name]"
$ResourceGroupName = "[your Azure resource group name]"
$DataFactoryName = "[your data factory name]"
# For supported regions, see https://azure.microsoft.com/global-infrastructure/services/?regions=china-non-regional,china-east,china-east-2,china-north,china-north-2&products=all
$DataFactoryLocation = "China East 2" 

### Azure-SSIS integration runtime information - This is a Data Factory compute resource for running SSIS packages
$AzureSSISName = "[specify a name for your Azure-SSIS IR]"
$AzureSSISDescription = "[specify a description for your Azure-SSIS IR]"
# For supported regions, see https://azure.microsoft.com/global-infrastructure/services/?regions=china-non-regional,china-east,china-east-2,china-north,china-north-2&products=all
$AzureSSISLocation = "ChinaEast2" 
# For supported node sizes, see https://azure.cn/pricing/details/data-factory/ssis/
$AzureSSISNodeSize = "Standard_D8_v3"
# 1-10 nodes are currently supported
$AzureSSISNodeNumber = 2
# Azure-SSIS IR edition/license info: Standard or Enterprise
$AzureSSISEdition = "Standard" # Standard by default, while Enterprise lets you use advanced/premium features on your Azure-SSIS IR
# Azure-SSIS IR hybrid usage info: LicenseIncluded or BasePrice
$AzureSSISLicenseType = "LicenseIncluded" # LicenseIncluded by default, while BasePrice lets you bring your existing SQL Server license with Software Assurance to earn cost savings from Azure Hybrid Benefit (AHB) option
# For a Standard_D1_v2 node, up to 4 parallel executions per node are supported, but for other nodes, up to max(2 x number of cores, 8) are currently supported
$AzureSSISMaxParallelExecutionsPerNode = 8
# Custom setup info
$SetupScriptContainerSasUri = "" # OPTIONAL to provide SAS URI of blob container where your custom setup script and its associated files are stored
# Virtual network info: Classic or Azure Resource Manager
$VnetId = "[your virtual network resource ID or leave it empty]" # REQUIRED if you use Azure SQL Database with virtual network service endpoints/SQL Managed Instance/on-premises data, Azure Resource Manager virtual network is recommended, Classic virtual network will be deprecated soon
$SubnetName = "[your subnet name or leave it empty]" # WARNING: Please use the same subnet as the one used with your Azure SQL Database with virtual network service endpoints or a different subnet than the one used for your SQL Managed Instance

### SSISDB info
$SSISDBServerEndpoint = "[your server name or managed instance name.DNS prefix].database.chinacloudapi.cn" # WARNING: Please ensure that there is no existing SSISDB, so we can prepare and manage one on your behalf
# Authentication info: SQL or Azure Active Directory (AAD)
$SSISDBServerAdminUserName = "[your server admin username for SQL authentication or leave it empty for AAD authentication]"
$SSISDBServerAdminPassword = "[your server admin password for SQL authentication or leave it empty for AAD authentication]"
$SSISDBPricingTier = "[Basic|S0|S1|S2|S3|S4|S6|S7|S9|S12|P1|P2|P4|P6|P11|P15|…|ELASTIC_POOL(name = <elastic_pool_name>) for Azure SQL Database or leave it empty for SQL Managed Instance]"

AzureSSISLocation

AzureSSISLocation 是 Integration Runtime 辅助角色节点的位置。 该工作器节点始终连接到 Azure SQL 数据库中的 SSIS 目录数据库 (SSISDB)。 将“AzureSSISLocation”设置为与托管 SSISDB 的逻辑 SQL Server 相同的位置,这可以使集成运行时尽可能高效运行。

AzureSSISNodeSize

数据工厂(包括 Azure-SSIS IR)支持以下选项:

  • Standard_A4_v2
  • Standard_A8_v2
  • Standard_D1_v2
  • Standard_D2_v2
  • Standard_D3_v2
  • Standard_D4_v2
  • Standard_D2_v3
  • Standard_D4_v3
  • Standard_D8_v3
  • Standard_D16_v3
  • Standard_D32_v3
  • Standard_D64_v3
  • Standard_E2_v3
  • Standard_E4_v3
  • Standard_E8_v3
  • Standard_E16_v3
  • Standard_E32_v3
  • Standard_E64_v3

在 SSIS 工程团队进行的非官方内部测试中,D 系列表现得比 A 系列更加适合 SSIS 包执行。

  • D 系列的性价比高于 A 系列,v3 系列的性价比高于 v2 系列。
  • D 系列的吞吐量高于相同价格的 A 系列,v3 系列的吞吐量高于相同价格的 v2 系列。
  • Azure-SSIS IR 的 v2 系列节点不适用于自定义设置,因此请改用 v3 系列节点。 如果已使用 v2 系列节点,请尽快改为使用 v3 系列节点。
  • E 系列是内存优化的 VM 大小,提供比其他计算机更高的内存 CPU 比率。如果你的包需要大量内存,可以考虑选择 E 系列 VM。

配置执行速度

如果没有很多要运行的包并且需要包快速运行,则使用下表中的信息选择一个适合方案的虚拟机类型。

此数据代表单个辅助角色节点上的单个包执行。 此包从 Azure Blob 存储中加载 3 百万个包含名和姓列的记录,生成全名列并将全名超过 20 个字符的记录写到 Azure Blob 存储。

y-轴是一小时内执行完毕的包数。 请注意,这只是一个内存消耗包的测试结果。 若要了解包的吞吐量,建议你自行执行测试。

SSIS Integration Runtime package execution speed

配置整体吞吐量

如果有大量包要运行且最关注整体吞吐量,则使用下表中的信息选择适合方案的虚拟机类型。

y-轴是一小时内执行完毕的包数。 请注意,这只是一个内存消耗包的测试结果。 若要了解包的吞吐量,建议你自行执行测试。

SSIS Integration Runtime maximum overall throughput

AzureSSISNodeNumber

AzureSSISNodeNumber 调整 Integration Runtime 的可伸缩性。 Integration Runtime 的吞吐量与 AzureSSISNodeNumber 成正比。 首先将 AzureSSISNodeNumber 设为一个较小值,监视 Integration Runtime 的吞吐量,然后针对方案调整值。 若要重新配置辅助角色节点数,请参阅管理 Azure-SSIS Integration Runtime

AzureSSISMaxParallelExecutionsPerNode

已经在使用强大的辅助角色节点运行包时,增加 AzureSSISMaxParallelExecutionsPerNode 可能增加 Integration Runtime 的整体吞吐量。 如果要增加最大值,需要使用 Azure PowerShell 更新 AzureSSISMaxParallelExecutionsPerNode。 可以基于包的成本和辅助角色节点的以下配置估计合适的值。 有关详细信息,请参阅常规用途虚拟机大小

大小 vCPU 内存:GiB 临时存储 (SSD) GiB 最大临时存储吞吐量:IOPS/读取 MBps/写入 MBps 最大的数据磁盘/吞吐量:IOPS 最大 NIC 数/预期网络性能 (Mbps)
Standard_D1_v2 1 3.5 50 3000/46/23 2/2x500 2 / 750
Standard_D2_v2 2 7 100 6000/93/46 4/4x500 2 / 1500
Standard_D3_v2 4 14 200 12000/187/93 8/8x500 4 / 3000
Standard_D4_v2 8 28 400 24000/375/187 16/16x500 8 / 6000
Standard_A4_v2 4 8 40 4000/80/40 8/8x500 4 / 1000
Standard_A8_v2 8 16 80 8000/160/80 16/16x500 8 / 2000
Standard_D2_v3 2 8 50 3000/46/23 4 / 6x500 2 / 1000
Standard_D4_v3 4 16 100 6000/93/46 8 / 12x500 2 / 2000
Standard_D8_v3 8 32 200 12000/187/93 16 / 24x500 4 / 4000
Standard_D16_v3 16 64 400 24000/375/187 32/ 48x500 8 / 8000
Standard_D32_v3 32 128 800 48000/750/375 32 / 96x500 8 / 16000
Standard_D64_v3 64 256 1600 96000 / 1000 / 500 32 / 192x500 8 / 30000
Standard_E2_v3 2 16 50 3000/46/23 4 / 6x500 2 / 1000
Standard_E4_v3 4 32 100 6000/93/46 8 / 12x500 2 / 2000
Standard_E8_v3 8 64 200 12000/187/93 16 / 24x500 4 / 4000
Standard_E16_v3 16 128 400 24000/375/187 32 / 48x500 8 / 8000
Standard_E32_v3 32 256 800 48000/750/375 32 / 96x500 8 / 16000
Standard_E64_v3 64 432 1600 96000 / 1000 / 500 32 / 192x500 8 / 30000

以下是为 AzureSSISMaxParallelExecutionsPerNode 属性设置正确值的指南:

  1. 首先将它设置为一个较小值。
  2. 少量增加该值,以检查是否提升整体吞吐量。
  3. 在整体吞吐量达到最大值时停止增加值。

SSISDBPricingTier

“SSISDBPricingTier”是 Azure SQL 数据库中 SSIS 目录数据库 (SSISDB) 的定价层。 此设置影响 IR 实例中的最大辅助角色节点数、包执行排队速度以及执行日志加载速度。

  • 如果不关注包执行排队和执行日志加载速度,可以选择最低的数据库定价层。 使用基本定价的 Azure SQL 数据库在 Integration Runtime 实例中支持 8 个辅助角色节点。

  • 如果辅助角色节点计数大于 8 或者核心计数大于 50,则选择一个比基本版更强大的数据库。 否则,数据库会成为 Integration Runtime 实例的瓶颈,且整体性能会受到负面影响。

  • 如果日志记录级别设置为“详细”,则选择更强大的数据库,如 S3。 根据我们的非正式内部测试,S3 定价层可以支持具有 2 个节点、128 个并行计数和详细日志记录级别的 SSIS 包执行。

还可以基于 Azure 门户上提供的数据库事务单元 (DTU) 使用情况信息调整数据库定价层。

高性能设计

设计要在 Azure 上运行的 SSIS 包不同于设计本地执行的包。 不是将多个独立任务组合在同一包中,而是将它们分离到多个包中,从而提升在 Azure-SSIS IR 中执行的效率。 为每个包创建包执行,使它们不用等待彼此完成。 此方法受益于 Azure-SSIS Integration Runtime 的可伸缩性并提升整体吞吐量。

详细了解 Azure-SSIS Integration Runtime。 请参阅 Azure-SSIS Integration Runtime