SSISを使用して200万行のテーブルの約100万行を挿入/削除します。
このテーブルには20個のインデックスがあります。
SSISが終了した直後に、フロントエンドでタイムアウトが発生しています。タイムアウトは最終的になくなります。
インデックスの再編成中に、インデックスがこれを引き起こしているのではないかと思います。
私たちは何ができる?
データが更新されるとインデックスが更新され、インデックスの更新は同期されます。
現在、統計の更新は非同期操作です。データの更新が手動で行われた後、問題のテーブルの統計を更新します。
テーブル内の20%を超える行を更新すると、 statistics 更新がトリガーされます。
SQL Serverのデフォルトの動作は、これを同期的に実行することです。これは、影響を受けるインデックスが実行プランで使用されている場合、オプティマイザは統計が古くなっていることに気づき、すぐに更新を強制し、実行プランを再コンパイルすることを意味します。
SQL Server 2005には、データベースの統計更新を非同期にする新機能があります。つまり、オプティマイザーは古い統計を使用しますが、バックグラウンドで統計更新を実行するため、次のクエリで新しい統計が利用されます。 。コマンドはAUTO_UPDATE_STATISTICS_ASYNC ON
です。詳細については、 [〜#〜] bol [〜#〜] を参照してください。
すでに提案されている代替方法は、ロード後にテーブルを手動で更新することです。これは、UPDATE STATISTICS
コマンドを使用して実行できます。これが [〜#〜] bol [〜#〜] リファレンスです。
SSISで一括挿入タスクを使用している場合は、バッチサイズを設定してみてください。これにより、コミットを間に挟んで小さなチャンクに分割されます。