Mehrere automatische Inkremente für bestimmte Primärschlüsselwerte
Frage:
Wie kann ein Datenbank verschiedene Auto-Inkrementierungsschlüssel für bestimmte Primärschlüsselwerte bereitstellen, sodass jeder Primärschlüsselwert seine eigene unabhängige Sequenz hat? Wenn eine Tabelle beispielsweise eine „id“-Spalte mit automatischer Inkrementierung und eine „uid“-Spalte für die Benutzer-ID enthält, ist es dann möglich, für jeden „uid“-Wert eine andere automatische Inkrementierungssequenz zu haben?
Antwort:
MySQL mit MyISAM Engine
MySQL's Die MyISAM-Engine unterstützt diese Funktionalität. Wenn AUTO_INCREMENT für eine sekundäre Spalte in einem mehrspaltigen Index angegeben wird, wird der generierte Wert für die AUTO_INCREMENT-Spalte berechnet als MAX(auto_increment_column) 1 WHERE prefix=given-prefix.
Andere Lösungen
Exklusiver Tisch Sperren
Eine alternative Lösung besteht darin, eine exklusive Tabellensperre zu erwerben, bevor ein INSERT versucht wird. Dies verhindert, dass gleichzeitige INSERTs Racebedingungen erzeugen. Allerdings wird der Zugriff auf die Tabelle serialisiert, was den Durchsatz begrenzt.
Externe ID-Generierung
Ein anderer Ansatz besteht darin, die ID-Nummer außerhalb des Transaktionsbereichs zu generieren, indem Mechanismen wie Memcached verwendet werden oder ein zentraler Dienst. Dies stellt eindeutige ID-Werte sicher, ohne auf Datenbankfunktionen angewiesen zu sein.
Überlegungen
Die Implementierung dieser Funktionalität erfordert eine sorgfältige Prüfung potenzieller Probleme, wie zum Beispiel:
Haftungsausschluss:
Die InnoDB Die Engine in MySQL unterstützt diese Funktion nicht.
Das obige ist der detaillierte Inhalt vonWie kann ich separate Auto-Inkrementierungssequenzen basierend auf bestimmten Primärschlüsselwerten in einer Datenbank erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!