Heim  >  Artikel  >  System-Tutorial  >  Erhöht die Datenbank automatisch den Primärschlüssel?

Erhöht die Datenbank automatisch den Primärschlüssel?

王林
王林Original
2024-07-12 18:33:57745Durchsuche
1 Sollte jede Tabelle einen automatisch inkrementierenden Primärschlüssel haben?

Nicht unbedingt
Die automatische Inkrementierung von Primärschlüsseln kann das Einfügen von Zeilen beschleunigen, Vorteile bei der Tabellenplatznutzung bieten und die Fragmentierung weniger offensichtlich machen.

Aber bei einigen Inhalten, z. B. sehr häufigen und relativ konzentrierten Abfragen basierend auf der UID, steigt die Abfrageeffizienz, wenn Sie nicht die automatische Inkrementierung des Primärschlüssels verwenden, sondern UID + ID als zusammengesetzten Primärschlüssel verwenden. aber die Einfügung und Fragmentierung wird zunehmen. Wenn der Speichertyp der Datenbank jedoch SSD ist, besteht dieses Problem nicht.

In den meisten Fällen ist es also richtig, dass die Tabelle einen automatisch inkrementierenden Primärschlüssel hat.

2 Ist das automatisch inkrementierte Primärschlüsselgeschäft eindeutig?

Nicht unbedingt

Unter der Einzeltabellenstruktur, ja.

Bei mehreren Tabellen ist es nicht unbedingt erforderlich, bestimmte Strategien zu verwenden, z. B. unterschiedliche Suffixe, das gleiche Intervall usw.

Erhöht die Datenbank automatisch den Primärschlüssel?

3 Können sich selbst erhöhende Primärschlüssel das Geschäft beeinträchtigen?

Dies wird nicht empfohlen.

Zum Beispiel: Eine Tabelle kann einen automatisch inkrementierenden Primärschlüssel haben, der innerhalb der Tabelle eindeutig ist. Beim Abfragen und Aktualisieren basierend auf der ID kann der Vorgang vereinfacht werden. Wenn jedoch eine Beziehung zum Unternehmen besteht und Einzigartigkeit erforderlich ist, sollte das Unternehmen diese im Allgemeinen unabhängig pflegen, z. B. durch die Verwendung von Formaten oder Algorithmen, die Hash-Generierung usw.

4 Wie kann die Eindeutigkeit des vom Unternehmen verwalteten Primärschlüssels bei mehreren Tabellen beibehalten werden?

Behalten Sie das Schlüsselintervallsegment für die automatische Inkrementierung bei, der Server benötigt jedes Mal ein Segment und die optimistische Sperre wird aktualisiert. Dies erfordert zusätzliche Tabellen oder Strategien zur Pflege dieses Feldes.

Basierend auf Algorithmus A, festes Zeitpräfix, wie zum Beispiel: yyyyMMddHHmmss + Mod-Wert der Tabellennummer + Zufallszahl, wodurch die Möglichkeit von Konflikten durch Erhöhen der Anzahl der Ziffern verringert wird. Es gibt eine Eindeutigkeitsbeschränkung für das Tabellenfeld (aber manchmal ist diese Beschränkung nicht zuverlässig). Wenn beim Einfügen eine Ausnahme für doppelte Feldwerte ausgelöst wird, wird die Einfügung neu generiert.

Basierend auf Algorithmus B, festes Zeitpräfix, wie zum Beispiel: yyyyMMddHHmmss+feste Anzahl von Ziffern, automatischer Kollisionswert N+Zufallszahl. Es besteht keine Notwendigkeit, die Anzahl der Bits zu erhöhen, um die Möglichkeit von Konflikten zu verringern. Wenn eine Einfügung eine Ausnahme für doppelte Feldwerte auslöst, führt N++ erneut ein, bis keine Konflikte mehr auftreten. Von nun an wird N als Infix verwendet und N wird im Server zwischengespeichert. Dieses Infix wird nach dem Neustart weiterhin verwendet. Wenn wiederholt Ausnahmen auftreten, führen Sie den gleichen Vorgang einfach erneut mit N++ durch. Es besteht keine Notwendigkeit, den Mod-Wert von N absichtlich zu erwähnen.

Basierend auf der Infixverwaltung, also der Meldung von Infixen an den zentralen Server, kann man verstehen, dass die ID-Beziehung des Servers irgendwo zwischengespeichert wird und Infixe dynamisch zugewiesen werden.

Es gibt viele andere Methoden, die jedoch noch nicht verwendet wurden, daher werde ich nicht auf Details eingehen.
Algorithmus B ist einfach, hat weniger Kommunikation und eine begrenzte Anzahl von Kollisionen. Algorithmus A: Es gibt unendlich viele Kollisionen, obwohl der Prozentsatz sehr, sehr gering ist. Bei hoher Parallelität ist Algorithmus B jedoch während der Initialisierung heftiger als Algorithmus A.

Intervallsegment- und Infix-Management führen beide das Konzept des zentralen Knotens ein, das stark abhängig, aber relativ zuverlässig ist und in der Branche eine häufigere Implementierungsmethode darstellt.

Das obige ist der detaillierte Inhalt vonErhöht die Datenbank automatisch den Primärschlüssel?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn