Dot-Net

SqlBulkCopy 的推薦批量大小是多少?

  • April 22, 2009

推薦的批量大小是SqlBulkCopy多少?我正在尋找一個通用公式,我可以將其用作性能調整的起點。

我有一個導入實用程序,它與我的 SQL Server 實例位於同一台物理伺服器上。使用自定義IDataReader,它解析平面文件並使用SQLBulkCopy. 一個典型的文件有大約 6M 的合格行,平均 5 列十進制和短文本,每行大約 30 個字節。

鑑於這種情況,我發現 5,000 的批量大小是速度和記憶體消耗的最佳折衷方案。我從 500 開始,然後嘗試更大。我發現 5000 平均比 500 快 2.5 倍。插入 600 萬行大約需要 30 秒,批量大小為 5,000,批量大小為 500 大約需要 80 秒。

10,000 並沒有明顯更快。提高到 50,000 將速度提高了幾個百分點,但不值得增加伺服器上的負載。超過 50,000 則顯示速度沒有提高。

這不是一個公式,但它是供您使用的另一個數據點。

引用自:https://stackoverflow.com/questions/779690