Failles d'identité SQL Server : compréhension et atténuation
Aperçu
La propriété IDENTITY de SQL Server simplifie la gestion des clés primaires en incrémentant automatiquement les valeurs entières. Cependant, des écarts inattendus dans cette séquence peuvent survenir, laissant les utilisateurs perplexes.
Cause première : cache d'identité
La documentation de Microsoft explique que SQL Server (2012 et versions ultérieures) utilise un cache d'identité pour optimiser les performances. Ce cache, généralement défini sur 1 000 pour les colonnes int
IDENTITY, pré-alloue un bloc de valeurs.
Impact de la taille du cache
L'exemple montre que les incréments d'identité augmentent d'environ 100 en raison du cache de 1 000 valeurs. Lorsqu'une valeur telle que 1 206 321 est attribuée, les 1 000 suivantes sont réservées, créant ainsi des écarts. Les trois derniers chiffres cohérents (par exemple, 321) reflètent la fin du bloc réservé.
Stratégies de réduction des écarts
Bien que les lacunes identitaires ne soient pas problématiques en soi, elles peuvent être indésirables. Considérez ces options :
ALTER DATABASE SCOPED CONFIGURATION
avec IDENTITY_CACHE = OFF
désactive la mise en cache pour une base de données spécifique.Considérations importantes
Aucune méthode n’élimine complètement les lacunes identitaires. Des insertions simultanées ou des échecs de transaction peuvent toujours en créer. Pour les applications nécessitant une intégrité de séquence absolue, envisagez des GUID ou des mécanismes de génération de séquence personnalisés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!