Vorne geschrieben: Manchmal müssen Sie möglicherweise die neueste Transaktions-ID anzeigen, um bestimmte geschäftslogische Beurteilungen vorzunehmen (z. B. anhand der Änderungen der Transaktions-ID und der Zeitdifferenz davor und danach die Antwortzeit jeder Transaktion zu berechnen usw.). Grundsätzlich gibt es zwei Möglichkeiten, die aktuelle Transaktions-ID anzuzeigen: 1. Führen Sie SHOW ENGINE INNODB STATUS aus, um transaktionsbezogene Informationen anzuzeigen ===================================== 150303 17:16:11 INNODB MONITOR-AUSGABE ===================================== Sekundendurchschnittliche Werte, berechnet aus den letzten 15 Sekunden ... ------------ TRANSAKTIONEN TRX-ID-Zähler 3359877657 – Aktuelle maximale Transaktions-ID Bereinigung für TRXs Nr. < 3359877468 abgeschlossen, Rückgängigmachen Nr. < 0, Status: Wird ausgeführt Länge der Verlaufsliste 324 LISTE DER TRANSAKTIONEN FÜR JEDE SITZUNG: ---TRANSACTION 0, nicht gestartet -- Das Ausführen von SHOW ENGINE INNODB STATUS in dieser Sitzung generiert keine Transaktion, daher ist die Transaktions-ID 0. MySQL-Thread-ID 4692367, OS-Thread-Handle 0x51103940, Abfrage-ID 677284426 xx.173ops.com 10.xxx yejr init ANZEIGEN /*!50000 ENGINE*/ INNODB STATUS ---TRANSACTION 3359877640, nicht gestartet -- Inaktive Transaktion, nicht gestartet. Verwendete MySQL-Tabellen 1, gesperrt 0 MySQL-Thread-ID 4678384, OS-Thread-Handle 0x41a57940, Abfrage-ID 677284427 xx.173ops.com 10.xxx yejr Systemsperre Wählen Sie polinfo0_.Fid als Fid39_0_, ... ---TRANSAKTION 3359877652, nicht gestartet MySQL-Thread-ID 4678383, OS-Thread-Handle 0x50866940, Abfrage-ID 677284420 xx.173ops.com 10.xxx yejr, wird bereinigt ---TRANSACTION 3359877635, AKTIV 1358 Sek., Thread in InnoDB 5000 deklariert -- Aktive lange Transaktion, läuft seit 1358 Sekunden und ist noch nicht abgeschlossen. Bitte beachten Sie, dass dies zu einer großen Anzahl von Sperrwartezeiten führen kann. Verwendete MySQL-Tabellen: 1, gesperrt 1 1 Sperrstruktur(en), Heap-Größe 376, 0 Zeilensperre(n), Undo-Log-Einträge 1 MySQL-Thread-ID 3120717, OS-Thread-Handle 0x529b4940, Abfrage-ID 677284351 xx.173ops.com 10.xxx yejr Abfrageende in t_live_room einfügen ... 2. Überprüfen Sie die drei Tabellen INFORMATION_SCHEMA.INNODB_TRX, INNODB_LOCKS und INNODB_LOCK_WAITS. Anhand dieser Informationen können Sie schnell feststellen, welche Transaktionen andere Transaktionen blockieren. Fragen Sie zunächst die Tabelle INNODB_TRX ab, um zu sehen, welche Transaktionen vorhanden sind mysql> SELECT * FROM INFORMATION_SCHEMA.INNODB_TRX\G *************************** 1. Reihe *************************** trx_id: 17778 – Aktuelle Transaktions-ID trx_state: LOCK WAIT – im Wartezustand für Sperren, d. h., es wird darauf gewartet, dass andere Sitzungen Sperrressourcen freigeben. trx_started: 04.03.2015 10:40:26 trx_requested_lock_id: 17778:82:3:6 – Die anzufordernde Sperre trx_wait_started: 2015-03-04 10:40:26 trx_weight: 2 -- Das bedeutet, dass die Sperre 2 Zeilen von Datensätzen betrifft trx_mysql_thread_id: 657 -- Die Thread-ID in der Prozessliste trx_query: Aktualisiere trx_fee, setze Gebühr=rand()*1000, wobei ID=4 trx_operation_state: Indexlesen wird gestartet trx_tables_in_use: 1 trx_tables_locked: 1 Anzahl der Lockstrukturen: 2 trx_lock_memory_bytes: 360 trx_rows_locked: 1 trx_rows_modified: 0 trx_concurrency_tickets: 0 trx_isolation_level: WIEDERHOLBARES LESEN trx_unique_checks: 1 trx_foreign_key_checks: 1 trx_last_foreign_key_error: NULL trx_adaptive_hash_latched: 0 trx_adaptive_hash_timeout: 10000 trx_ist_schreibgeschützt: 0 trx_autocommit_non_locking: 0 *************************** 2. Reihe *************************** trx_id: 17773 trx_state: LÄUFT trx_started: 04.03.2015 10:40:23 trx_requested_lock_id: NULL trx_wait_started: NULL trx_gewicht: 10 trx_mysql_thread_id: 656 trx_query: NULL trx_operation_state: NULL trx_tables_in_use: 0 trx_tables_locked: 0 Anzahl der Lockstrukturen: 2 trx_lock_memory_bytes: 360 trx_rows_locked: 9 trx_rows_modified: 8 trx_concurrency_tickets: 0 trx_isolation_level: WIEDERHOLBARES LESEN trx_unique_checks: 1 trx_foreign_key_checks: 1 trx_last_foreign_key_error: NULL trx_adaptive_hash_latched: 0 trx_adaptive_hash_timeout: 10000 trx_ist_schreibgeschützt: 0 trx_autocommit_non_locking: 0 Sehen Sie sich die Tabelle INNODB_LOCKS an, um zu sehen, welche Sperren vorhanden sind. mysql> wähle * aus information_schema.INNODB_LOCKS\G *************************** 1. Reihe *************************** lock_id: 17778:82:3:6 – Aktuelle Sperr-ID lock_trx_id: 17778 - Die dem Schloss entsprechende Transaktions-ID lock_mode: X – Sperrtyp, exklusive Sperre X lock_type: RECORD – Sperrbereich, Datensatzsperre: Datensatzsperre, andere Sperrbereiche: Lückensperre: Lückensperre oder Next-Key-Sperre (Datensatzsperre + Lückensperre) lock_table: `test`.`trx_fee` lock_index: PRIMARY – welcher Index ist die geladene Sperre auf lock_space: 82 Sperrseite: 3 lock_rec: 6 Sperrdaten: 4 *************************** 2. Reihe *************************** Sperr-ID: 17773:82:3:6 lock_trx_id: 17773 Sperrmodus: X Sperrtyp: AUFZEICHNUNG lock_table: `test`.`trx_fee` Sperrindex: PRIMÄR Sperrraum: 82 Sperrseite: 3 lock_rec: 6 Sperrdaten: 4 Sehen Sie sich abschließend die Tabelle INNODB_LOCK_WAITS an, um zu sehen, welche Sperren derzeit warten. mysql> wähle * aus information_schema.INNODB_LOCK_WAITS\G *************************** 1. Reihe *************************** requesting_trx_id: 17778 – Transaktions-ID, die die Sperre anfordert (Wartender) requested_lock_id: 17778:82:3:6 – angeforderte Sperr-ID blocking_trx_id: 17773 – Die Transaktions-ID, die die Sperre blockiert (aktueller Inhaber, wartet auf Freigabe) blocking_lock_id: 17773:82:3:6 – ID der gehaltenen Sperre Eine Beschreibung der Verwendung von Tabellen im Zusammenhang mit InnoDB in INFORMATION_SCHEMA finden Sie im Handbuch: 21.29 INFORMATION_SCHEMA-Tabellen für InnoDB 3. Verwenden Sie die Funktionen des Percona-Zweigs, um die aktuelle Transaktions-ID anzuzeigen. Diese Funktion wurde seit Version 5.6.11-60.3 eingeführt. Führen Sie die folgenden beiden Befehle aus, um sie anzuzeigen mysqladmin ext | grep Innodb_max_trx_id Oder mysql> globalen Status wie „Innodb_max_trx_id“ anzeigen; Zum Schluss möchte ich noch die Ursache des Problems erläutern. Ein Freund hat das Problem mit mir besprochen und gesagt, dass er im Java-Verbindungspool festgestellt hat, dass die Transaktions-IDs zweier Transaktionen gleich waren. Der SQL-Code für den Test lautete: beginnen; trx aktualisieren, un=rand() setzen, wobei id=round(rand()*10)+1; * aus information_schema.INNODB_TRX auswählen; committen; sleep(0,01) auswählen; beginnen; trx aktualisieren, un=rand() setzen, wobei id=round(rand()*10)+1; * aus information_schema.INNODB_TRX auswählen; committen; Diese Codezeichenfolge kann nicht umbrochen werden, und die Ruhezeit in der Mitte darf nicht zu lang sein. Das heißt, wenn die Simulation schnell genug ist, prüfen Sie, ob sich die IDs der beiden Transaktionen geändert haben. Es kann festgestellt werden, dass bei ausreichend kurzer Zeit die zweimal abgefragten Transaktions-IDs gleich sind und sich nicht geändert haben. Sie können es auch in Ihrer eigenen Umgebung ausprobieren. Oben finden Sie Einzelheiten zur Abfrage der aktuellen Transaktions-ID in MySQL. Weitere Informationen zur Abfrage der Transaktions-ID in MySQL finden Sie in den anderen verwandten Artikeln auf 123WORDPRESS.COM! Das könnte Sie auch interessieren:
|
>>: Analyse der HTTP-Dienstschritte auf einer virtuellen VMware-Maschine
1. Erstellen Sie eine Testtabelle Tabelle `mysql_...
Es gibt viele XHTML-Tags: div, ul, li, dl, dt, dd...
Lassen Sie mich zunächst über die allgemeine Idee...
Die Beziehung zwischen Javascript und DOM ist seh...
Für jedes DBMS sind die Indizes der wichtigste Op...
eins. Übersicht über die IE8-Kompatibilitätsansic...
Installation der MySQL-Dekomprimierungsversion un...
Um die Tabelle zu verschönern, können Sie für die...
Inhaltsverzeichnis Installieren Sie den Vim-Plugi...
Voraussetzungen: Docker ist bereits installiert 1...
Inhaltsverzeichnis Vorwort Stil Funktion Beschrei...
Serverstatusanalyse CPU-Details des Linux-Servers...
Windows Server 2019 ist das neueste Server-Betrie...
Aufgrund der anfänglichen Partitionierung des Sys...
<br />Wenn Sie Musik in eine Webseite einfüg...