SQL Server 2012:意外的身份增量行为
本文解决了 SQL Server 2012 中的一个问题,即整数列的标识增量意外跳转到 100 的倍数,而不是预期的 1 增量。这种不稳定的行为通常是由系统重新启动触发的。
根本原因:
该问题源于 SQL Server 2012 中的性能优化。它利用缓存来预分配 IDENTITY 值。 默认缓存大小为 1000。
后果:
服务器重新启动后,此缓存中任何未分配的值都将被丢弃。当插入新行时,这会导致标识序列出现间隙,因为数据库会从刷新的缓存中分配新值。
解决方案和缓解策略:
虽然不能保证完全无间隙的序列,但有几种策略可以最大限度地减少问题:
NEXT VALUE FOR
。ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF;
以禁用受影响数据库的缓存。重要考虑因素:
重要的是要理解,这些方法都不能完全防止身份序列中的间隙。 对于需要绝对无缝身份值的应用程序,建议使用行时间戳或自定义密钥生成机制等替代方法。
以上是为什么我的 SQL Server 2012 身份增量跳跃?的详细内容。更多信息请关注PHP中文网其他相关文章!