SQL Server 身份差距:了解回滚影响
事务回滚后,特别是在处理插入时,SQL Server 的标识(自动增量)序列可能会出现意外的间隙。 这不是一个错误;而是一个错误。这是一个优先考虑性能的设计选择。
考虑一个场景:.NET 事务使用身份主键插入 SQL Server 2005 表中。 如果错误触发 Rollback()
,则插入的行将被删除。 然而,身份值已经递增,留下了一个间隙。
这种非事务性行为可以防止性能瓶颈。 想象一下在表 A 中使用自动编号 ID 的两个并发事务:
如果事务 2 在事务 1 之后开始,则需要等待事务 1 完成才能确保表 A 的下一个自动编号。非事务方法避免了这种阻塞。
因此,如果严格顺序的身份值至关重要,建议使用替代方法。 系统的设计优先考虑并发性而不是严格的顺序编号。
以上是为什么事务回滚后会出现 SQL Server 身份差距?的详细内容。更多信息请关注PHP中文网其他相关文章!