SQL Server-Identitätslücken: Verständnis und Abhilfe
Übersicht
Die IDENTITY-Eigenschaft von SQL Server vereinfacht die Primärschlüsselverwaltung durch automatisches Erhöhen ganzzahliger Werte. Es können jedoch unerwartete Lücken in dieser Reihenfolge auftreten, die den Benutzer verwirren.
Ursache: Identitätscache
In der Dokumentation von Microsoft wird erläutert, dass SQL Server (2012 und höher) einen Identitätscache verwendet, um die Leistung zu optimieren. Dieser Cache, der für int
IDENTITY-Spalten normalerweise auf 1.000 eingestellt ist, weist einen Block von Werten vorab zu.
Auswirkungen der Cache-Größe
Das Beispiel zeigt, dass die Identitätsinkremente aufgrund des 1.000-Werte-Cache um etwa 100 steigen. Wenn ein Wert wie 1.206.321 zugewiesen wird, werden die nächsten 1.000 reserviert, wodurch Lücken entstehen. Die konsistenten letzten drei Ziffern (z. B. 321) spiegeln das Ende des reservierten Blocks wider.
Strategien zur Lückenreduzierung
Identitätslücken sind zwar nicht grundsätzlich problematisch, können aber unerwünscht sein. Betrachten Sie diese Optionen:
ALTER DATABASE SCOPED CONFIGURATION
mit IDENTITY_CACHE = OFF
das Caching für eine bestimmte Datenbank deaktiviert.Wichtige Überlegungen
Keine Methode beseitigt Identitätslücken vollständig. Durch gleichzeitige Einfügungen oder Transaktionsfehler können sie dennoch erstellt werden. Für Anwendungen, die absolute Sequenzintegrität erfordern, sollten Sie GUIDs oder benutzerdefinierte Mechanismen zur Sequenzgenerierung in Betracht ziehen.
Das obige ist der detaillierte Inhalt vonWarum überspringt mein SQL Server-Identitätsinkrement plötzlich Werte?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!