SQL Server 身分差距:了解回溯影響
交易回滾後,特別是在處理插入時,SQL Server 的識別(自動增量)序列可能會出現意外的間隙。 這不是一個錯誤;而是一個錯誤。這是一個優先考慮性能的設計選擇。
考慮一個場景:.NET 交易使用身分主鍵插入 SQL Server 2005 表中。 如果錯誤觸發 Rollback()
,則插入的行將被刪除。 然而,身分值已經遞增,留下了一個間隙。
這種非事務性行為可以防止效能瓶頸。 想像在表 A 中使用自動編號 ID 的兩個並發事務:
如果事務 2 在事務 1 之後開始,則需要等待事務 1 完成才能確保表 A 的下一個自動編號。非事務方法避免了這種阻塞。
因此,如果嚴格順序的身份值至關重要,建議使用替代方法。 系統的設計優先考慮並發性而不是嚴格的順序編號。
以上是為什麼交易回滾後會出現 SQL Server 身分差距?的詳細內容。更多資訊請關注PHP中文網其他相關文章!