我们有一个带有Identity列的表,它是聚集索引。
当尝试插入大约4亿行的大量行来运行分析时,仅需要2-3小时才能插入。
插入直接从.net应用程序发生,其中8个内核并行写入表中。
我们尝试了几种方法跟踪(610),这帮助了大约5%,并且还禁用了锁定升级,这有很大帮助。
我们可以改善所花的时间吗?还有其他因素我可以检查和验证吗?
答案 0 :(得分:1)
每3小时400 M意味着每秒40000次插入,这对于在8核机器上运行的一个应用来说已经很好了。您是否尝试过从不同的计算机运行此应用程序的更多实例?这有帮助吗?如果是,那么只需缩放它,如果没有,那么我将检查db(外键,索引,主键,触发器)的所有约束,如果可能的话,删除/优化它们。此外,我猜你在你的应用程序和批量插入中使用某种连接池到数据库 - 尝试尝试不同大小的批处理和池。那么db机器上的资源消耗又如何(特别是I / O在这种情况下很重要)?如果机器无法处理该请求率 - 请考虑向上扩展或升级。