複製活動效能優化功能

適用于: Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用于企業的單一分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告等所有專案。 瞭解如何 免費啟動新的試用版

本文概述您可以在 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 資料庫 或 Azure Cosmos DB :根據接收層 (DTU/RU) 和來源檔案模式,介於 4 到 16 之間
- 使用 PolyBase 或 COPY 語句複製到 Azure Synapse Analytics :2
- 其他案例:4
從非檔案存放區到檔案存放區 - 從已啟用資料分割選項的資料存放區 複製(包括 適用於 PostgreSQL 的 Azure 資料庫 Azure SQL 資料庫 Azure SQL 受控執行個體 、Azure Synapse Analytics Oracle Netezza SQL Server Teradata :寫入資料夾時為 2-256,寫入至單一檔案時為 2-4。 請注意,每個來源資料分割最多可使用 4 個 DIU。
- 其他案例 :2-4
- 從 REST 或 HTTP 複製:1
- 使用 UNLOAD 從 Amazon Redshift 複製:2
- 其他案例 :4
在非檔案存放區之間 - 從已啟用資料分割選項的資料存放區 複製(包括 適用於 PostgreSQL 的 Azure 資料庫 Azure SQL 資料庫 Azure SQL 受控執行個體 、Azure Synapse Analytics Oracle Netezza SQL Server Teradata :寫入資料夾時為 2-256,寫入至單一檔案時為 2-4。 請注意,每個來源資料分割最多可使用 4 個 DIU。
- 其他案例 :2-4
- 從 REST 或 HTTP 複製:1
- 其他案例 :4

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

您將需支付 已使用 DIU * 複製持續時間 * 單價/DIU 小時 的費用。 請參閱這裡的 目前價格 。 每個訂用帳戶類型可能會套用當地貨幣和個別折扣。

範例:

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

自我裝載整合執行時間延展性

如果您想要達到更高的輸送量,您可以相應增加或相應放大自我裝載 IR:

  • 如果自我裝載 IR 節點上的 CPU 和可用記憶體未完全利用,但並行作業的執行達到限制,您應該藉由增加可在節點上執行的並行作業數目來相應增加。 如需指示,請參閱 這裡
  • 另一方面,如果自我裝載 IR 節點的 CPU 偏高,或可用的記憶體不足,您可以新增節點來協助相應放大多個節點的負載。 如需指示,請參閱 這裡

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

平行複製

您可以在複製活動的 JSON 定義中設定平行複製( parallelCopies 屬性,或在 Degree of parallelism 複製活動上複製活動屬性的 [設定] 索引標籤中設定 ,以指出您想要複製活動使用的平行處理原則。 您可以將此屬性視為從來源讀取或寫入至接收資料存放區之複製活動內線程數目上限。

平行複製與資料整合單位或 自我裝載 IR 節點 正交 它會計入所有 DIU 或自我裝載 IR 節點。

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

提示

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

下表列出平行複製行為:

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

執行時間複製活動所使用的平行複製活動實際數目不超過您擁有的檔案數目。 如果複製行為是 mergeFile 到檔案接收,複製活動就無法利用檔案層級平行處理原則。
從檔案存放區到非檔案存放區 - 將資料複製到 Azure SQL 資料庫或 Azure Cosmos DB 時,預設平行複製也取決於接收層(DTU/RU 數目)。
- 將資料複製到 Azure 資料表時,預設平行複製為 4。
從非檔案存放區到檔案存放區 - 從已啟用資料分割選項的資料存放區複製資料時(包括 Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Oracle、 Amazon RDS for Oracle Netezza 、SAP HANA 、SAP Open Hub 、SAP Table 、SQL Server、 Amazon RDS for SQL Server Teradata ,預設平行複製為 4。 執行時間複製活動所使用的平行複製活動實際數目不超過您擁有的資料分割數目。 使用自我裝載整合執行時間並複製到 Azure Blob/ADLS Gen2 時,請注意每個 IR 節點的有效平行複製上限為 4 或 5。
- 針對其他案例,平行複製不會生效。 即使已指定平行處理原則,也不會套用它。
在非檔案存放區之間 - 將資料複製到 Azure SQL 資料庫或 Azure Cosmos DB 時,預設平行複製也取決於接收層(DTU/RU 數目)。
- 從已啟用資料分割選項的資料存放區複製資料時(包括 Azure SQL 資料庫 Azure SQL 受控執行個體 Azure Synapse Analytics Oracle、 Amazon RDS for Oracle Netezza 、SAP HANA 、SAP Open Hub 、SAP Table 、SQL Server、 Amazon RDS for SQL Server Teradata ,預設平行複製為 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 儲存體 Gen2 作為過渡暫存存放區。 在下列案例中,預備特別有用:

  • 您想要透過 PolyBase 將資料從各種資料存放區擷取到 Azure Synapse Analytics、從 Snowflake 複製資料或從 Amazon Redshift/HDFS 高效擷取資料。 深入瞭解:
  • 您不想在防火牆中開啟埠 80 和埠 443 以外的埠,因為公司 IT 原則。 例如,當您將資料從內部部署資料存放區複製到 Azure SQL 資料庫 或 Azure Synapse Analytics 時,您必須針對 Windows 防火牆和公司防火牆啟用埠 1433 上的輸出 TCP 通訊。 在此案例中,分段複製可以利用自我裝載整合執行時間,先透過埠 443 上的 HTTP 或 HTTPS 將資料複製到暫存儲存體,然後將資料從預備載入至 SQL 資料庫 或 Azure Synapse Analytics。 在此流程中,您不需要啟用埠 1433。
  • 有時候,透過緩慢的網路連線,執行混合式資料移動需要一段時間(也就是從內部部署資料存放區複製到雲端資料存放區)。 若要改善效能,您可以使用暫存複本來壓縮內部部署資料,因此將資料移至雲端中的暫存資料存放區需要較少的時間。 然後,您可以在載入目的地資料存放區之前,先解壓縮預備存放區中的資料。

分段複製的運作方式

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

Staged copy

您必須將刪除許可權授與預備儲存體中的 Azure Data Factory,以便在複製活動執行之後清除暫存資料。

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

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

組態

複製活動中設定 enableStaging 設定,以指定是否要在儲存體中暫存資料,再將它載入目的地資料存放區。 當您將 enableStaging 設定 TRUE 時,請指定下表所列的其他屬性。

屬性 Description 預設值 必要
enableStaging 指定是否要透過過渡暫存存放區複製資料。 False No
linkedServiceName 指定 Azure Blob 儲存體 Azure Data Lake 儲存體 Gen2 連結服務的名稱 ,此服務是指您用來作為過渡暫存存放區的儲存體實例。 N/A 是,當 enableStaging 設定為 TRUE 時
path 指定您想要包含暫存資料的路徑。 如果您沒有提供路徑,服務會建立容器來儲存暫存資料。 N/A No
enableCompression 指定資料在複製到目的地之前,是否應該壓縮資料。 此設定可減少傳輸的資料量。 False No

注意

如果您使用已啟用壓縮的分段複製,則不支援暫存 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 [雲端複製單價] x [雲端複製單價]。

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