wie kann ich überprüfen, ob eine MySQL-Tabelle verwendet wird oder eine Anwendung in einem Shell-Skript auf die Tabelle zugreift?

wie kann ich überprüfen, ob eine MySQL-Tabelle verwendet wird oder eine Anwendung in einem Shell-Skript auf die Tabelle zugreift?

Ein Shell-Skript führt einen Dump für eine mysqlTabelle aus, aber bevor ich den Dump der Tabelle ausführe, möchte ich prüfen, ob diese Tabelle von einer anderen Anwendung verwendet wird. Wenn ja, möchte ich warten und in eine Schleife eintreten, bis die Anwendung das Laden der Tabelle beendet hat, und mit dem Vorgang fortfahren, mysqdumpnachdem sie abgeschlossen ist.

Antwort1

Sie müssen den Befehl verwenden,

SHOW OPEN TABLES

Experimentieren Sie in meinem System

Ich habe den Befehl ausgeführt und dies ist die erste Ausgabe, die ich erhalten habe.

"Database"  "Table"        "In_use"           "Name_locked"
db_name   "table1"           "0"                 "0"
db_name   "table2"           "0"                 "0"

Nun habe ich eine SELECTAbfrage für eine Tabelle ( table1) ausgeführt, die etwa 2 Millionen Datensätze enthielt. Ich habe eine weitere MySQL-Verbindung geöffnet und die erwähnte Abfrage ausgeführt. Die Ausgabe, die ich erhalten habe, ist:

"Database"  "Table"        "In_use"           "Name_locked"
db_name   "table1"           "1"                 "0"
db_name   "table2"           "0"                 "0"

Aus der obigen Ausgabe geht also hervor, dass die In_useSpalte angibt, dass die Tabelle derzeit verwendet wird.

verwandte Informationen