SQL ServerにSQLコマンドタスクがあり、1秒あたり20行しか更新されていませんが、200,000行以上を更新する必要があり、時間がかかります。SCD(タイプ2)を使用している場合、レコードの挿入も更新もされていません。(エラーも出さない)
行の一部のバッチが転送され、SQLコマンドタスクが黄色になります。ただし、列は更新されていますが、非常に低速です(1秒あたり20行)。
更新の速度を上げるにはどうすればよいですか?
SQL ServerにSQLコマンドタスクがあり、1秒あたり20行しか更新されていませんが、200,000行以上を更新する必要があり、時間がかかります。SCD(タイプ2)を使用している場合、レコードの挿入も更新もされていません。(エラーも出さない)
行の一部のバッチが転送され、SQLコマンドタスクが黄色になります。ただし、列は更新されていますが、非常に低速です(1秒あたり20行)。
更新の速度を上げるにはどうすればよいですか?
SQLタスクを使用しないでください。シングルトン操作を実行するため、ターゲットデータベースに対して200,000の更新ステートメントが発行されることが期待できます。クエリコンパイルプロセスのいくつかのステップを回避するためにストアドプロシージャを作成した場合、わずかなブーストが得られる可能性がありますが、テストして確認する必要があります。
パフォーマンスを向上させる実際の方法は、ステージングテーブルを作成し、更新するすべての行をそのテーブルにダンプすることです。データフローが完了したら、SQL実行タスクを接続して、ステージングテーブルからターゲットテーブルへのバッチ更新を実行します。
写真でそれがより明確になるかどうか教えてください
SQL 2008以降を使用している場合は、SQLコマンドのRBAR(行ごと)ではなく、セットベースの方法で機能するMERGEステートメント(SQL実行タスク内)を試してください。