【问题标题】:Prevent growing transaction log with INSERT BULK with TABLOCK使用带有 TABLOCK 的 INSERT BULK 防止事务日志增长
【发布时间】:2019-02-20 07:55:01
【问题描述】:

我正在编写一个从 Spark-Scala 应用程序写入 SQL Server 的进程。它为每个数据分区生成多个 INSERT BULK(如预期的那样),批量大小为 100K 记录。

当我监控事务日志时,我可以看到它已满,我希望使用 INSERT BULK 不会。

您能否建议我如何实现每批提交。

【问题讨论】:

标签: sql-server apache-spark jdbc bulkinsert sqlbulkcopy


【解决方案1】:

当您的数据库恢复模式设置为完全时,批量插入将写入事务日志并且事务日志将继续增长。 你有两个选择:

  1. 在加载数据时将数据库恢复模式更改为批量记录,然后将其重置为完整

  2. 在每个批次加载后(或每隔几个批次)修改您的流程以备份事务日志

【讨论】:

  • 我按照@camba1 的建议使用了数据库恢复模式来批量记录,还使用了 EXEC sp_tableoption tableName, 'table lock on bulk load', 1
猜你喜欢
  • 2017-11-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-06
  • 2015-02-28
  • 2010-12-25
  • 2016-09-30
  • 1970-01-01
相关资源
最近更新 更多