シェル スクリプトで、mysql テーブルが使用されているか、またはアプリケーションがテーブルにアクセスしているかを確認するにはどうすればよいですか?

シェル スクリプトで、mysql テーブルが使用されているか、またはアプリケーションがテーブルにアクセスしているかを確認するにはどうすればよいですか?

シェル スクリプトはmysqlテーブルのダンプを実行していますが、テーブルをダンプする前に、このテーブルが他のアプリケーションによって使用されているかどうかを確認したいと思います。使用されている場合は、アプリケーションがテーブルのロードを停止するまで待機してループに入り、mysqdump終了したら続行します。

答え1

次のコマンドを使用する必要があります。

SHOW OPEN TABLES

私のシステムで実験する

コマンドを実行すると、最初に次の出力が得られました。

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

さて、約200万件のレコードがあるSELECTテーブル(table1)に対してクエリを実行しました。別のMySQL接続を開き、前述のクエリを実行しました。得られた出力は次のとおりです。

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

したがって、上記の出力から、In_use列はテーブルが現在使用中であることを示していることがわかります。

関連情報