複製活動效能最佳化功能

適用於:Azure Data Factory Azure Synapse Analytics

本文概述您可在 Azure Data Factory 和 Synapse 中運用的複製活動效能最佳化功能。

使用 UI 設定效能功能

當您在管線編輯器畫布上選取 [複製] 活動,然後選擇畫布下方活動設定區域中的 [設定] 索引標籤時,您會看到設定所有效能功能的選項,詳述如下。

Shows the Copy activity performance features on the Settings tab for the activity in the pipeline editor.

資料整合單位

資料整合單位是一項量值,代表服務中單一單位的能力 (CPU、記憶體和網路資源配置的組合)。 資料整合單位僅適用於 Azure 整合執行階段,但不適用於 自我裝載整合執行階段

允許複製活動執行的 DIU 介於 2 到 256 之間。 如果未指定,或您在 UI 上選擇 「自動」,服務會根據來源接收組和資料模式,動態套用最佳 DIU 設定。 下表列出不同複製案例中支援的 DIU 範圍和預設行為:

複製案例 支援的 DIU 範圍 服務決定的預設 DIU
在檔案存放區之間 - 從單一檔案複製或複製到單一檔案:2-4
- 從多個檔案複製和複製到多個檔案:2-256,視檔案數目和大小而定

例如,如果您從具有 4 個大型檔案的資料夾複製資料,並選擇保留階層,則最大的有效 DIU 為 16;當您選擇合併檔案時,最大的有效 DIU 為 4。
依據檔案的數量和大小,介於 4 到 32 之間
從檔案存放區到非檔案存放區 - 從單一檔案複製:2-4
- 從多個檔案複製:2-256,視檔案數目和大小而定

例如,如果您從具有 4 個大型檔案的資料夾複製資料,則最大的有效 DIU 為 16。
- 複製到 Azure SQL Database 或 Azure Cosmos DB:4 到 16 之間,視接收層 (DTU/RU) 和來源檔案模式而定
- 複製到 Azure Synapse Analytics (使用 PolyBase 或 COPY 陳述式):2
- 其他案例:4
從非檔案存放區到檔案存放區 - 從已啟用資料分割選項的資料存放區複製 (包括適用於 PostgreSQL 的 Azure 資料庫Azure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsOracleNetezzaSQL ServerTeradata):寫入資料夾時為 2-256,寫入至單一檔案時為 2-4。 請注意,每個來源資料分割最多可以使用 4 個 DIU。
- 其他案例:2-4
- 從 REST 或 HTTP 複製:1
- 從 Amazon Redshift 複製 (使用 UNLOAD):2
- 其他案例:4
在非檔案存放區之間 - 從已啟用資料分割選項的資料存放區複製 (包括適用於 PostgreSQL 的 Azure 資料庫Azure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsOracleNetezzaSQL ServerTeradata):寫入資料夾時為 2-256,寫入至單一檔案時為 2-4。 請注意,每個來源資料分割最多可以使用 4 個 DIU。
- 其他案例:2-4
- 從 REST 或 HTTP 複製:1
- 其他案例:4

您可以在複製活動監視檢視或活動輸出中看到供每個複製執行使用的 DIU。 如需詳細資訊,請參閱複製活動監視。 若要覆寫此預設值,請如下所示指定 dataIntegrationUnits 屬性的值。 根據您的資料模式,複製作業會在執行階段使用的 實際 DIU 數目 等於或小於所設定的值。

您將被收取的費用為使用的 DIU 數量 x 複製持續期間 x 單位價格/DIU-小時。 目前的價格請參閱這裡。 價格將根據訂閱類型套用當地貨幣並享有不同折扣。

範例︰

"activities":[
    {
        "name": "Sample copy activity",
        "type": "Copy",
        "inputs": [...],
        "outputs": [...],
        "typeProperties": {
            "source": {
                "type": "BlobSource",
            },
            "sink": {
                "type": "AzureDataLakeStoreSink"
            },
            "dataIntegrationUnits": 128
        }
    }
]

自我裝載整合執行階段延展性

如果您想要達到更高的輸送量,您可以擴大或擴增自我裝載整合執行階段:

  • 如果位於自我裝載整合執行階段節點上可用的記憶體和 CPU 並未充分使用,但目前的並行作業數目即將達到限制時,您應該增加節點上可執行的並行作業數目來進行擴大。 如需指示,請按一下這裡
  • 另一方面,如果自我裝載整合執行階段節點上的 CPU 偏高,或可用的記憶體不足,您可以新增節點來協助擴增跨多個節點的負載。 如需指示,請按一下這裡

請注意,在下列案例中,單一複製活動執行可以利用多個自我裝載整合執行階段節點:

平行複製

您可以在複製活動上設定平行複製 (parallelCopies 屬性),以指出您想要複製活動使用的平行處理原則。 您可以將此屬性視為複製活動中透過平行方式從來源讀取或寫入至接收資料存放區中的執行緒數目上限。

平行複製與資料整合單位自我裝載整合執行階段節點為正交 (orthogonal)。 它會計入所有 DIU 或自我裝載整合執行階段節點。

針對每個複製活動執行,根據預設,服務會根據來源-接收組和資料模式,動態套用最佳的平行複製設定。

提示

平行複製的預設行為通常會提供最佳輸送量,這是根據來源接收配對、資料模式、DIU 數目或自我裝載整合執行階段的 CPU/記憶體/節點計數,由服務自動決定的輸送量。 關於何時應微調平行複製,請參閱對複製活動效能進行疑難排解

下表列出平行複製行為:

複製案例 平行複製行為
在檔案存放區之間 parallelCopies 會決定檔案層級的平行處理原則。 每個檔案內的區塊化會以自動且透明的方式進行。 它的設計是為指定的資料儲存類型使用最適合的區塊,以平行載入資料。

用於執行階段的實際平行複製複製活動數目不會超過您擁有的檔案數目。 如果複製行為是 mergeFile 至檔案接收器,則複製活動無法利用檔案層級的平行處理原則。
從檔案存放區到非檔案存放區 - 將資料複製到 Azure SQL Database 或 Azure Cosmos DB 時,預設平行複製也取決於接收層 (DTU/RU 數目)。
- 將資料複製到 Azure 資料表時,預設平行複製為 4。
從非檔案存放區到檔案存放區 - 從已啟用資料分割選項的資料存放區 (包括Azure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsOracleAmazon RDS for OracleNetezzaSAP HANASAP Open HubSAP 資料表SQL ServerAmazon RDS for SQL ServerTeradata) 複製資料時,預設平行複製為 4。 用於執行階段的實際平行複製複製活動數目不會超過您擁有的資料分割區數目。 使用自我裝載整合執行階段並複製到 Azure Blob/ADLS Gen2 時,請注意每個整合執行階段節點的有效平行複製上限為 4 或 5。
- 在其他案例中,平行複製不會生效。 即使已指定平行處理原則,也不會套用。
在非檔案存放區之間 - 將資料複製到 Azure SQL Database 或 Azure Cosmos DB 時,預設平行複製也取決於接收層 (DTU/RU 數目)。
- 從已啟用資料分割選項的資料存放區 (包括Azure SQL DatabaseAzure SQL 受控執行個體Azure Synapse AnalyticsOracleAmazon RDS for OracleNetezzaSAP HANASAP Open HubSAP 資料表SQL ServerAmazon RDS for SQL ServerTeradata) 複製資料時,預設平行複製為 4。
- 將資料複製到 Azure 資料表時,預設平行複製為 4。

若要控制裝載資料存放區之電腦上的負載,或是調整複製效能,您可以覆寫預設值並指定 parallelCopies 屬性的值。 值必須是大於或等於 1 的整數。 在執行階段,為獲得最佳效能,複製活動會使用小於或等於設定的值。

當您為 parallelCopies 屬性指定值時,請將來源和接收資料存放區的負載增加納入考量。 另外,若複製活動受到自我裝載整合執行階段的支援,也請考慮其所增加的負載。 這種負載增加特別會在您有多個活動或是會對相同資料存放區執行相同活動的並行執行時發生。 如果您注意到資料存放區或自我裝載整合執行階段已無法應付負載,請減少 parallelCopies 值以減輕負載。

範例︰

"activities":[
    {
        "name": "Sample copy activity",
        "type": "Copy",
        "inputs": [...],
        "outputs": [...],
        "typeProperties": {
            "source": {
                "type": "BlobSource",
            },
            "sink": {
                "type": "AzureDataLakeStoreSink"
            },
            "parallelCopies": 32
        }
    }
]

分段複製

從來源資料存放區將資料複製到接收資料存放區時,您可以選擇使用 Azure Blob 儲存體或 Azure Data Lake Storage Gen2 做為過渡暫存存放區。 暫存在下列情況下特別有用︰

  • 您想要透過 PolyBase 將資料從各種資料存放區內嵌到 Azure Synapse Analytics、從 Snowflake 複製資料/將資料複製至 Snowflake,或從 Amazon Redshift/HDFS 以高效能方式內嵌資料。 從以下了解更多詳細資料:
  • 由於公司 IT 原則,您不想要在您的防火牆中開啟 80 和 443 以外的連接埠。 例如,從內部部署資料存放區將資料複製到 Azure SQL Database 接收或 Azure Synapse Analytics 時,您必須針對 Windows 防火牆和公司防火牆啟用連接埠 1433 上的輸出 TCP 通訊。 在此案例中,分段複製可利用自我裝載整合執行階段,先透過 HTTP 或 HTTPS 在連接埠 443 將資料複製到暫存儲存體,然後從 暫存儲存體將資料載入至 SQL Database 或 Azure Synapse Analytics。 在此流程中,您不需要啟用連接埠 1433。
  • 有時透過慢速網路連接執行混合式資料移動 (也就是,從內部部署資料存放區複製到雲端資料存放區),需要一段時間。 為了提升效能,您可以使用分段複製來壓縮內部部署資料,以減少移動資料到雲端中的暫存資料存放區所需的時間。 然後,您可以先在暫存存放區中解壓縮資料,再將其載入至目的地資料存放區。

分段複製的運作方式

當您啟用暫存功能時,會先從來源資料存放區複製資料到暫存儲存體 (自備 Azure Blob 或 Azure Data Lake Storage Gen2)。 接著再從暫存資料存放區複製資料到接收資料存放區。 複製活動會自動為您管理此兩階段流程,並在資料移動完成後,從暫存儲存體清除暫存資料。

Staged copy

當您使用暫存存放區啟動資料移動時,您可以指定是否要在從來源資料存放區將資料移動至過渡或暫存資料存放區之前壓縮資料,然後在從過渡或暫存資料存放區將資料移動至接收資料存放區之前解壓縮資料。

目前,您無法在透過不同自我裝載整合執行階段連線的兩個資料存放區之間複製資料,不論是否進行了分段複製。 針對這類案例,您可以設定兩個明確鏈結的複製活動,以從來源複製到預備環境,然後從暫存複製到接收。

組態

在複製活動中設定 [enableStaging] 設定,指定您是否想要讓資料在載入至目的地資料存放區之前,暫存在儲存體中。 當您將 [enableStaging] 設定為 TRUE 時,請指定下一份資料表所列出的其他屬性。

屬性 描述 預設值 必要
enableStaging 指定您是否要透過過渡暫存存放區複製資料。 False
linkedServiceName 指定 Azure Blob StorageAzure Data Lake Storage Gen2 連結服務的名稱,以代表您用來做為過渡暫存存放區的儲存體執行個體。 N/A 是,當 enableStaging 設為 TRUE
path 指定要您想要包含分段資料的路徑。 如果未提供路徑,服務會建立容器來儲存暫存資料。 N/A
enableCompression 指定將資料複製到目的地之前,是否應該壓縮資料。 此設定可減少傳輸的資料量。 False

注意

如果您在啟用壓縮的情況下使用分段複製,則不支援暫存 Blob 連結服務的服務主體或 MSI 驗證功能。

以下是具有上表所述屬性的複製活動範例定義︰

"activities":[
    {
        "name": "CopyActivityWithStaging",
        "type": "Copy",
        "inputs": [...],
        "outputs": [...],
        "typeProperties": {
            "source": {
                "type": "OracleSource",
            },
            "sink": {
                "type": "SqlDWSink"
            },
            "enableStaging": true,
            "stagingSettings": {
                "linkedServiceName": {
                    "referenceName": "MyStagingStorage",
                    "type": "LinkedServiceReference"
                },
                "path": "stagingcontainer/path"
            }
        }
    }
]

分段複製的計費影響

我們將會根據兩個步驟向您收費:複製持續時間和複製類型。

  • 在雲端複製期間使用暫存時 (從雲端資料存放區將資料複製到其他雲端資料存放區,兩個階段均使用 Azure 整合執行階段),所收費用為 [步驟 1 和步驟 2 的複製持續時間總和] x [雲端複製單位價格]。
  • 在混合式複製期間使用暫存時 (從內部部署資料存放區將資料複製到雲端資料存放區,一個階段使用自我裝載整合執行階段),所收費用為 [混合式複製持續時間] x [混合式複製單位價格] + [雲端複製持續時間] x [雲端複製單位價格]。

後續步驟

請參閱其他複製活動文章: