私は全体的なパフォーマンスプロジェクトの一環としてファクトテーブルの読み込みを高速化しようとしています。毎晩、約1億2,000万行の約100kのテーブルが追加されています。テーブルはかなり重く索引付けされています。高速ロード先でテーブルロックオプションを使用すると、どのような影響がありますか?
現在、私はSSIS高速ロードOLE DBの宛先を使用しており、100,000行のロードには約15分かかります。これは100k行を挿入するのに非常に高いようでした。そのため、パッケージを変更して結果をステージングテーブルにダンプし、そのステージングテーブルからファクトテーブルにT-SQLを挿入しました。インサートは1分以内に実行されます。
普通のT-SQLの挿入がSSISの高速読み込みよりも高速であることがわかったので、OLEDBの宛先でチェックされたボックスを調べ始めました。 Table Lockがチェックされていないことが判明しました。このオプションをチェックすると、SSISの負荷が1分未満になりました。 私の質問は次のとおりです:
- テーブルロックを残すことの意味は何ですか?
- T-SQL挿入ステートメントは既定でテーブルロックを発行するため、最初は高速でしたか?まあ
ああ、複数の行レベルのロックは遅さを説明します。クール、ありがとう。 – AS2012
@ AS2012:それだけでなく、より多くのロックがより多くのメモリを占有します。私がリンクしている記事は、このトピックに関して非常に関連性があり詳細です。 –