Die folgenden Fragen basieren alle auf der InnoDB-Speicher-Engine. 1. Wie lautet die ID des neu eingefügten Datensatzes, nachdem der Datensatz mit der größten ID gelöscht wurde? Wenn beispielsweise in der aktuellen Tabelle drei Datensätze mit den IDs 1, 2 und 3 vorhanden sind und 3 gelöscht wird, wo beginnen dann die IDs der neu eingefügten Datensätze? Antwort: Beginnen Sie bei 4. Experiment Tabelle tb0 mit automatischer Inkrement-ID erstellen: Tabelle tb0 erstellen (ID int unsigned auto_increment Primärschlüssel); Fügen Sie 3 Datensätze ein: in tb0-Werte (null) einfügen; Löschen Sie den Datensatz mit der ID 3: Löschen aus tb0, wo ID=3 Zeigen Sie den aktuellen Auto-Increment-Wert an: zeige, erstelle Tabelle tb0; # ErgebnisCREATE TABLE `tb0` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, PRIMÄRSCHLÜSSEL (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 Die Auto-Increment-ID ist 4 und das Löschen des Datensatzes mit der größten ID hat keine Auswirkungen auf den Wert der Auto-Increment-ID. 2. Wo beginnt die automatische ID-Inkrementierung nach dem Neustart von MySQL? Wenn beispielsweise die aktuelle Tabelle drei Datensätze mit den IDs 1, 2 und 3 enthält, löschen Sie 3 und starten Sie MySQL neu. Wo beginnen die IDs der neu eingefügten Datensätze? Viele Leute denken, es beginnt bei 4, aber tatsächlich beginnt es bei 3. Weil der Auto-Inkrement-Wert von InnoDB im Speicher und nicht in der Datendatei aufgezeichnet wird. Nach dem Neustart wird die aktuelle maximale ID + 1 als Startwert verwendet. Experiment Tabelle tb1 mit automatischer Inkrement-ID erstellen: Erstellen Sie Tabelle tb1 (ID int unsigned auto_increment Primärschlüssel); 3 Datensätze hinzufügen: in tb1-Werte (null) einfügen; Löschen Sie den Datensatz mit der ID 3: Löschen aus tb1, wo ID=3 Aus der vorherigen Frage wissen wir, dass der Auto-Increment-ID-Wert derzeit 4 ist. Starten Sie MySQL neu. Zeigen Sie den aktuellen Auto-Increment-Wert an: zeige „Tabelle erstellen tb1“; # ErgebnisCREATE TABLE `tb1` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, PRIMÄRSCHLÜSSEL (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 3. Wie hoch ist der Auto-Inkrement-Wert, wenn Sie die ID das nächste Mal manuell eingeben? Wenn beispielsweise die aktuelle Auto-Increment-ID 4 ist und Sie beim Einfügen eines neuen Datensatzes die ID manuell als 10 angeben, lautet die ID beim nächsten Einfügen mit der Auto-Increment-Methode 11. ID-Autoinkrement = aktuelle maximale ID + 1 Beim Einfügen eines neuen Datensatzes wird der neue ID-Wert berechnet Experiment Tabelle tb2 mit automatischer ID-Inkrementierung erstellen: Tabelle tb2 erstellen (ID int unsigned auto_increment Primärschlüssel); Einen Datensatz hinzufügen: in TB2-Werte (null) einfügen; Geben Sie die ID manuell an: in tb2-Werte (4294967000) einfügen; Zeigen Sie den aktuellen Auto-Increment-Wert an: zeige „Tabelle erstellen tb2“; # ErgebnisCREATE TABLE `tb2` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, PRIMÄRSCHLÜSSEL (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4294967001 DEFAULT CHARSET=latin1 Sie können sehen, dass der Auto-Inkrement-Wert 4294967001 wird. 4. Was tun, wenn der selbst geschaffene Wert aufgebraucht ist? Der Maximalwert eines vorzeichenlosen int beträgt 4294967295. Wenn die automatische Inkrementierung diesen Wert erreicht, wird er nicht mehr geändert und beim Einfügen eines neuen Datensatzes wird ein Fehler gemeldet:
Wenn Tabellendatensätze häufig eingefügt und gelöscht werden, können IDs schnell aufgebraucht sein, auch wenn die Gesamtzahl der Datensätze in der Tabelle nicht groß ist. In diesem Fall kann bigint erforderlich sein. int-Wertebereich:
Bigint-Wertebereich:
Zusammenfassung Durch Experimente können wir einige Merkmale der selbstinkrementierenden ID in InnoDB herausfinden: Beim Einfügen eines neuen Datensatzes wird ein neuer Auto-Increment-Wert (maximale ID + 1) berechnet, unabhängig davon, ob die automatische ID verwendet oder eine ID manuell angegeben wird. Das Löschen des maximalen ID-Werts hat keine Auswirkungen auf den Auto-Increment-ID-Wert, wird aber nach einem Neustart von MySQL Auswirkungen haben. Der vorherige Auto-Increment-ID-Wert wird nicht verwendet, sondern die maximale ID+1. Dies liegt daran, dass der Auto-Increment-ID-Wert im Speicher gespeichert ist und nach einem Neustart neu berechnet werden muss. Die Auto-Increment-ID ändert sich nicht, nachdem sie aufgebraucht ist. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Vue+Swiper realisiert Timeline-Effekt
>>: Hinweise zu Linux-Systembefehlen
Inhaltsverzeichnis Benutzerdefinierte Vite-Plugin...
Inhaltsverzeichnis Erstellen Sie ein Vue + TS-Pro...
Inhaltsverzeichnis 1. Verwenden Sie in der v-for-...
Quelle des Problems: Wenn der Slave-Server der ge...
Ziehen Sie das Bild # Docker-Pull Codercom/Code-S...
Inhaltsverzeichnis Vorwort Was ist SSH? Wofür wir...
Inhaltsverzeichnis Vorwort Einrichten mit Vue CLI...
Verwenden Sie das Linux-Dienstprogramm certbot, u...
In diesem Artikelbeispiel wird der spezifische Co...
1. Hintergrund 1. Stellen Sie kurz den Shared Sto...
Wenn Sie das Idea-Entwicklungstool zum Debuggen v...
Unter den Anweisungen meines Vorgesetzten übernah...
Inhaltsverzeichnis Hintergrund Problemanalyse 1. ...
Wir alle wissen, dass Jmeter eine native Ergebnis...
Tutorial-Reihe MySQL-Reihe: Grundlegende Konzepte...