有一个过程可以将数据从 3 个并行源批量插入到 sql 表中。向该表添加主键后,由于成为死锁的牺牲品,有 2 个批量插入查询在一段时间后被取消。在我添加主键之前,这从未发生过。我认为问题与通过添加主键创建的聚集索引有关。
现在我只是要删除主键,然后在表上创建一个非聚集索引。我想了解更多关于问题是否是我认为的问题的信息,以及是否有办法让我添加聚集索引而不会搞砸加载过程。
有一个过程可以将数据从 3 个并行源批量插入到 sql 表中。向该表添加主键后,由于成为死锁的牺牲品,有 2 个批量插入查询在一段时间后被取消。在我添加主键之前,这从未发生过。我认为问题与通过添加主键创建的聚集索引有关。
现在我只是要删除主键,然后在表上创建一个非聚集索引。我想了解更多关于问题是否是我认为的问题的信息,以及是否有办法让我添加聚集索引而不会搞砸加载过程。
不确定它是否比治疗更毒,但罗伯特提出在大量插入之前删除聚集索引:
http://www.simple-talk.com/sql/learn-sql-server/bulk-inserts-via-tsql-in-sql-server/
我们只是锁定表并最少记录事务。