毎月約2,000のデータベースを復元し、データをテーブルに送り込んでからDBを削除するシングルスレッドプロセスがあります。挿入が完了するまでに約18時間かかります(SSISパッケージ経由)。このマルチスレッドを作成するにはどうすればよいですか。宛先テーブルでのロック/デッドロックの回避。パーティションの切り替えを考えましたが、宛先が宛先テーブルの1つのパーティションで終了する必要があるため、機能しません。
This 記事はあなたのためです。
マルチスレッドの質問に関する直接の引用。
図2に示すように、並行して実行できる実行可能ファイルの数を決定するパッケージプロパティはMaxConcurrentExecutablesです。デフォルトは-1です。これは、制御フローエンジンがサーバー上の論理プロセッサの数に2を加えた数を使用することを意味します。クアッドコアサーバーでデフォルト設定でパッケージを実行している場合、最大6つの実行可能ファイルを並行して実行できます。
This 記事では、ブロックとロックの回避について説明し、調査するための独自の質問を提供するのに十分な例とアイデアを提供する必要があります。どのタイプのロックとブロックが発生し、どのレベルの分離が必要かを評価することは、ブロックとロックを回避するのに役立ちます。
デッドロックは、入力した内容に基づいて発生する問題のようには聞こえません。これが良い 説明 それがどのように発生するかについてです。
明確にするために、次のような単一のSSISパッケージがあります。
マルチコアサーバーで作業していると仮定すると、次の方法でパフォーマンスが大幅に向上すると思います。
あなたはそれを正しくするためにパッケージの数で遊ぶ必要があるかもしれません。
もう1つのアイデア:この月次インポートからのデータがこの月次パーティションテーブルの真新しい月を構成する場合は、すべての新しいデータを真新しい(空の)テーブルに確実にインポートし、「スライディングウィンドウ」手法を使用してロールします影響が0のメインテーブルに。 SQL Serverでのスライディングウィンドウの管理 を参照してください。