SQL Server 是否支持对同一数据库表的并行批量插入?
对我的特定用例的一些说明:
- 该表有一个由两个不同索引键组成的聚集索引和两个非聚集索引,每个索引由一个索引键组成。
- 并行在这里意味着来自多个不同的连接。每个连接都是一个唯一的sqlalchemy.orm.session对象,每个Session使用该
Session.bulk_insert_mappings()
方法同时插入20k条数据。
我的具体问题:
- 我试图了解 SQL Server 端的幕后情况。是否有所有批量插入的队列,并且每个批量插入都按照进来的顺序一个一个地执行?还是所有的插入都是同时进行的,并行的?
- 我们还假设没有两个不同的连接会尝试插入相同的记录(基于主键),但是如果两个并行连接尝试插入会导致 PK 违规的记录怎么办?
- 如果我们要求 SQL Server 2008 与 2017,上述问题的答案是否不同?
- Microsoft 是否有关于此的任何类型的文档?