Heim > Datenbank > MySQL-Tutorial > Hauptteil

MySQL-Abfrage gesperrte Tabelle

王林
Freigeben: 2023-05-23 09:29:36
Original
7818 Leute haben es durchsucht

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.

  1. Bestehenden Sperrstatus von MySQL anzeigen

Geben Sie den folgenden Befehl im MySQL-Client ein:

show engine innodb status;
Nach dem Login kopieren

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.

  1. Informationen zu gesperrten Transaktionen anzeigen

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;
Nach dem Login kopieren

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.

  1. Fragen Sie die Informationen zu gesperrten Tabellen ab

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` ) );
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage