大型并行插入 SQL 服务器 table

LARGE Parallel insert into SQL server table

我们有 table 带有标识列,它是聚簇索引。

当尝试为 运行 分析插入大约 4 亿行时,插入仅需要 2-3 小时。

插入直接从 .net 应用程序发生,其中 8 个内核并行写入 table。

我们尝试了几种方法 trace(610),帮助了大约 5%,还禁用了锁升级,但帮助不大。

我们可以改进所花费的时间吗?还有其他我可以检查和验证的因素吗?

400 M 每 3 小时意味着每秒 40000 次插入,这对于 8 核机器上的一个应用程序 运行 来说已经不错了。您是否尝试过 运行 个来自不同机器的此应用程序的更多实例?有帮助吗?如果是,那么就缩放它,如果不是,那么我将检查 db 上的所有约束(外键、索引、主键、触发器),如果可能的话 remove/optimize 它们。另外我猜你正在使用某种连接池在你的应用程序和批插入中进行数据库 - 尝试使用不同大小的批处理和池进行试验。另外,数据库机器上的资源消耗情况如何(在这种情况下,尤其是 I/O 很重要)?如果机器无法处理该请求速率 - 考虑扩大规模或硬件升级。