반응형
MS SQL Server 2012부터 도입된 'Identity Cache’라는 기능 때문에 발생하는 현상입니다. 이 기능은 성능 향상을 위해 identity 값을 캐시에 저장하고, 데이터베이스 장애나 서버 재시작 시 일부 할당된 값이 손실될 수 있습니다. 이로 인해 identity 값에 간격이 생길 수 있습니다. 예를 들어, ID 컬럼의 값이 1, 2이고 ID 점프가 발생하면 다음 ID 컬럼의 값은 3이 아니라 1003이 될 수 있습니다.
이 현상은 버그가 아니라 의도된 동작입니다. Identity 값은 유일성만 보장하고, 연속성은 보장하지 않습니다. 만약 연속성이 필요하다면, 애플리케이션에서 자체적으로 키 값을 생성하거나, NOCACHE 옵션을 사용하는 시퀀스 생성기를 사용해야 합니다. 또한, 데이터베이스 범위 설정을 통해 Identity Cache 기능을 끌 수도 있습니다. 다음과 같은 명령어를 사용하면 됩니다.
ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF;
하지만 이 명령어는 캐시를 사용하지 않기 때문에 성능 저하를 가져올 수 있습니다. 따라서 Identity Cache 기능을 사용하는 것이 좋습니다.
이 기능은 성능 향상을 위해 도입된 것이므로, identity 값의 간격에 신경 쓰지 않고, 유일성만 보장하는 것이 중요합니다.
ALTER DATABASE SCOPED CONFIGURATION - SQL Server (Transact-SQL)
개별 데이터베이스 수준에서 여러 데이터베이스 구성 설정을 사용하도록 설정합니다.
learn.microsoft.com
반응형
'MSSQL' 카테고리의 다른 글
MSSQL : Alter Login을 사용한 패스워드 변경 (0) | 2023.11.27 |
---|---|
MSSQL : Agent Job waiting for a worker thread (1) | 2023.11.27 |
MSSQL : sp_MSforeachdb, sp_MSforeachtable 활용하기 (1) | 2023.11.23 |
MSSQL : Procedure xp_instance_regread (0) | 2023.11.22 |
MSSQL : 로그인 계정 마지막 패스워드 변경 일자 (1) | 2023.11.22 |