LoginSignup
1
1

More than 3 years have passed since last update.

【MySQL】ステータス確認・変更のためのコマンド集

Last updated at Posted at 2020-07-14

MySQLのステータス確認のためのコマンド集です。
時々使う & すぐ使えるようにしておきたいものをまとめました。
※一部ステータスでないものもありますがご了承を。

環境

  • OS:Windows10
  • MySQL:5.7

コマンド一覧

1. テーブルステータスの確認

(1) SHOW TABLE STATUS

> SHOW TABLE STATUS FROM データベース名;

ソートや特定のカラムのみの抽出といったカスタマイズは不可。

(2) INFORMATION_SCHEMA.TABLES

> SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'データベース名';

通常のSQLと同様、特定のカラムだけの切り出しやソートも可能。
データベース「hoge」のすべてのテーブルについて、テーブル名、エンジン、作成時刻を作成時刻の新しいもの順に表示する場合は以下の通り。

sample
> SELECT TABLE_NAME, ENGINE, CREATE_TIME FROM INFORMATION_SCHEMA.TABLES WHERE table_schema = 'hoge' ORDER BY CREATE_TIME DESC;

2. DDLの取得

(1) SHOW CREATE TABLE

> SHOW CREATE TABLE テーブル名;

特定の1テーブルのDDLを取得する場合に使用。

(2) mysqldump

> mysqldump -u ユーザー名 -h ホスト名 -P ポート番号 データベース名 -p

指定したデータベース内の全てのDDL(VIEWも含む)を取得する際に使用。
上記実行後にパスワードを聞かれるので入力。

DDLをファイル出力する場合は以下のとおり。

> mysqldump -u ユーザー名 -h ホスト名 -P ポート番号 データベース名 -p > ファイルパス

3. トランザクション

(1) SHOW PROCESSLIST

> SHOW PROCESSLIST;

実行中のスレッドの確認に使用。

(2) KILL

> KILL 対象のID

トランザクションを強制終了させる。
SHOW PROCESSLIST; で表示されたId列の値を指定。

(3) tx_isolation

> SELECT @@GLOBAL.tx_isolation, @@tx_isolation;

トランザクション分離レベル確認用。
前者がグローバル、後者がセッション。
MySQLのデフォルトは両者とも、REPEATABLE READ。

それぞれ以下のコマンドで変更可能。

> SET GLOBAL tx_isolation='トランザクション分離レベル';
> SET SESSION tx_isolation='トランザクション分離レベル';

4. 文字コードの確認

(1) SHOW VARIABLES

> SHOW VARIABLES LIKE 'char%';

SHOW VARIABLES; でMySQLのシステム変数の値が表示できる。
LIKEで条件を絞る。

5. SQLのリソース使用状況の確認

(1) SHOW PROFILES

> SHOW PROFILES;

Query列で実行されたSQLを、Duration列で経過時間を確認できる。
事前準備として、profiling セッション変数を1もしくはONにしておく。

事前準備
> SET profiling = 'ON';

6. クエリログの確認

(1) 一般クエリログ

> SELECT * FROM mysql.general_log;

実行されたクエリの履歴全てを確認できる。
general_logテーブルにログを出力するための事前準備は以下の通り。

事前準備
> SET global general_log = 'ON';
> SET global log_output = 'TABLE';

(2) スロークエリログ

> SELECT * FROM mysql.slow_log;

実行に時間のかかったクエリを確認できる。
slow_query_logテーブルにログを出力するための事前準備は以下の通り(log_outputの設定は(1)と共通)。

> SET global slow_query_log = 'ON';
> SET global log_output = 'TABLE';

変更履歴

  • 2020/07/27:「2. DDLの取得」の「-d」を削除(不要のため)

参考

1. テーブルステータスの確認

2. DDLの取得

3. トランザクション

4. 文字コードの確認

5. SQLのリソース使用状況の確認

6. クエリログの確認

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1