SHOW構文を知ろう!
SHOW構文
SHOWはデータベース、テーブル、フィールド、サーバについての情報を与える。LIKEが使用された場合、文字列は通常のSQLワイルドカード (% と _) です。上記の使用例のように、"テーブル名 FROM データベース名"の代わりに、"データベース名.テーブル名"が使用できます。
SHOW 構文
SHOW DATABASES [LIKE 文字列]
or SHOW [OPEN] TABLES [FROM データベース名] [LIKE 文字列]
or SHOW [FULL] COLUMNS FROM テーブル名 [FROM データベース名] [LIKE 文字列]
or SHOW INDEX FROM テーブル名 [FROM データベース名]
or SHOW TABLE STATUS [FROM db_name] [LIKE 文字列]
or SHOW STATUS [LIKE 文字列]
or SHOW VARIABLES [LIKE 文字列]
or SHOW LOGS
or SHOW [FULL] PROCESSLIST
or SHOW GRANTS FOR ユーザ名
or SHOW CREATE TABLE
テーブル名
or SHOW MASTER STATUS
or SHOW MASTER LOGS
or SHOW SLAVE STATUS
SHOW構文の使用例
SHOW INDEX FROM mydb.mytable;
SHOW構文のキーワード
SHOW DATABASES
データベース名の一覧を表示します。
SHOW DATABASES; +----------+ | Database | +----------+ | mydb | | mysql | | test | +----------+
SHOW TABLES
カレントデータベースのテーブル名を一覧表示します。
SHOW TABLES; +----------------+ | Tables_in_MYDB | +----------------+ | customer | | goods | | purchase | | purchase_goods | +----------------+
SHOW FIELDS / SHOW COLUMNS
SHOW COLUMNSは指定されたテーブルのフィールドを表示します。FULLオプションを指定した場合、各フィールドへの権限も表示されます。
SHOW COLUMNS FROM customer; +-------+-----------------------+------+-----+ | Field | Type | Null | Key | Default | Extra | +-------+-----------------------+------+-----+ | id_c | mediumint(8) unsigned | | PRI | NULL | auto_increment | | sei | varchar(20) | YES | | NULL | | | mei | varchar(20) | YES | | NULL | | | age | tinyint(3) unsigned | YES | | NULL | | | sex | tinyint(1) unsigned | YES | | NULL | | +-------+-----------------------+------+-----+
SHOW KEYS / SHOW INDEX
SHOW INDEXはインデックス情報を表示します。
SHOW INDEX FROM customer; +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Comment |
+----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+---------+ | CUSTOMER | 0 | PRIMARY | 1 | id_c | A | 5 | NULL | NULL | | +----------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+---------+
以下の項目が返ります。
フィールド名 | 意味 |
---|---|
Table | テーブル名です。 |
Non_unique | インデックスが重複を含まないなら 0 |
Key_name | インデックス名です。 |
Seq_in_index | インデックスのフィールド番号。1 から始まります。 |
Column_name | フィールド名です。 |
Collation | インデックスでの ソート方法です。A (Ascending) か NULL (Not sorted) があいrます。 |
Cardinality | インデックスのユニークな値の数。 |
Sub_part |
もしこのフィールドがインデックスに一部分だけ使用している場合、そのインデックスに使用しているキャラクター数をしめす。 もしキー全体がインデックスされているなら NULL 。 |
Comment | Various remarks. For now, it tells whether index is FULLTEXT or not. |
SHOW VARIABLES
MySQLシステム変数のいくつかの値を示す。もし標準値が適さないなら、ほとんどの変数をmysqld起動時に命令文ラインのオプションとして与えることにより、変更できる。
SHOW VARIABLES [LIKE wild]
SHOW VARIABLESはMySQLシステム変数のいくつかの値を示します。 mysqlshow
variables 命令文でも同じ情報が得られます。もし標準値が適さないなら、ほとんどの変数をmysqld起動時に命令文ラインのオプションとして与えることにより、変更できます。
buffer size, buffer length, stack size は byte単位で与えます。これらの値の後ろにKやMを追加すると、キロバイト、メガバイトになります。例えば、16Mは16メガバイトを示します。大文字小文字の区別はなく、16Mと16mは同じ意味になります。
SHOW PROCESSLIST
SHOW PROCESSLIST はどのスレッドが走っているかを表示します。ただし、権限により、表示されるスレッドが限られます。
オプションを使用しない場合、各クエリの最初の100文字だけが表示されます。
mysqlshow processlist 命令文でも同じ情報が得られます。
SHOW TABLE STATUS
SHOW TABLE STATUS [FROM db_name] [LIKE wild]
SHOW TABLE STATUS (バージョン 3.23 の新機能) は SHOWSTATUSのようですが、それぞれのテーブルについてより多くの情報を提供します。 mysqlshow --status db_name 命令文を実行しても同じものが得られます。以下の項目が返ってきます:
項目 | 意味 |
---|---|
Name | テーブル名 |
Type | テーブルの種類 「7 MySQL テーブル型」節参照. |
Row_format | レコードの保存形式 (Fixed, Dynamic, or Compressed) |
Rows | レコード数 |
Avg_row_length | レコードの平均長 |
Data_length | データファイルの大きさ |
Max_data_length | データファイルの最大値 |
Index_length | インデックスファイルの大きさ |
Data_free | 割り当てられたが使用されていないバイト数 |
Auto_increment | 次の autoincrement 値 |
Create_time | テーブル作成時刻 |
Update_time | 一番最後に更新された時刻 |
Check_time | 一番最後にチェックされた時刻 |
Create_options | CREATE TABLE で使用された拡張オプション |
Comment | テーブル作成時につけられたコメント (あるいは、なぜこのテーブルにMySQL がアクセスできないかのいくつかの情報). |
SHOW STATUS
サーバからのステータス情報を表示します。
ステータス変数
Aborted_clients | クライアントが接続を閉じる前に死んでしまったために中断されたコネクション数。 |
Aborted_connects | クライアントが接続を閉じる前に死んでしまったために中断されたコネクション数。 |
Created_tmp_tables | MySQL サーバに接続を試みて失敗した数 |
Created_tmp_tables | ステートメントを実行している間に創り出された一時的なテーブルの数. |
Delayed_insert_threads | 使用中の delayed insert handler threads 数 |
Delayed_writes | INSERT DELAYED で書かれた行数 |
Delayed_errors | INSERT DELAYED で書かれた行でなんらかのエラーのあった行数 |
Flush_commands | FLUSH 命令文の実行回数 |
Handler_delete | テーブルから行を削除するためのリクエスト数 |
Handler_read_first | あるテーブルから特定行を最初に読み込むことを要求した数 |
Handler_read_key | キーを元にした行の読み込みを要求した数 |
Handler_read_next | キーの順番にそって、次の行を読み込むことを要求した数 |
Handler_read_rnd | ある固定された位置に基づいた行を読み込んだリクエスト数 |
Handler_update | テーブルの行を更新するための要求数 |
Handler_write | テーブルに行を挿入するためのリクエスト数 |
Key_blocks_used | キーキャッシュ中で使用されたブロック数 |
Key_read_requests | キャッシュからキーブロックを読み込ませたリクエスト数 |
Key_reads | ディスクから物理的の読み込んだキーブロックの数 |
Key_write_requests | キャッシュにキーブロックを書かせたリクエスト数 |
Key_writes | ディスクに物理的に書かれたキーブロック数 |
Max_used_connections | 同時に使用された接続の最大数 |
Not_flushed_key_blocks | 変更されたものの、まだディスクに書き出されていない、キーキャッシュ中のキーブロックの数 |
Not_flushed_delayed_rows | INSERT DELAY キューに書きだされることを待っている行の数 |
Open_tables | オープンされているテーブル数 |
Open_files | オープンされているファイル数 |
Open_streams | オープンされているストリーム数 |
Opened_tables | オープンされたテーブル数 |
Questions | サーバにたいする問い合わせ数 |
Running_threads | 現在開かれているコネクション数 |
Slow_queries | long_query_time以上にかかったクエリの数 |
Uptime | サーバが走っている秒数 |
コメント
- もし Opened_tables が大きければ、 table_cache
変数が小さすぎるのでしょう。 - もし key_reads が大きければ、 key_cache
が少なすぎるでしょう。キャッシュヒットレートは key_reads/key_read_requests
で計算できます。 - もし Handler_read_rnd が大きければ、 MySQL
にテーブルをスキャンさせるような多くのクエリや、 キーを使用しない JOIN がもてる。
SHOW LOGS
SHOW LOGS shows you status information about existing
log files. It currently only displays information about
Berkeley DB log files.
- File shows the full path to the log file
- Type shows the type of the log file (BDB for
Berkeley DB log files) - Status shows the status of the log file (FREE if
the file can be removed, or IN USE if the file is
needed by the transaction subsystem)
SHOW GRANTS
SHOW GRANTS FOR user はユーザの許可を複製するために発行する必要がある grant
命令文をリストします。
mysql> SHOW GRANTS FOR root@localhost; +---------------------------------------------------------------------+ | Grants for root@localhost | +---------------------------------------------------------------------+ | GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION | +---------------------------------------------------------------------+
SHOW CREATE TABLE
Shows a CREATE TABLE statement that will create the
given table:
mysql> show create table t\G *************************** 1. row *************************** Table: t Create Table: CREATE TABLE t ( id int(11) default NULL auto_increment, s char(60) default NULL, PRIMARY KEY (id) ) TYPE=MyISAM
SHOW CREATE TABLE will quote table and column names
according to SQL_QUOTE_SHOW_CREATE option.
DESCRIBE構文 Oracle互換
構文:
{DESCRIBE | DESC} テーブル名 {フィールド名| 文字列}
DESCRIBE はフィールドについての情報を与えます。