Sql-Server-2016

批量導入將數據附加到數據文件

  • July 15, 2019

我們有一個在 SQL Server 2016 中執行的批量導入任務,它導入了超過 500 萬行。任務本身使用第三方服務在雲端進行配置。奇怪的是,正在導入的新數據被附加到數據文件(.mdf)中,並且沒有使用已經分配的空白空間。表被截斷並重新載入。所有表都定義了聚集索引。我們甚至使用了截斷所有相關表的預處理任務 -> 重新組織所有相關表 -> DBCC updateusage,但無濟於事。我們甚至將數據文件的大小增加了一倍,但我們仍然看到一些自動增長事件。儘管此類事件減少了 80%。導入後,我們剩下 70% 的數據文件是空的。我是否遺漏了 SQL Server 2016 中的某些內容或任何特定設置/更改,這就是我們遇到這種行為的原因?謝謝。

小批量的批量插入可能會導致未使用的保留空間顯著增加,因為根據Tiger Team 文章,每個批次都為快速插入分配了完整的擴展區。我從您的評論中看到批處理大小只有 200 行,這解釋了大量未使用空間的主要原因,儘管我希望在增長文件之前重用現有的未分配範圍(不要與未使用空間混淆) .

如果您無法控制最佳批量大小(例如第三方應用程序),您可以打開跟踪標誌 692以禁用快速插入並減少空間需求,但會犧牲性能。

引用自:https://dba.stackexchange.com/questions/241766