Anzeigedefinitions-ID Wenn die in der Tabelle definierte Auto-Increment-ID die Obergrenze erreicht, bleibt der beim Beantragen der nächsten ID erhaltene Wert unverändert -- (2^32-1) = 4.294.967.295 -- Es wird empfohlen, BIGINT UNSIGNED zu verwenden. TABELLE ERSTELLEN t (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY) AUTO_INCREMENT=4294967295; EINFÜGEN IN t-WERTE (null); - AUTO_INCREMENT hat mysql> SHOW CREATE TABLE t nicht geändert; +-------+------------------------------------------------------+ | Tabelle | Tabelle erstellen | +-------+------------------------------------------------------+ | t | TABELLE ERSTELLEN `t` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, PRIMÄRSCHLÜSSEL (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=4294967295 DEFAULT CHARSET=utf8 | +-------+------------------------------------------------------+ mysql> INSERT INTO t VALUES (null); FEHLER 1062 (23000): Doppelter Eintrag „4294967295“ für Schlüssel „PRIMARY“ InnoDB Zeilen-ID 1. Wenn die erstellte InnoDB-Tabelle keinen Primärschlüssel angibt, erstellt InnoDB eine unsichtbare Row_ID mit einer Länge von 6 Bytes. 2. InnoDB verwaltet einen globalen dict_sys.row_id-Wert für alle InnoDB-Tabellen ohne Primärschlüssel.
3. In der Code-Implementierung ist row_id ein 8-Byte BIGINT UNSIGNED
4. Schreiben Sie in InnoDB diese Datenzeile in die Tabelle, nachdem Sie row_id = N beantragt haben
5. Es wird empfohlen, einen automatisch inkrementierenden Primärschlüssel zu erstellen
XID 1. Wenn Redolog und Binlog zusammen verwendet werden, gibt es ein gemeinsames Feld XID, das einer Transaktion entspricht 2. Logik generieren
3. global_query_id ist eine reine Speichervariable und wird nach dem Neustart gelöscht
4. global_query_id ist 8 Bytes groß, mit einer Obergrenze von 2^64-1
InnoDB trx_id 1. XID wird von der Serverschicht verwaltet 2. InnoDB verwendet trx_id intern, um InnoDB-Transaktionen mit der Serverschicht zu verknüpfen. 3. InnoDB verwaltet intern eine globale Variable max_trx_id
4. Die Kernidee der InnoDB-Datensichtbarkeit
5. Für die ausgeführte Transaktion können Sie die trx_id der Transaktion über information_schema.innodb_trx sehen Ablauf
-- Bei T2, mysql> SELECT trx_id,trx_mysql_thread_id FROM innodb_trx; +-----------------+---------------------+ | trx_id | trx_mysql_thread_id | +-----------------+---------------------+ | 281479812572992 | 30 | +-----------------+---------------------+ -- Bei T4, mysql> SELECT trx_id,trx_mysql_thread_id FROM innodb_trx; +-----------------+---------------------+ | trx_id | trx_mysql_thread_id | +-----------------+---------------------+ | 7417540 | 30 | +-----------------+---------------------+ mysql> PROZESSLISTE ANZEIGEN; +----+-----------------+--------------+--------------------+---------+--------+------------------------+------------------+ | ID | Benutzer | Host | db | Befehl | Zeit | Status | Info | +----+-----------------+--------------+--------------------+---------+--------+------------------------+------------------+ | 4 | event_scheduler | localhost | NULL | Daemon | 344051 | Warte auf leere Warteschlange | NULL | | 30 | root | localhost | test | Ruhezustand | 274 | | NULL | | 31 | root | localhost | information_schema | Abfrage | 0 | wird gestartet | PROZESSLISTE ANZEIGEN | +----+-----------------+--------------+--------------------+---------+--------+------------------------+------------------+ 1. trx_mysql_thread_id=30 ist die Thread-ID, also der Thread, in dem sich Sitzung A befindet 2. Bei T1 ist der Wert von trx_id tatsächlich 0 und der große Wert dient nur zur Anzeige (unterscheidet sich von normalen Lese- und Schreibtransaktionen). 3. Zum Zeitpunkt T2 ist trx_id eine große Zahl, da Sitzung A zum Zeitpunkt T1 keine Aktualisierungsvorgänge umfasste und eine schreibgeschützte Transaktion war.
4. Wenn Sitzung A zum Zeitpunkt T3 die INSERT-Anweisung ausführt, weist InnoDB tatsächlich trx_id zu Schreibgeschützte Transaktionen 1. Zum Zeitpunkt T2 oben wird die große trx_id vorübergehend vom System berechnet
2. Während der Ausführung derselben schreibgeschützten Transaktion ändert sich ihre Zeigeradresse nicht
3. Wenn mehrere schreibgeschützte Transaktionen parallel ausgeführt werden, muss die Zeigeradresse der TRX-Variablen jeder Transaktion unterschiedlich sein
4. Der Zweck der Addition von 2 ^ 48 besteht darin, sicherzustellen, dass der von schreibgeschützten Transaktionen angezeigte trx_id-Wert relativ groß ist, was zur Unterscheidung gewöhnlicher Lese-/Schreibtransaktionen dient. 5. Die Logik von trx_id ähnelt der von row_id und die Länge ist als 8 Bytes definiert
6. Vorteile, wenn trx_id nicht schreibgeschützten Transaktionen zugewiesen wird
7. max_trx_id wird dauerhaft gespeichert und nach einem Neustart nicht auf 0 zurückgesetzt. Erst wenn die Obergrenze von 2^48-1 erreicht ist, wird es auf 0 zurückgesetzt. Thread-ID 1. Die erste Spalte von SHOW PROCESSLIST ist thread_id 2. Das System speichert eine Umgebungsvariable thread_id_counter
3. thread_id_counter ist als 4 Bytes definiert und wird daher nach Erreichen von 2^32-1 auf 0 zurückgesetzt.
Tun { neue_ID= Thread-ID-Zähler++; } während (!thread_ids.insert_unique(neue_id).Sekunde); Verweise „MySQL Praxis 45 Vorlesungen“ 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:
|
<<: JavaScript zum Erzielen eines dynamischen Tabelleneffekts
>>: JavaScript implementiert die Maussteuerung eines frei beweglichen Fensters
1. Setzen Sie das Listensymbol list-style-type: A...
Inhaltsverzeichnis 1. Einleitung 2. Die erste Met...
Inhaltsverzeichnis 1. Boolesche Werte 2. Ausdruck...
Inhaltsverzeichnis 1. Datenbank USE auswählen 2. ...
Es gibt ein auf dem Mac entwickeltes Projekt, das...
System: Ubuntu 16.04LTS 1\Laden Sie mysql-5.7.18-...
Inhaltsverzeichnis JS liest Datei FileReader doku...
Inhaltsverzeichnis Fall Kontextwechsel-Overhead? ...
01. Befehlsübersicht Der Befehl tr kann Zeichen a...
Konfigurationsdatei, die beim Systemstart geladen...
Xhtml hat viele Tags, die nicht häufig verwendet w...
1. Formular <form id="" name="&...
<Vorlage> <div id="Wurzel">...
1. Was ist ein Servlet 1.1. Erklären Sie in offiz...
Finden Sie das Problem Kürzlich habe ich bei der ...