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」のすべてのテーブルについて、テーブル名、エンジン、作成時刻を作成時刻の新しいもの順に表示する場合は以下の通り。
> 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. テーブルステータスの確認
- 13.7.5.10 SHOW CREATE TABLE Statement | MySQL 5.7 Reference Manual
- Chapter 24 INFORMATION_SCHEMA Tables | MySQL 5.7 Reference Manual
2. DDLの取得
- 【MySQL】既に作成されているテーブルからCREATE文を取得する | あがノート
- MySQLで任意DBの全table create statementを出力する方法 | ゲンゾウ用ポストイット
- 4.5.4 mysqldump — A Database Backup Program | MySQL 5.7 Reference Manual
3. トランザクション
- 13.7.5.29 SHOW PROCESSLIST Statement | MySQL 5.7 Reference Manual
- 13.7.6.4 KILL Statemen | MySQL 5.7 Reference Manual
- 13.3.6 SET TRANSACTION Statement | https://dev.mysql.com/doc/refman/5.7/en/set-transaction.html
- 第47回 トランザクション分離レベルを変更する | gihyo.jp