次のようなパイプライン コピー アクティビティを含むデータ ファクトリがあります。
{
"type": "Copy",
"name": "Copy from storage to SQL",
"inputs": [
{
"name": "storageDatasetName"
}
],
"outputs": [
{
"name": "sqlOutputDatasetName"
}
],
"typeProperties": {
"source": {
"type": "BlobSource"
},
"sink": {
"type": "SqlSink"
}
},
"policy": {
"concurrency": 1,
"retry": 3
},
"scheduler": {
"frequency": "Month",
"interval": 1
}
}
入力データのサイズは約 90MB、約 150 万行で、約 2 分割されています。Azure Storage 内の 20 x 4.5 MB ブロック BLOB ファイル。データ (CSV) の例を次に示します。
A81001,1,1,1,2,600,3.0,0.47236654,141.70996,0.70854986 A81001,4,11,0,25,58,243.0,5.904582,138.87575757575758,58,58,243.0,5.904582,138575757575757575757575757575757575757575757574 65.65895
シンクは、定格が 50 DTU の S2 型の Azure SQL Server です。適切なデータ型で、キー、インデックス、その他の凝ったものはなく、列だけの単純なテーブルを作成しました。
CREATE TABLE [dbo].[Prescriptions](
[Practice] [char](6) NOT NULL,
[BnfChapter] [tinyint] NOT NULL,
[BnfSection] [tinyint] NOT NULL,
[BnfParagraph] [tinyint] NOT NULL,
[TotalItems] [int] NOT NULL,
[TotalQty] [int] NOT NULL,
[TotalActCost] [float] NOT NULL,
[TotalItemsPerThousand] [float] NOT NULL,
[TotalQtyPerThousand] [float] NOT NULL,
[TotalActCostPerThousand] [float] NOT NULL
)
ソース、シンク、データ ファクトリはすべて同じリージョン (北ヨーロッパ) にあります。
Microsoft の「コピー アクティビティのパフォーマンスとチューニング ガイド」によると、Azure ストレージ ソースと Azure SQL S2 シンクの場合、約 0.4 MBps になるはずです。私の計算では、約 30 分で 90MB が転送されるはずです (そうですか?)。
何らかの理由で、70,000 行を非常に高速にコピーした後、ハングしているように見えます。SQL 管理スタジオを使用すると、データベース テーブルの行数が正確に 70,000 で、 7 時間でまったく増加していないことがわかります。それでも、コピー タスクはエラーなしで実行されています。
これが70,000行でぶら下がっている理由は何ですか? 70,001 番目のデータ行について、問題を引き起こすような異常は見られません。データ ファクトリを強制的に破棄してやり直そうとしましたが、常に同じ動作になります。小さいテーブル (8000 行) を使用した別のコピー アクティビティがあり、1 分で完了します。