に私はローカルでSqlBulkCopyとFastMemberにSqlBulkCopy *非常に*ゆっくりとAzureのSQLとC#
を使用してSQLにレコードを挿入しています私は約2秒で100kのレコードを挿入することができます。 Azure WebアプリケーションWebjobとAzure SQLデータベースでこれを実行すると、10分以上かかるのでトランザクションがタイムアウトします。テーブルの定義は同じで、表のデータの量は似ています。ロックはありません。遅いです。 ローカルで実行し、Azure Sqlデータベースに書き込もうとすると10分以上かかります。
実際の呼び出しは、それができるように簡単です:
using(var bulkCopy = new SqlBulkCopy(connection){DestinationTableName="Table")
using(var reader = ObjectReader.Create(entities, columnList)
{
await bulkCopy.WriteToServerAsync(reader).ConfigureAwait(false);
}
私はTransactionScope(Suppress)
を使用してトランザクションを削除しようとしましたが、それは何の違いを作ったんです。
誰かが私に何か愚かなミスをしたのか、これを診断するためのヒントを教えてくれますか?それは本当にイライラしています! 時間の違いが大きすぎるので、私はここで何か根本的に欠けていると確信しています。そのワークロードを実行している間、あなたは高いログ書き込みパーセントを検証するために、クエリの下に実行することができます
データベース層とは何ですか?この間にDTU(ログ/ cpu/Io /メモリ)のどの部分が最大限に活用されていますか? – TheGameiswar
S3/P1(同様の結果)、どちらの場合でもDTUは最大値にはなりません。 DTUが約70%に短期間で急上昇し、次に約10-20%のところに座っています – Carl
あなたは待っている必要があります。この期間中に待機時間を集めることができますか – TheGameiswar