Maison > base de données > tutoriel mysql > Pourquoi mon incrément d'identité SQL Server 2012 saute-t-il ?

Pourquoi mon incrément d'identité SQL Server 2012 saute-t-il ?

Patricia Arquette
Libérer: 2025-01-23 14:56:14
original
216 Les gens l'ont consulté

Why is my SQL Server 2012 Identity Increment Jumping?

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 :

  • Employer des séquences : Utilisez des séquences SQL Server avec une taille de cache plus petite (par exemple, 100) et utilisez NEXT VALUE FOR dans une contrainte par défaut de colonne.
  • Implémenter l'indicateur de trace 272 : L'activation de l'indicateur de trace 272 enregistre les événements d'allocation d'IDENTITÉ, permettant la détection et l'analyse de toute lacune.
  • Désactiver la mise en cache d'identité : Exécutez 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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal