SQL Server - 有什么更好的替代方法可以提高大量插入的冗长事务的性能?

Lal*_*man 3 sql sql-server transactions transactional sqltransaction

我有一个场景,屏幕上的用户操作导致在大约50个不同的表中实时创建新记录.用例的设计使得用户操作创建的新记录立即需要用户进行更改.所以没有离线或延迟创作的可能性.

话虽如此,显而易见的问题是 - 插入语句(以及一些额外的操作语句)都在事务中,这使得它成为一个非常冗长的事务.这将运行大约30秒,通常会导致超时或阻止其他查询.

原子性需要交易.有没有更好的方法可以拆分事务并保持一致性?或任何其他方法来改善目前的情况?

Rem*_*anu 5

插入查询正在等待当时并行运行的其他(主要是选择)查询

您应该考虑使用基于行版本的隔离级别,也就是说.SNAPSHOT,因为在基于行版本的隔离级别下,读取不阻止写入和写入不会阻止读取.我首先启用READ_COMMITTED_SNAPSHOT并测试:

ALTER DATABASE [...] SET READ_COMMITTED_SNAPSHOT ON;
Run Code Online (Sandbox Code Playgroud)

我建议阅读链接的文章,以解释行版本隐含的含义和权衡.