Heim >Datenbank >MySQL-Tutorial >Warum fügt Mysql InnoDB einen automatisch inkrementierenden Primärschlüssel hinzu, der nichts mit dem Geschäft zu tun hat?
Im MySQL-Tabellendesign wird normalerweise eine Spalte mit automatischer Inkrementierung, die nichts mit dem Geschäft zu tun hat, als Primärschlüssel verwendet.
Das liegt daran, dass MySQL standardmäßig den B-Tree-Index verwendet, den Sie einfach als „sortierte Schnellsuchstruktur“ verstehen können.
Das Folgende ist das Strukturdiagramm eines B-Baums, eines zweischichtigen B+-Baums, der Fan-Out jeder Seite beträgt 4 und der obere Datensatz speichert den Mindestwert von jede Seite; jede Seite durchläuft zweiseitig verknüpfte Listen; Wie oben gezeigt, führt die Aufteilung zu einer Datensatzverschiebung. Der optimierte Aufteilungsvorgang erfordert jedoch keine Datensatzverschiebung:
In der Implementierung von InnoDB wird für jeden eine zuletzt eingefügte Position beibehalten Indexseite, sowie die letzte Einfügung Ist eine auf-/absteigende Kennung. Anhand dieser Informationen kann InnoDB feststellen, ob die neu eingefügten Datensätze in der Seite noch die Inkrementierungs-/Verringerungsbeschränkungen erfüllen. Wenn die Einschränkungen erfüllt sind, wird die optimierte Aufteilungsstrategie übernommen. Daher wird empfohlen, eine Sequenz zu verwenden von sequentiell ansteigenden IDs als Primärschlüssel, es muss jedoch nicht das Autoinkrementierungsfeld der Datenbank sein, solange es die sequentielle Erhöhung erfüllt. Viele große Anwendungen verfügen über sequentiell steigende ID-Generatoren.