Maison >base de données >tutoriel mysql >Pourquoi mon incrément d'identité SQL Server 2012 saute-t-il ?
SQL Server 2012 : Comportement inattendu de l'incrément d'identité
Cet article résout un problème dans SQL Server 2012 où l'incrément d'identité pour les colonnes entières passe de manière inattendue à des multiples de 100, au lieu de l'incrément attendu de 1. Ce comportement erratique est souvent déclenché par un redémarrage du système.
Cause fondamentale :
Le problème provient d'une optimisation des performances dans SQL Server 2012. Il utilise un cache pour pré-allouer les valeurs d'IDENTITÉ. La taille du cache par défaut est de 1 000.
Conséquences :
Au redémarrage du serveur, toutes les valeurs non allouées dans ce cache sont supprimées. Cela entraîne des lacunes dans la séquence d'identité lorsque de nouvelles lignes sont insérées, car la base de données alloue de nouvelles valeurs à partir du cache actualisé.
Solutions et stratégies d'atténuation :
Bien qu'une séquence totalement sans interruption ne soit pas garantie, plusieurs stratégies peuvent minimiser le problème :
NEXT VALUE FOR
dans une contrainte par défaut de colonne.ALTER DATABASE SCOPED CONFIGURATION SET IDENTITY_CACHE = OFF;
pour désactiver la mise en cache de la base de données concernée.Considération importante :
Il est crucial de comprendre qu'aucune de ces méthodes n'empêche entièrement les lacunes dans la séquence d'identité. Pour les applications nécessitant des valeurs d'identité absolues et sans interruption, des approches alternatives telles que l'horodatage des lignes ou des mécanismes de génération de clés personnalisés sont recommandées.
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!