MySQL spielt als häufig verwendetes Datenbankverwaltungssystem eine wichtige Rolle in den heutigen Internetanwendungen. Für die Verwaltung und Wartung von MySQL ist jedoch auch die Verbesserung seiner Leistung und Stabilität ein sehr wichtiger Aspekt. Im Anwendungsprozess von MySQL kommt es auch häufig vor, dass gesperrte Tabellen abgefragt werden. Wie kann man in diesem Fall die gesperrte Tabelle abfragen? Im Folgenden stellen wir die Methode zur Abfrage gesperrter Tabellen durch MySQL im Detail vor.
Geben Sie den folgenden Befehl im MySQL-Client ein:
show engine innodb status;
Die Funktion dieses Befehls besteht darin, den aktuellen Sperrstatus von MySQL zu überprüfen. Die Statusinformationen werden an den Benutzer zurückgegeben Form der InnoDB-Speicher-Engine von. Mit diesem Befehl können wir viele Informationen beobachten, darunter die Version der InnoDB-Speicher-Engine, die Anzahl der aktuell erworbenen Sperren, die Transaktions-ID der gesperrten Transaktion usw.
In der MySQL-Speicher-Engine gibt es einen trx_rollback_to_savepoint-Parameter, mit dem alle aktuell gesperrten Transaktionsinformationen angezeigt werden können. Geben Sie im MySQL-Client den folgenden Befehl ein:
SELECT r.trx_id waiting_trx_id, r.trx_mysql_thread_id waiting_thread, r.trx_query waiting_query, b.trx_id blocking_trx_id, b.trx_mysql_thread_id blocking_thread, b.trx_query blocking_query FROM information_schema.innodb_lock_waits w INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;
Die Funktion dieses Befehls besteht darin, die spezifischen Informationen der gesperrten Tabelle und die entsprechende blockierende Transaktions-ID anzuzeigen. In den Ausgabeergebnissen stellt Waiting_trx_id die blockierte Transaktions-ID dar, Waiting_Thread stellt die Prozessnummer dar, die der Transaktion entspricht, Waiting_query stellt die von der Transaktion ausgeführte SQL-Anweisung dar, Blocking_trx_id stellt die Transaktions-ID dar, die die Transaktion blockiert, und Blocking_thread stellt die entsprechende Prozessnummer dar Transaktion. Blocking_query stellt die von der Transaktion ausgeführte SQL-Anweisung dar.
In der MySQL-Speicher-Engine gibt es eine innodb_locks-Tabelle, mit der Sie die Informationen aller derzeit gesperrten Tabellen anzeigen können. Geben Sie im MySQL-Client den folgenden Befehl ein:
SELECT concat('`', t1.`TABLE_SCHEMA`, '`.`', t1.`TABLE_NAME`, '`') AS `table`, t2.`ENGINE`, t2.`TRX_ID`, t2.`LOCK_MODE`, t2.`LOCK_TYPE`, t2.`LOCK_DATA` FROM `information_schema`.`TABLES` t1, `information_schema`.`INNODB_LOCKS` t2 WHERE ( ( t1.`TABLE_SCHEMA` = DATABASE() ) AND ( concat('`', t1.`TABLE_SCHEMA`, '`.`', t1.`TABLE_NAME`, '`') = t2.`LOCK_DATA` ) );
Der Zweck dieses Befehls besteht darin, die aktuell gesperrte Tabelle anzuzeigen, wobei „table“ für den Namen der aktuell gesperrten Tabelle und „ENGINE“ für die von der Tabelle verwendete Speicher-Engine steht . Gleichzeitig stellt „TRX_ID“ die Transaktions-ID dar, die die Tabelle sperrt, „LOCK_MODE“ stellt den Sperrmodus dar, „LOCK_TYPE“ stellt den Sperrtyp dar und „LOCK_DATA“ stellt die gesperrten Daten dar.
Zusammenfassung:
Es gibt viele Möglichkeiten, gesperrte Tabellen in MySQL abzufragen. Mit den oben genannten Methoden können Sie die aktuell gesperrten Tabellen und entsprechenden Transaktionsinformationen detailliert anzeigen, was Administratoren hilft, die Leistungsengpässe von MySQL zu verstehen Problem an der Wurzel. Wenn Sie jedoch die Informationen der gesperrten Tabelle abfragen, sollten Sie versuchen, das gewaltsame Beenden des Prozesses durch kill -9 und andere Vorgänge zu vermeiden, da dies sonst zu unvorhersehbaren Ergebnissen führen kann. Daher ist es im tatsächlichen Anwendungsprozess erforderlich, die Situation von MySQL-gesperrten Tabellen mit Vorsicht zu behandeln und entsprechende Lösungen und Strategien basierend auf der spezifischen Geschäfts- und Systemarchitektur zu übernehmen, um die Betriebseffizienz und Stabilität von MySQL zu verbessern.
Das obige ist der detaillierte Inhalt vonMySQL-Abfrage gesperrte Tabelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!