SQL Server でBulk Load の性能改善方法

投稿者: | 12月 31, 2014

Options to Improve SQL Server Bulk Load Performanceで、Bulk Loadをする際に、どのような手段をとると一番性能が良くなるのかの調査結果が後悔されています。

シナリオは次の4つ

  1. BULK Load
  2. tablockをして、BULK Load
  3. インデックスを削除して、tablockをして、BULK Loadしてからインデックス再作成
  4. インデックスを削除して、tablockをして、BULK Loadしてからインデックス再作成してから、復旧モデルの変更
Test ScenarioCPU (ms)ReadsWritesDuration (ms)
1522917513834157704142978
230763151651385757296844
3207631955893962967510
4530061959163965162766

結論としては、4番目の「インデックスを削除して、tablockをして、BULK Loadしてからインデックス再作成してから、復旧モデルの変更 」が最速になります。

ALTER DATABASE testdb SET RECOVERY SIMPLE;
DROP INDEX testtable.idx_testtable_col2;
DROP INDEX testtable.idx_testtable_col3;
BULK INSERT testdb.dbo.testtable
FROM 'C:\testtable.dat'
WITH (FORMATFILE = 'C:\testtable_formatfile.fmt', TABLOCK);
CREATE INDEX idx_testtable_col2 on testtable (col2 asc);
CREATE INDEX idx_testtable_col3 on testtable (col3 asc);
ALTER DATABASE testdb SET RECOVERY FULL;

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください