SHOW AUTHORS 構文
SHOW CHARACTER SET 構文
SHOW COLLATION 構文
SHOW COLUMNS 構文
SHOW CONTRIBUTORS 構文
SHOW CREATE DATABASE 構文
SHOW CREATE EVENT
SHOW CREATE PROCEDURE と SHOW CREATE FUNCTION 構文
SHOW CREATE TABLE 構文
SHOW CREATE VIEW 構文
SHOW DATABASES 構文
SHOW ENGINE 構文
SHOW ENGINES 構文
SHOW ERRORS 構文
SHOW EVENTS
SHOW GRANTS 構文
SHOW INDEX 構文
SHOW INNODB STATUS 構文
SHOW OPEN TABLES 構文
SHOW PLUGINS 構文
SHOW PRIVILEGES 構文
SHOW PROCEDURE CODE と SHOW FUNCTION CODE 構文
SHOW PROCEDURE STATUS と SHOW FUNCTION STATUS 構文
SHOW PROCESSLIST 構文
SHOW SCHEDULER STATUS 構文
SHOW STATUS 構文
SHOW TABLE STATUS 構文
SHOW TABLES 構文
SHOW TRIGGERS 構文
SHOW VARIABLES 構文
SHOW WARNINGS 構文
SHOW は、データベース、テーブル、カラム、またサーバのステータス情報などのような様々な情報を提供する多くの形を持っています。このセクションでは次のような物を紹介します。
SHOW AUTHORS SHOW CHARACTER SET [LIKE 'pattern'] SHOW COLLATION [LIKE 'pattern'] SHOW [FULL] COLUMNS FROMtbl_name[FROMdb_name] [LIKE 'pattern'] SHOW CONTRIBUTORS SHOW CREATE DATABASEdb_nameSHOW CREATE EVENTevent_nameSHOW CREATE FUNCTIONfuncnameSHOW CREATE PROCEDUREprocnameSHOW CREATE TABLEtbl_nameSHOW CREATE VIEWview_nameSHOW DATABASES [LIKE 'pattern'] SHOW ENGINEengine_name{LOGS | STATUS | MUTEX} SHOW [STORAGE] ENGINES SHOW ERRORS [LIMIT [offset,]row_count] SHOW [FULL] EVENTS SHOW FUNCTION CODEsp_nameSHOW FUNCTION STATUS [LIKE 'pattern'] SHOW GRANTS FORuserSHOW INDEX FROMtbl_name[FROMdb_name] SHOW INNODB STATUS SHOW PROCEDURE CODEsp_nameSHOW PROCEDURE STATUS [LIKE 'pattern'] SHOW PLUGINS SHOW PRIVILEGES SHOW [FULL] PROCESSLIST SHOW SCHEDULER STATUS SHOW [GLOBAL | SESSION] STATUS [LIKE 'pattern'] SHOW TABLE STATUS [FROMdb_name] [LIKE 'pattern'] SHOW [OPEN] TABLES [FROMdb_name] [LIKE 'pattern'] SHOW TRIGGERS SHOW [GLOBAL | SESSION] VARIABLES [LIKE 'pattern'] SHOW WARNINGS [LIMIT [offset,]row_count]
SHOW ステートメントも、複製マスタとスレーブ マスタに関する情報を提供する形を持っており、それらは 項12.6. 「複製ステートメント」 で紹介されています。
SHOW BINARY LOGS SHOW BINLOG EVENTS SHOW MASTER STATUS SHOW SLAVE HOSTS SHOW SLAVE STATUS
もし与えられた SHOW ステートメントの構文が LIKE 'pattern' 部を含んでいたら、'pattern' は SQL ‘%’ と ‘_’ ワイルドカード文字を含む事ができる文字列になります。そのパターンは、一致する値へのステートメント アウトプットを制限するのに有効です。
いくつかの SHOW ステートメントは、どの行を表示するかを指定する事に対して柔軟性を提供する WHERE 条項も許容します。詳しくは 項21.27. 「SHOW ステートメントへの拡張」 を参照してください。
SHOW AUTHORS 構文SHOW AUTHORS
SHOW AUTHORS ステートメントは、MySQL 上で働く人々の情報を表示します。それぞれの作者に対して、Name、Location、そして Comment 値を表示します。
このステートメントは、MySQL 5.1.3 で追加されました。
SHOW CHARACTER SET 構文SHOW CHARACTER SET [LIKE 'pattern']
SHOW CHARACTER SET ステートメントは全ての有効な文字セットを表示します。これは、どの文字セット名が一致するかを指示する任意の LIKE 条項を取ります。例:
mysql> SHOW CHARACTER SET LIKE 'latin%';
+---------+-----------------------------+-------------------+--------+
| Charset | Description | Default collation | Maxlen |
+---------+-----------------------------+-------------------+--------+
| latin1 | cp1252 West European | latin1_swedish_ci | 1 |
| latin2 | ISO 8859-2 Central European | latin2_general_ci | 1 |
| latin5 | ISO 8859-9 Turkish | latin5_turkish_ci | 1 |
| latin7 | ISO 8859-13 Baltic | latin7_general_ci | 1 |
+---------+-----------------------------+-------------------+--------+
Maxlen カラムは、一文字を格納するのに必要な最大バイト数を表示します。
SHOW COLLATION 構文SHOW COLLATION [LIKE 'pattern']
SHOW COLLATION からのアウトプットは全ての有効な文字セットを含んでいます。これは、どの pattern が、どの照合名と一致するかを指示する任意の LIKE 条項を取ります。例:
mysql> SHOW COLLATION LIKE 'latin1%';
+-------------------+---------+----+---------+----------+---------+
| Collation | Charset | Id | Default | Compiled | Sortlen |
+-------------------+---------+----+---------+----------+---------+
| latin1_german1_ci | latin1 | 5 | | | 0 |
| latin1_swedish_ci | latin1 | 8 | Yes | Yes | 0 |
| latin1_danish_ci | latin1 | 15 | | | 0 |
| latin1_german2_ci | latin1 | 31 | | Yes | 2 |
| latin1_bin | latin1 | 47 | | Yes | 0 |
| latin1_general_ci | latin1 | 48 | | | 0 |
| latin1_general_cs | latin1 | 49 | | | 0 |
| latin1_spanish_ci | latin1 | 94 | | | 0 |
+-------------------+---------+----+---------+----------+---------+
Default カラムは、照合がその文字セットにとってデフォルトであるかどうかを指示します。Compiled はその文字セットがサーバ内にコンパイルされるかどうかを指示します。Sortlen は、文字セットの中の文字列式をソートする為に必要とされるメモリの量と関係しています。
SHOW COLUMNS 構文SHOW [FULL] COLUMNS FROMtbl_name[FROMdb_name] [LIKE 'pattern']
SHOW COLUMNS は与えられたテーブル内のカラムに関する情報を表示します。これはビューに対しても機能します。
FULL キーワードは、各カラムに対するプレ カラム コメントと同じように、アウトプットが今持っている権限を含むように働きかけます。
db_name.tbl_name を tbl_name FROM db_name 構文の代替として利用する事ができます。言い換えると、これらの2つのステートメントは同等という事です。
mysql>SHOW COLUMNS FROM mytable FROM mydb;mysql>SHOW COLUMNS FROM mydb.mytable;
SHOW FIELDS は
SHOW COLUMNS の同義語です。テーブルのカラムを mysqlshow db_name tbl_name コマンドを利用してリストにする事もできます。
DESCRIBE ステートメントは SHOW COLUMNS に似た情報を提供します。詳しくは 項 「DESCRIBE 構文」 を参照してください。
SHOW CONTRIBUTORS 構文SHOW CONTRIBUTORS
SHOW CONTRIBUTORS ステートメントは、MySQL のソ-スに貢献した人や、MySQL AB サポートを引き起こす情報を表示します。それぞれの貢献者に対して、 Name、Location、そして Comment 値を表示します。
このステートメントは、MySQL 5.1.12 で追加されました。
SHOW CREATE DATABASE 構文SHOW CREATE {DATABASE | SCHEMA} db_name
与えられたデータベースを作成する CREATE DATABASE ステートメントを表示します。SHOW CREATE SCHEMA は SHOW CREATE DATABASE の同義語です。
mysql>SHOW CREATE DATABASE test\G*************************** 1. row *************************** Database: test Create Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */ mysql>SHOW CREATE SCHEMA test\G*************************** 1. row *************************** Database: test Create Database: CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET latin1 */
SHOW CREATE DATABASE は SQL_QUOTE_SHOW_CREATE オプションの値に従ってテーブルとカラム名を引用します。詳しくは 項 「SET 構文」 を参照してください。
SHOW CREATE EVENTSHOW CREATE EVENT event_name
このステートメントは、与えられたイベントを再作成する為に必要な CREATE EVENT ステートメントを表示します。例えば、(同じイベント e_daily が定義され、その後 項15. 「SHOW EVENTS」 に変更された物を利用):
mysql> SHOW CREATE EVENT test.e_daily\G
*************************** 1. row ***************************
Event: e_daily
Create Event: CREATE EVENT e_daily
ON SCHEDULE EVERY 1 DAY
STARTS CURRENT_TIMESTAMP + INTERVAL 6 HOUR
ENABLE
COMMENT 'Saves total number of sessions and
clears the table once per day.'
DO
BEGIN
INSERT INTO site_activity.totals (when, total)
SELECT CURRENT_TIMESTAMP, COUNT(*)
FROM site_activity.sessions;
DELETE FROM site_activity.sessions;
END
アウトプットは、それが作成されたステータスよりも、イベントの現在のステータス(ENABLE)を反映するという事を覚えておいて下さい。
このステートメントは、MySQL 5.1.6 でインプリメントされました。
SHOW CREATE PROCEDURE と SHOW CREATE FUNCTION 構文SHOW CREATE {PROCEDURE | FUNCTION} sp_name
これらのステートメントは MySQL 拡張子です。それらは、SHOW CREATE TABLE と似て、名づけられたルーチンを再作成する為に利用できる精密な文字列を返します。そのステートメントは、あなたがそのルーチンの持ち主になるか、mysql.proc テーブルに SELECT アクセスを持つ事を要求します。
mysql> SHOW CREATE FUNCTION test.hello\G
*************************** 1. row ***************************
Function: hello
sql_mode:
Create Function: CREATE FUNCTION `test`.`hello`(s CHAR(20)) »
RETURNS CHAR(50)
RETURN CONCAT('Hello, ',s,'!')
SHOW CREATE TABLE 構文SHOW CREATE TABLE tbl_name
与えられたテーブルを作成する CREATE 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)
) ENGINE=MyISAM
SHOW CREATE TABLE は SQL_QUOTE_SHOW_CREATE オプションの値に従ってテーブルとカラム名を引用します。詳しくは 項 「SET 構文」 を参照してください。
SHOW CREATE VIEW 構文SHOW CREATE VIEW view_name
このステートメントは、与えられたビューを作成する CREATE VIEW ステートメントを表示します。
mysql> SHOW CREATE VIEW v;
+------+----------------------------------------------------+
| View | Create View |
+------+----------------------------------------------------+
| v | CREATE VIEW `test`.`v` AS select 1 AS `a`,2 AS `b` |
+------+----------------------------------------------------+
SHOW CREATE VIEW の利用は、問題になっているビューに SHOW VIEW 権限と SELECT 権限を必要とします。
VIEWS テーブルを含む INFORMATION_SCHEMA から、ビュー オブジェクトに関する情報を得る事ができます。詳しくは 項21.15. 「INFORMATION_SCHEMA VIEWS テーブル」 を参照してください。
SHOW DATABASES 構文SHOW {DATABASES | SCHEMAS} [LIKE 'pattern']
SHOW DATABASES は MySQL サーバ ホスト上のデータベースをリストにします。SHOW SCHEMAS は SHOW DATABASES の同義語です。
グローバル SHOW DATABASES 権限を持っていない限り、自分が何かしらの権限を持つデータベースしか見る事ができません。mysqlshow コマンドを利用してこのリストを手に入れる事もできます。
もしサーバが --skip-show-database オプションを利用してスタートしたら、SHOW DATABASES 権限を持っていない限り、このステートメントを利用する事は絶対にできません。
SHOW SCHEMAS を利用する事もできます。
SHOW ENGINE 構文SHOW ENGINE engine_name {LOGS | STATUS | MUTEX}
SHOW ENGINE はストレージ エンジンに関するログやステータス情報を表示します。現在次のステートメントがサポートされています。
SHOW ENGINE INNODB STATUS SHOW ENGINE INNODB MUTEX SHOW ENGINE NDB STATUS
SHOW ENGINE INNODB STATUS と SHOW ENGINE INNODB MUTEX の古い(または廃止された)同義語は SHOW INNODB STATUS と SHOW MUTEX STATUS です。
SHOW ENGINE INNODB STATUS は InnoDB ストレージエンジンの状態に関する広範囲な情報を表示します。
InnoDB モニタは InnoDB 処理に関する追加情報を提供します。詳しくは 項1. 「SHOW ENGINE INNODB STATUS と InnoDB モニタ」 を参照してください。
SHOW ENGINE INNODB MUTEX は InnoDB ミューテックス統計を表示します。アウトプット フィールドは次に紹介されています。
Type
常に InnoDB です。
Name
それがインプリメントされたミューテックス名とソース ファイル。例:&pool->mutex:mem0pool.c
ミューテックス名はその目的を指示します。例えば、log_sys ミューテックスは InnoDB ログ サブシステムに利用され、ログ活動がどれほど集中しているのかを指示します。buf_pool ミューテックスは InnoDB バッファ プールを保護します。
Status
ミューテックス ステータスフィールドはいくつかの値を含んでいます。
count は、ミューテックスが何回要求されたかを指示します。
spin_waits はスピンロックが何回起動しなければいけなかったかを指示します。
spin_rounds はスピンロック ラウンドの数を指示します。(spin_rounds を spin_waits で割ると、平均ラウンド カウントがわかります。)
os_waits は OS の待機数を指示します。これは、スピンロックが機能しなかった時に起こります。(ミューテックスはスピンロックの最中にロックされておらず、OSに従い、待つ必要がありました。)
os_yields はスレッドがミューテックスをロックしようと試みて、そのタイムスライスを放棄し、OSに従う回数を指示します。(別のスレッドが起動する事を許可すると、ミューテックスをロックする為にそれを自由にするという仮定の下。)
os_wait_times は、もし timed_mutexes システム変数が1であれば(ON)、OS 待機にかかった時間を(分で)指示します。 もし timed_mutexes が0であれば(OFF)タイミングが無効になるので、os_wait_times は0です。timed_mutexes はデフォルトでオフになっています。
このステートメントからの情報は、システムの問題を診断するのに利用する事ができます。例えば、spin_waits と spin_rounds の大きい値は拡張性の問題を指示するでしょう。
もしサーバが、有効な NDBCLUSTER ストレージ エンジンを持っていたら、SHOW ENGINE NDB STATUS は接続されたデータノード、クラスタ接続、そしてクラスタ ビンログ エポックなどのクラスタ ステータス情報を表示します。
SHOW ENGINE NDB STATUS からのアウトプット例はここに表されています。— MySQL 5.0 内のステートメントによって表示されていた物からかなり変更されている事に注意してください。
mysql> SHOW ENGINE NDB STATUS\G
*************************** 1. row ***************************
Type: ndbcluster
Name: connection
Status: cluster_node_id=6, connected_host=179,
connected_port=1186, number_of_storage_nodes=4,
number_of_ready_storage_nodes=4, connect_count=0
*************************** 2. row ***************************
Type: ndbcluster
Name: binlog
Status: latest_epoch=0, latest_trans_epoch=2226134,
latest_received_binlog_epoch=0, latest_handled_binlog_epoch=0,
latest_applied_binlog_epoch=0
2 rows in set (0.00 sec)
In MySQL 5.0 では、SHOW ENGINE INNODB MUTEX は SHOW MUTEX STATUS として呼び出されます。後者のステートメントは似たような情報を表示しますが、それは少し異なるアウトプット フォーマットになります。
SHOW ENGINE BDB LOGS は以前は BDB ログ ファイルのステータス情報を表示しました。MySQL 5.1.12 にもあるように、BDB ストレージ エンジンはもうサポートされていませんし、このステートメントは警告を作成します。
SHOW ENGINES 構文SHOW [STORAGE] ENGINES
SHOW ENGINES はサーバのストレージ エンジンについてのステータス情報を表示します。これは特に、ストレージ エンジンがサポートされているのか、またはデフォルト
エンジンが何なのかを確認するのに便利です。SHOW TABLE TYPES は廃止予定の同義語です。
mysql> SHOW ENGINES\G
*************************** 1. row ***************************
Engine: MEMORY
Support: YES
Comment: Hash based, stored in memory, useful for temporary tables
Transactions: NO
XA: NO
Savepoints: NO
*************************** 2. row ***************************
Engine: MyISAM
Support: DEFAULT
Comment: Default engine as of MySQL 3.23 with great performance
Transactions: NO
XA: NO
Savepoints: NO
*************************** 3. row ***************************
Engine: InnoDB
Support: YES
Comment: Supports transactions, row-level locking, and foreign keys
Transactions: YES
XA: YES
Savepoints: YES
*************************** 4. row ***************************
Engine: EXAMPLE
Support: YES
Comment: Example storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 5. row ***************************
Engine: ARCHIVE
Support: YES
Comment: Archive storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 6. row ***************************
Engine: CSV
Support: YES
Comment: CSV storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 7. row ***************************
Engine: BLACKHOLE
Support: YES
Comment: /dev/null storage engine (anything you write »
to it disappears)
Transactions: NO
XA: NO
Savepoints: NO
*************************** 8. row ***************************
Engine: FEDERATED
Support: YES
Comment: Federated MySQL storage engine
Transactions: NO
XA: NO
Savepoints: NO
*************************** 9. row ***************************
Engine: MRG_MYISAM
Support: YES
Comment: Collection of identical MyISAM tables
Transactions: NO
XA: NO
Savepoints: NO
SHOW ENGINES からのアウトプットは、使用される MySQL バージョンや別の要因によって変わります。Support カラム内に表されている値は、ここに表されているように、別の機能に対するサーバのサポート レベルを指示します。
| 値 | 意味 |
YES |
機能はサポートされており、アクティブです。 |
NO |
機能はサポートされていません。 |
DISABLED |
機能はサポートされていますが、無効になっています。 |
NO の値は、サーバはその機能に対するサポート無しでコンパイルされた為、ランタイムに起動する事はできないという事を意味します。
DISABLED の値は、サーバがその機能を無効にするオプションを利用してスタートされたか、それを有効にする為に必要な全てのオプションが与えられなかった為に起こります。後者の場合、エラー
ログ ファイルは、なぜオプションが無効になったのかを指示する理由を含んでいるはずです。詳しくは 項 「エラー ログ」 を参照してください。
もし、サーバがストレージ エンジンの DISABLED をサポートする為にコンパイルされたのに、--skip-engine オプションを利用してスタートされたら、それも発見するかもしれません。例えば、--skip-innodb は InnoDB エンジンを無効にします。NDB Cluster ストレージ エンジンにとっては、DISABLED は、サーバは MySQL クラスタへのサポートを利用してコンパイルされたが、スタートするのに --ndb-cluster オプションは利用されなかった、という事を意味します。
全ての MySQL サーバは、MyISAM がデフォルトのストレージ エンジンなので、MyISAM テーブルをサポートします。
Transactions、XA、そして Savepoints カラムが MySQL 5.1.2 で追加されました。それらはそれぞれストレージ エンジンが、トランザクション、XA トランザクション、そしてセーブポイントをサポートするかどうかを指示します。
SHOW ERRORS 構文SHOW ERRORS [LIMIT [offset,]row_count] SHOW COUNT(*) ERRORS
このステートメントは、エラー、警告、そして注意を表示する代わりに、エラーのみを表示するという事以外、SHOW WARNINGS と似ています。
LIMIT 条項は SELECT ステートメントに対するのと同じ構文を持っています。詳しくは 項 「SELECT 構文」 を参照してください。
SHOW COUNT(*) ERRORS ステートメントはエラーの数を表示します。error_count 変数からもこの数字を検索する事ができます。
SHOW COUNT(*) ERRORS; SELECT @@error_count;
更なる情報については、項31. 「SHOW WARNINGS 構文」 を参照してください。
SHOW EVENTSSHOW EVENTS [FROMschema_name] [LIKEpattern]
SHOW EVENTS は、その一番シンプルな形で、現在のスキーマ内の全てのイベントをリストにします。
mysql>SELECT CURRENT_USER(), SCHEMA();+----------------+----------+ | CURRENT_USER() | SCHEMA() | +----------------+----------+ | jon@ghidora | myschema | +----------------+----------+ 1 row in set (0.00 sec) mysql>SHOW EVENTS\G*************************** 1. row *************************** Db: myschema Name: e_daily Definer: jon@ghidora Type: RECURRING Execute at: NULL Interval value: 10 Interval field: INTERVAL_SECOND Starts: 2006-02-09 10:41:23 Ends: 0000-00-00 00:00:00 Status: ENABLED 1 row in set (0.01 sec)
SHOW EVENTS のアウトプット内のカラム — INFORMATION_SCHEMA.EVENTS テーブル内のカラムに似ているけれど同一ではない — がここに表されています。
Db:イベントが定義されるスキーマ(データベース)
Name:イベント名。
Definer:イベントを作成したユーザアカウント。(username@hostname)
Type:ONE TIME (一時的な)か RECURRING の2つのうちの1つの値。
Execute At:一時的なイベントが実行される時の日付と時刻。DATETIME 値として表示されます。
自動更新イベントにとっては、このカラムの値はいつでも NULL です。
Interval Value:自動更新イベントの為の、イベント実行の間のインターバルの回数。
一時的イベントにとっては、このカラムの値はいつでも NULL です。
Interval Field:自動更新イベントが、次の実行までの間のインターバルに利用される時間単位。
一時的イベントにとっては、このカラムの値はいつでも NULL です。
Starts:自動更新イベント開始の日付と時間。これは DATETIME 値として表示され、これはそのイベントに開始の日付と時間が定義されない時は空白です。(MySQL 5.1.8 以前は、このような場合 '0000-00-00 00:00:00' がデフォルトでした。)
一時的イベントにとっては、このカラムの値はいつでも NULL です。
Ends:自動更新イベント終了の日付と時間。これは、そのイベント終了の日付と時刻が定義されていなければ、DATETIME 値として表示され、デフォルトは '0000-00-00 00:00:00' になります。
一時的イベントにとっては、このカラムの値はいつでも NULL です。
Status:イベント ステータスENABLED か DISABLED のうちの1つです。
アクション ステートメントは SHOW EVENTS のアウトプット内に表示されていない事に注意してください。
注意:Starts と Ends ('0000-00-00 00:00:00' 以外)を表示する値は、現在はユニバーサル タイムを利用しています。しかし、ユニバーサル タイムのこのコンテキスト内での利用は変更される予定ですので、アプリケーション内でこれに依存するべきでは有りません。 (バグ #16420)項21.20. 「INFORMATION_SCHEMA EVENTS テーブル」 もご参照ください。
異なるスキーマのイベントを見るには、FROM 条項を利用できます。例えば、もし test スキーマが前出の例の中で選択されていたら、次のステートメントを利用して myschema 上で定義されたイベントを見る事ができました。
SHOW EVENTS FROM myschema;
LIKE にパターンを1つプラスした物を利用して、イベント名上でこのステートメントに返されたリストをフィルタする事ができます。
このステートメントは、MySQL 5.1.6 で追加されました。
項21.20. 「INFORMATION_SCHEMA EVENTS テーブル」 もご参照下さい。
注意:MySQL 5.1.11 とそれ以前のバージョンでは、SHOW EVENTS は現在のユーザが定義者であるイベントだけを表示し、SHOW FULL EVENTS ステートメントは、与えられたスキーマ上で全てのユーザによって定義されたイベントを見る為に利用されていました。SHOW FULL EVENTS は MySQL 5.1.12 で削除されました。
SHOW GRANTS 構文SHOW GRANTS [FOR user]
このステートメントは、MySQL ユーザ アカウントに供与された権限を複製する為に発行されなければいけない GRANT ステートメントをリストにします。アカウントは、例えば 'jeffrey'@'localhost' のように GRANT ステートメントと同じフォーマットを利用して名づけられます。もしアカウント名のユーザ名部分だけを指定すると、ホスト名の '%' 部分が利用されます。アカウント名の指定についての追加情報に関しては、項3. 「GRANT 構文」 を参照してください。
mysql> SHOW GRANTS FOR 'root'@'localhost';
+---------------------------------------------------------------------+
| Grants for root@localhost |
+---------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION |
+---------------------------------------------------------------------+
サーバに接続する為に利用している、アカウントに供与された権限をリストにする為に、次のステートメントを利用する事ができます。
SHOW GRANTS; SHOW GRANTS FOR CURRENT_USER; SHOW GRANTS FOR CURRENT_USER();
MySQL 5.1.12 にも有るように、もし SHOW GRANTS FOR CURRENT_USER (またはそれと同等な構文)が DEFINER コンテキスト内で利用されたら、SQL SECURITY DEFINER を利用して定義されたストアド プロシージャ内などで)、表示された供与物は、呼び出し元の物ではなく、定義者の物です。
SHOW GRANTS は名づけられたアカウントに明示的に供与された権限のみを表示します。そのアカウントに有効なその他の権限もあるかもしれませんが、それらは表示されません。例えば、もし匿名アカウントが存在したら、名づけられたアカウントはその権限を利用する事ができるかもしれませんが、SHOW GRANTS はそれらを表示しません。
SHOW INDEX 構文SHOW INDEX FROMtbl_name[FROMdb_name]
SHOW INDEX はテーブル インデックス情報を返します。そのフォーマットは、ODBC 内の SQLStatistics コールのそれと似ています。
SHOW INDEX は次のフィールドを返します。
Table
テーブル名。
Non_unique
もしインデックスが複製を含む事ができなければ0、もしできるなら1。
Key_name
インデックス名
Seq_in_index
1から始まる、インデックス内のカラム シーケンス番号
Column_name
カラム名
カラムがインデックス内でどのようにソートされるか。MySQL では、これは値 ‘A’ (昇順)か NULL (格納されない)を持つ事ができます。
インデックス内の固有値数の見積もりこれは、ANALYZE TABLE か myisamchk -a を起動させる事で更新されます。Cardinality は、整数として格納された統計に基づいてカウントされるので、小さいテーブルに対してもその値は必ずしも精密ではありません。濃度が高ければ、その分
MySQL が接合を行う時にインデックスを利用する可能性は高くなります。
Sub_part
もしカラムが部分的にだけインデックスされていた時のインデックスされる文字数、もしカラム全体がインデックスされていた時は NULL です。
Packed
キーがどのようにパックされるのかを指示します。もしそうでなければ NULL です。
Null
もしカラムが NULL を含んでいたら、YES を含みます。もしそうでなければ、カラムは NO を含みます。
Index_type
使用されるインデックス方法(BTREE、FULLTEXT、HASH、RTREE)
Comment
様々な意見
db_name.tbl_name を tbl_name FROM db_name 構文の代替として利用する事ができます。これらの2つのステートメントは同等です。
SHOW INDEX FROM mytable FROM mydb; SHOW INDEX FROM mydb.mytable;
SHOW KEYS は
SHOW INDEX の同義語です。テーブルのインデックスを mysqlshow db_name tbl_name コマンドを利用してリストにする事もできます。
SHOW INNODB STATUS 構文SHOW INNODB STATUS
MySQL 5.1 では、これは廃止予定の SHOW ENGINE INNODB STATUS の同義語です。詳しくは 項12. 「SHOW ENGINE 構文」 を参照してください。
SHOW OPEN TABLES 構文SHOW OPEN TABLES [FROMdb_name] [LIKE 'pattern']
SHOW OPEN TABLES は、現在テーブル キャッシュ内で開かれている非 TEMPORARY テーブルをリストします。詳しくは 項 「MySQL でのテーブルのオープンとクローズの方法」 を参照してください。
SHOW OPEN TABLES は次のフィールドを返します。
Database
テーブルを含むデータベース
Table
テーブル名。
In_use
クエリによってテーブルが現在使用されている回数。もしカウントがゼロなら、そのテーブルは開いていますが現在は利用されていません。
Name_locked
テーブル名がロックされているかどうか名前ロックは、ドロップやテーブルのリネームのような操作に利用されます。
SHOW PLUGINS 構文SHOW PLUGINS
SHOW PLUGINS は既知のプラグインの情報を表示します。
mysql> SHOW PLUGINS;
+------------+--------+----------------+---------+
| Name | Status | Type | Library |
+------------+--------+----------------+---------+
| MEMORY | ACTIVE | STORAGE ENGINE | NULL |
| MyISAM | ACTIVE | STORAGE ENGINE | NULL |
| InnoDB | ACTIVE | STORAGE ENGINE | NULL |
| ARCHIVE | ACTIVE | STORAGE ENGINE | NULL |
| CSV | ACTIVE | STORAGE ENGINE | NULL |
| BLACKHOLE | ACTIVE | STORAGE ENGINE | NULL |
| FEDERATED | ACTIVE | STORAGE ENGINE | NULL |
| MRG_MYISAM | ACTIVE | STORAGE ENGINE | NULL |
+------------+--------+----------------+---------+
SHOW PLUGIN は MySQL 5.1.5 で追加され、5.1.9 で SHOW PLUGINS という名前に変わりました。(5.1.9 では SHOW PLUGIN は廃止予定で、警告を発します。)
SHOW PRIVILEGES 構文SHOW PRIVILEGES
SHOW PRIVILEGES は MySQL サーバがサポートするシステム権限のリストを表示します。権限リストの詳細内容は、使用サーバのバージョンによって決まります。
mysql> SHOW PRIVILEGES\G
*************************** 1. row ***************************
Privilege: Alter
Context: Tables
Comment: To alter the table
*************************** 2. row ***************************
Privilege: Alter routine
Context: Functions,Procedures
Comment: To alter or drop stored functions/procedures
*************************** 3. row ***************************
Privilege: Create
Context: Databases,Tables,Indexes
Comment: To create new databases and tables
*************************** 4. row ***************************
Privilege: Create routine
Context: Functions,Procedures
Comment: To use CREATE FUNCTION/PROCEDURE
*************************** 5. row ***************************
Privilege: Create temporary tables
Context: Databases
Comment: To use CREATE TEMPORARY TABLE
...
SHOW PROCEDURE CODE と SHOW FUNCTION CODE 構文SHOW {PROCEDURE | FUNCTION} CODE sp_name
これらのステートメントは、デバッグ サポートを利用して構築されたサーバに対してだけ有効な MySQL 拡張子です。それらは名づけられたルーチンの内部インプリメンテーション表現を表示します。そのステートメントは、あなたがそのルーチンの持ち主になるか、mysql.proc テーブルに SELECT アクセスを持つ事を要求します。
もし名づけられたルーチンが有効なら、各ステートメントは結果セットを作成します。結果セット内の各行は、ルーチン内の1つの 「instruction」 に対応します。最初のカラムは、0で始まる序数 Pos です。2つ目のカラムは、SQL ステートメントや(通常元のソースから変更された物)ストアド ルーチン ヘッダに対してだけ意味を持つコマンドを含む
Instruction です。
mysql>DELIMITER //mysql>CREATE PROCEDURE p1 ()->BEGIN->DECLARE fanta INT DEFAULT 55;->DROP TABLE t2;->LOOP->INSERT INTO t3 VALUES (fanta);->END LOOP;->END//Query OK, 0 rows affected (0.00 sec) mysql>SHOW PROCEDURE CODE p1//+-----+----------------------------------------+ | Pos | Instruction | +-----+----------------------------------------+ | 0 | set fanta@0 55 | | 1 | stmt 9 "DROP TABLE t2" | | 2 | stmt 5 "INSERT INTO t3 VALUES (fanta)" | | 3 | jump 2 | +-----+----------------------------------------+ 4 rows in set (0.00 sec)
この例の中では、非実行可能 BEGIN と END ステートメントは無くなっており、DECLARE variable_name ステートメントに対しては、実行可能な部分だけが現れています。(デフォルトが割り当てられている部分)ソースから取り出された各ステートメントに対しては、後にタイプが続くコード文字
stmt があります。(9は DROP、5は INSERT を意味する、という感じの物です。)最終行は、GOTO instruction #2 という意味を持つ jump 2 指示を含んでいます。
これらのステートメントは、MySQL 5.1.3 で追加されました。
SHOW PROCEDURE STATUS と SHOW FUNCTION STATUS 構文SHOW {PROCEDURE | FUNCTION} STATUS [LIKE 'pattern']
これらのステートメントは MySQL 拡張子です。これらは、データベース、名前タイプ、作成者、そして作成日と変更日などのような、ルーチンの性質を返します。もしパターンが指定されなければ、どのステートメントを利用しているかによって、全てのストアド プロシージャや全てのストアド ファンクションの情報がリストされます。
mysql> SHOW FUNCTION STATUS LIKE 'hello'\G
*************************** 1. row ***************************
Db: test
Name: hello
Type: FUNCTION
Definer: testuser@localhost
Modified: 2004-08-03 15:29:37
Created: 2004-08-03 15:29:37
Security_type: DEFINER
Comment:
INFORMATION_SCHEMA 内の ROUTINES テーブルからストアド ルーチンに関する情報を得る事もできます。詳しくは 項21.14. 「INFORMATION_SCHEMA ROUTINES テーブル」 を参照してください。
SHOW PROCESSLIST 構文SHOW [FULL] PROCESSLIST
SHOW PROCESSLIST はどのスレッドが起動しているかを表示します。mysqladmin processlist コマンドを利用してこの情報を手に入れる事もできます。
もし PROCESS 権限を持っていれば、全てのスレッドを見る事ができます。そうでなければ、自分自身のスレッドのみ見る事ができます。(使用中のMySQL アカウントと関連しているスレッド)詳しくは
項3. 「KILL 構文」 を参照してください。もし FULL キーワードを利用しなければ、各ステートメントの最初の100文字だけが Info フィールドに表示されます。
MySQL Enterprise MySQL ネットワーク モニタリングとアドバイス サービス の読者は、プロセスが多すぎる時には、即時通知と専門家のアドバイスを受け取ります。追加情報については http://www-jp.mysql.com/products/enterprise/advisors.html を参照してください。
このステートメントは、「too many connections」 エラー メッセージを受け取り、何が起こっているのを確認したい時に大変役に立ちます。MySQL は、管理者がいつでもシステムに接続して確認できる事を保証する為、SUPER 権限を持つアカウントに利用される事ができる接続を1つ余分に確保します。(この権限を全てのユーザには与えていないと仮定しています。)
SHOW PROCESSLIST のアウトプットは、次のようになるでしょう。
mysql> SHOW FULL PROCESSLIST\G
*************************** 1. row ***************************
Id: 1
User: system user
Host:
db: NULL
Command: Connect
Time: 1030455
State: Waiting for master to send event
Info: NULL
*************************** 2. row ***************************
Id: 2
User: system user
Host:
db: NULL
Command: Connect
Time: 1004
State: Has read all relay log; waiting for the slave »
I/O thread to update it
Info: NULL
*************************** 3. row ***************************
Id: 3112
User: replikator
Host: artemis:2204
db: NULL
Command: Binlog Dump
Time: 2144
State: Has sent all binlog to slave; waiting for binlog to be updated
Info: NULL
*************************** 4. row ***************************
Id: 3113
User: replikator
Host: iconnect2:45781
db: NULL
Command: Binlog Dump
Time: 2086
State: Has sent all binlog to slave; waiting for binlog to be updated
Info: NULL
*************************** 5. row ***************************
Id: 3123
User: stefan
Host: localhost
db: apollon
Command: Query
Time: 0
State: NULL
Info: SHOW FULL PROCESSLIST
5 rows in set (0.00 sec)
アウトプット カラムは次の意味を持っています。
Id
接続識別子。
User
ステートメントを発行した MySQL ユーザ。もしこれが system user であれば、タスクを内部的に取り扱う為に、サーバによって生み出された非クライアント スレッドを参照します。これは、複製スレーブか遅れた行のハンドラに利用される
I/O または SQL スレッドになり得ます。 event_scheduler はスケジュールされたイベントをモニタするスレッドを参照する事ができます。system user か event_scheduler には、Host カラム内で指定されたホストはありません。
Host
ステートメントを発行するクライアントのホスト名(ホストが無い system user 以外)。SHOW PROCESSLIST は、どのクライアントが何をしているかの究明を簡単にする為に、TCP/IP 接続のホスト名を host_name:client_port フォーマットで報告します。
db
もし選択されれば、これがデフォルト データベースです。そうでなければ NULL です。
Command
クライアント/サーバ プロトコルの COM_xxx コマンドに対応するカラムの値。詳しくは 項 「ステータス変数」 を参照してください。
Command 値は、次のうちのどれかでしょう。Binlog Dump, Change user、Close stmt、Connect、Connect Out、Create DB、Daemon、Debug、Delayed insert、Drop DB、Error、Execute、Fetch、Field List、Init DB、Kill、Long Data、Ping、Prepare、Processlist、Query、Quit、Refresh、Register Slave、Reset stmt、Set option、Shutdown、Sleep、Statistics、Table Dump、Time
Time
ステートメントやコマンドの開始から現在までの、秒表示での時間。
State
次のうちのどれかになり得る、アクション、イベント、またはステート:After create、Analyzing、Changing master、Checking master version、Checking table、Connecting to master、Copying to group table、Copying to tmp table、Creating delayed handler、Creating index、Creating sort index、Creating table from master dump、Creating tmp table、Execution of init_command、FULLTEXT initialization、Finished reading one binlog; switching to next binlog、Flushing tables、Killed、Killing slave、Locked、Making temp file 、Opening master dump table、Opening table、Opening tables、Processing request、Purging old relay logs、Queueing master event to the relay log、Reading event from the relay log、Reading from net、Reading master dump table data、Rebuilding the index on master dump table、Reconnecting after a failed binlog dump request、Reconnecting after a failed master event read、Registering slave on master、Removing duplicates、Reopen tables、Repair by sorting、Repair done、Repair with keycache、Requesting binlog dump、Rolling back、Saving state、Searching rows for update、Sending binlog event to slave、Sending data、Sorting for group、Sorting for order、Sorting index、Sorting result、System lock、Table lock、Thread initialized、Updating、User lock、Waiting for INSERT、Waiting for master to send event、Waiting for master update、Waiting for slave mutex on exit、Waiting for table、Waiting for tables、Waiting for the next event in relay log、Waiting on cond、Waiting to finalize termination、Waiting to reconnect after a failed binlog dump request、Waiting to reconnect after a failed master event read、Writing to net、allocating local table、cleaning up、closing tables、converting HEAP to MyISAM、copy to tmp table、creating table、deleting from main table、deleting from reference tables、discard_or_import_tablespace、end、freeing items、got handler lock、got old table、info、init、insert、logging slow query、login、preparing、purging old relay logs、query end、removing tmp table、rename、rename result table、reschedule、setup、starting slave、statistics、storing row into queue、unauthenticated user、update、updating、updating main table、updating reference tables、upgrading lock、waiting for delay_list、waiting for handler insert、waiting for handler lock、waiting for handler open、Waiting for event from ndbcluster
最も一般的な State 値はこのセクションの残りの部分で説明されています。それ以外のほとんどの State 値は、サーバ内のバグを見つける為にだけ役に立ちます。複製サーバのプロセス ステートについての追加情報については、項 「レプリケーション実装の詳細」 も参照してください。
SHOW PROCESSLIST ステートメントに対しては State の値は NULL です。
Info
スレッドが実行中のステートメント、または、もしそれがステートメントを何も実行していなければ NULL になります。
SHOW PROCESSLIST からのアウトプット内で主に見られるいくつかの State 値
Checking table
スレッドがテーブル チェック操作を行っています。
Closing tables
スレッドが変更されたテーブル データをディスクにフラッシュしている、そして使用されたテーブルを閉じているという意味です。この操作スピードは早いでしょう。もし速くなければ、ディスクがフルではないという事と、ディスクがそれほど頻繁に使用されていないという事を証明しなければいけません。
Connect Out
複製スレーブはそのマスタに接続しています。
Copying to group table
もしステートメントが異なる ORDER BY と GROUP BY 基準を持っていたら、行はグループによってソートされ、テンポラリ テーブルにコピーされます。
Copying to tmp table
サーバはメモリ内のテンポラリ テーブルにコピーしています。
Copying to tmp table on disk
サーバはディスク上のテンポラリ テーブルにコピーしています。テンポラリ結果セットは tmp_table_size よりも大きく、スレッドはメモリを保存する為にテンポラリ テーブルをイン メモリからディスク ベース フォーマットに変更しています。
Creating tmp table
スレッドはクエリに結果の一部を保持する為にテンポラリ テーブルを作成しています。
deleting from main table
サーバは複合テーブル削除の最初の部分を実行しています。最初のテーブルからの削除だけを行い、別の(参照)テーブルからの削除に利用されるフィールドとオフセットを保存しています。
deleting from reference tables
サーバは複合テーブル削除の2番目の部分を行っており、別のテーブルから一致したテーブルを削除しています。
Flushing tables
スレッドは FLUSH TABLES を実行しており、全てのスレッドがそのテーブルを閉じるのを待っています。
FULLTEXT initialization
サーバは自然言語フル テキスト サーチを行う準備をしています。
停止する
誰かがスレッドに KILL ステートメントを送り、そして次にキル フラッグを見つけた時異常終了するはずです。そのフラッグは MySQL 内の主要な各ループ内で確認されますが、場合によってはスレッドが停止するまでに少し時間がかかる場合があります。もしスレッドが別のスレッドにロックされていると、停止作業は別のスレッドがそのロックを解除するとすぐに効果を発揮します。
Locked
クエリは別のクエリによってロックされています。
Sending data
スレッドは SELECT ステートメントの為に行を作成し、また、クライアントにデータを送っています。
Sorting for group
スレッドは GROUP BY を満足させる為にソートを行っています。
Sorting for order
スレッドは ORDER BY を満足させる為にソートを行っています。
Opening tables
スレッドはテーブルをオープンしようと試みています。この操作は、何かにオープンを邪魔されない限り、スピードが速いはずです。例えば、ALTER TABLE か LOCK TABLE ステートメントは、そのステートメントが終了するまでテーブルのオープンを邪魔する事ができます。
Reading from net
サーバはネットワークからパケットを読み込んでいます。
Removing duplicates
クエリは、MySQL が早い段階で独特な操作を最適化する事ができなくなるような方法で SELECT DISTINCT を利用していました。この為、MySQL は結果をクライアントに送る前に全ての複製行を削除する為の特別な段階を必要とします。
Reopen table
スレッドはテーブルの為にロックを得ましたが、その後基礎となるテーブル構造が変更された事に気が付きました。それはロックを解除し、テーブルを閉じ、そして再度オープンしようとしています。
Repair by sorting
修復コードはインデックスを作成する為にソートを利用しています。
Repair with keycache
修復コードはキー キャッシュを通してキー作成を1つ1つ利用しています。これは Repair by sorting と比べるとかなり遅い作業です。
Searching rows for update
スレッドは、全ての一致する行を更新する前にそれらを見つける為の第一段階を行っています。もし UPDATE が、関連する行を見つける為に利用されたインデックスを変更していれば、これが行われなければいけません。
Sleeping
スレッドは新しいステートメントをスレッドにに送る為のクライアントを待っています。
statistics
サーバはクエリ実行計画を開発する統計を計算しています。
スレッドは、テーブルの為の外部システム ロックを得るのを待っています。もし同じテーブルにアクセスする複数の mysqld サーバを利用していなければ、--skip-external-locking オプションを利用してシステム ロックを無効にする事ができます。
unauthenticated user
クライアント接続への関連はしたが、そのクライアント ユーザの認証はまだ行われていないスレッドの状態。
Upgrading lock
INSERT DELAYED ハンドラは行を挿入する為に、テーブルにロックを得ようとしています。
Updating
スレッドは更新する行を探していて、それらを更新しています。
updating main table
サーバは複合テーブル更新の最初の部分を実行しています。最初のテーブルの更新だけを行い、別の(参照)テーブルの更新に利用されるフィールドとオフセットを保存しています。
updating reference tables
サーバは複合テーブル更新の2番目の部分を行っており、別のテーブルから一致したテーブルを更新しています。
User Lock
スレッドは GET_LOCK() 上で待っています。
Waiting for event from ndbcluster
サーバは MySQL クラスタ内の SQL ノードとして機能しており、クラスタ管理ノードに接続されています。
Waiting for tables
スレッドは、テーブルの基礎構造が変更され、その新しい構造を得る為にテーブルを再度オープンしなければいけないという通知を受け取りました。しかし、テーブルを再度オープンするには、他の全てのスレッドが問題になっているテーブルを閉じるまで待たなければいけません。
もし別のスレッドが FLUSH TABLES か、次にある問題のテーブル上のステートメントの中のひとつを利用すると、この通知が出されます。FLUSH TABLES tbl_name、ALTER TABLE、RENAME TABLE、REPAIR TABLE、ANALYZE TABLE、または OPTIMIZE TABLE
waiting for handler insert
INSERT DELAYED ハンドラは全ての未解決の挿入を処理し、新しい物を待っています。
Writing to net
サーバはネットワークにパケットを書き込んでいます。
ほとんどのステートが大変速い操作に対応します。もしスレッドがこれらのステートのどれかに何秒間も留まれば、調査が必要な問題があるかもしれません。
SHOW SCHEDULER STATUS 構文SHOW SCHEDULER STATUS
このステートメントは、イベント スケジューラの状態に関連したでバグ情報を提供します。これは、MySQL 5.1.11 の -debug 構造内でだけサポートされ、5.1.12 とそれ以降のリリースでは削除されました。
アウトプット例がここに表示されています。
+--------------------------------+---------------------+ | Name | Value | +--------------------------------+---------------------+ | scheduler state | INITIALIZED | | thread_id | NULL | | scheduler last locked at | init_scheduler::313 | | scheduler last unlocked at | init_scheduler::318 | | scheduler waiting on condition | 0 | | scheduler workers count | 0 | | scheduler executed events | 0 | | scheduler data locked | 0 | | queue element count | 1 | | queue data locked | 0 | | queue data attempting lock | 0 | | queue last locked at | create_event::218 | | queue last unlocked at | create_event::222 | | queue last attempted lock at | ::0 | | queue waiting on condition | 0 | | next activation at | 0-00-00 00:00:00 | +--------------------------------+---------------------+
MySQL 5.1.12 以降の物では、この情報は mysqladmin debug を利用して得る事ができます。(詳しくは 項7.9. 「mysqladmin — MySQL サーバの管理を行うクライアント」 をご確認ください。)イベント スケジューラ ステート情報を得る事に関する情報については、項19.4. 「Event Scheduler Status」 を参照してください。
SHOW STATUS 構文SHOW [GLOBAL | SESSION] STATUS [LIKE 'pattern']
SHOW STATUS はサーバ ステータス情報を提供します。この情報は、mysqladmin extended-status コマンドを利用して得る事もできます。
部分的なアウトプットがここに表示されています。名前と値のリストは、お使いのサーバとは異なる場合があります。各変数の意味は 項 「ステータス変数」 で説明しています。
mysql> SHOW STATUS;
+--------------------------+------------+
| Variable_name | Value |
+--------------------------+------------+
| Aborted_clients | 0 |
| Aborted_connects | 0 |
| Bytes_received | 155372598 |
| Bytes_sent | 1176560426 |
| Connections | 30023 |
| Created_tmp_disk_tables | 0 |
| Created_tmp_tables | 8340 |
| Created_tmp_files | 60 |
...
| Open_tables | 1 |
| Open_files | 2 |
| Open_streams | 0 |
| Opened_tables | 44600 |
| Questions | 2026873 |
...
| Table_locks_immediate | 1920382 |
| Table_locks_waited | 0 |
| Threads_cached | 0 |
| Threads_created | 30022 |
| Threads_connected | 1 |
| Threads_running | 1 |
| Uptime | 80380 |
+--------------------------+------------+
LIKE 条項を利用すると、パターンと一致する名前を持つ変数の行のみを表示します。
mysql> SHOW STATUS LIKE 'Key%';
+--------------------+----------+
| Variable_name | Value |
+--------------------+----------+
| Key_blocks_used | 14955 |
| Key_read_requests | 96854827 |
| Key_reads | 162040 |
| Key_write_requests | 7589728 |
| Key_writes | 3813196 |
+--------------------+----------+
GLOBAL 修飾子を利用すると、SHOW STATUS は MySQL への全ての接続のステータス値を表示します。SESSION を利用すると、現在の接続のステータス値を表示します。 もし修飾子が無ければ、デフォルトは SESSION です。LOCAL は SESSION の同義語です。
いくつかのステータス変数は、グローバル値しか持っていません。それらに対しては、GLOBAL と SESSION の両方に同じ値を得ます。
SHOW TABLE STATUS 構文SHOW TABLE STATUS [FROMdb_name] [LIKE 'pattern']
SHOW TABLE STATUS は SHOW TABLES のように機能しますが、各テーブルに関する多くの情報を提供します。mysqlshow --status db_name コマンドを利用してこのリストを得る事もできます。
このステートメントもまたビューの情報を表示します。
SHOW TABLE STATUS は次のフィールドを返します。
Name
テーブル名。
Engine
テーブルのストレージ エンジン。詳しくは 章 13. ストレージエンジンとテーブルタイプ を参照してください。
Version
テーブルの .frm file. のバージョン番号。
Row_format
行のストレージ フォーマット(Fixed、Dynamic、Compressed、Redundant、Compact)InnoDB テーブルのフォーマットは Redundant か Compact としてレポートされます。
Rows
行数MyISAM のようないくつかのストレージ エンジンは、正確なカウントを格納します。InnoDB のような別のストレージ エンジンにとっては、この値はおおよその物であり、実際の値とは40から50%くらい異なります。そのような場合は、正確なカウントを得る為に
SELECT COUNT(*) を利用してください。
Rows 値は INFORMATION_SCHEMA データベース内のテーブルには NULL です。
Avg_row_length
平均行長
Data_length
データ ファイルの長さ
Max_data_length
データ ファイルの最大長データ ポインタ サイズが利用されたと仮定して、これはテーブル内に格納できるデータの総バイト数です。
Index_length
インデックス ファイルの長さ
Data_free
割り当てられたけれど使用されていないバイト数
Auto_increment
次の AUTO_INCREMENT 値。
Create_time
テーブルが作成された時。
Update_time
データファイルが最後に更新された時。いくつかのストレージ エンジンに対しては、この値は NULL です。例えば、InnoDB はそのテーブルスペース内に複数のテーブルを格納し、データ ファイルタイムスタンプは適応しません。
Check_time
テーブルが最後に確認された時。値が毎回 NULL の場合、全てのストレージ エンジンはこの時更新しません。
Collation
テーブルの文字セットと照合。
Checksum
ライブチェックサム値(もしあれば)。
Create_options
CREATE TABLE と共に利用される特別オプション。
Comment
テーブルを作成する時に利用されるコメント(またはなぜ MySQL がテーブル情報にアクセスできなかったのかに関する情報)。
InnoDB テーブルは、テーブル コメントの中で、 それが属する所にテーブルスペースのフリー スペースを報告します。共有テーブルスペースの中にあるテーブルには、これが共有テーブルスペースの空きスペースです。もし複数のテーブルスペースを利用していて、そのテーブルが専用のテーブルスペースを所有していたら、そのフリー
スペースはそのテーブルだけの物です。
MEMORY テーブルに対して、Data_length、Max_data_length、そして Index_length 値は割り当てられたメモリの実際の量を概算します。割り当てアルゴリズムは、割り当て操作の数を減らす為に、大量のメモリを確保します。
NDB Cluster テーブルに対して、BLOB カラムは考慮されないという例外はありますが、このステートメントのアウトプットは Avg_row_length と Data_length カラムのおおよその値を表します。 さらに、レプリカの数が Comment カラム内に表示されます。(number_of_replicas として)
ビューに関しては、Name がビュー名を指示し、Comment が view と言う事以外、SHOW TABLE STATUS に表示される全てのフィールドは NULL です。
SHOW TABLES 構文SHOW [FULL] TABLES [FROMdb_name] [LIKE 'pattern']
SHOW TABLES は、与えられたテーブル内で非 TEMPORARY テーブルをリストします。mysqlshow db_name コマンドを利用してこのリストを得る事もできます。
このステートメントはデータベース内のビューもリストします。FULL 修飾子は SHOW FULL TABLES が第2のアウトプット カラムを表示するようにサポートされています。第2カラムの値は、テーブルに対しては BASE TABLE で、ビューに対しては VIEW です。
注意:もしテーブルに権限を持っていなかったら、テーブルは SHOW TABLES か mysqlshow db_name からのアウトプット内に現れません。
SHOW TRIGGERS 構文SHOW TRIGGERS [FROMdb_name] [LIKEexpr]
SHOW TRIGGERS は最近 MySQL サーバ上で定義されたトリガをリストします。このステートメントは SUPER 権限を必要とします。
項18.3. 「トリガの使用」 内で定義されている、トリガ ins_sum に対しては、このステートメントのアウトプットはここに表されているようになります。
mysql> SHOW TRIGGERS LIKE 'acc%'\G
*************************** 1. row ***************************
Trigger: ins_sum
Event: INSERT
Table: account
Statement: SET @sum = @sum + NEW.amount
Timing: BEFORE
Created: NULL
sql_mode:
Definer: myname@localhost
注意:LIKE 条項を SHOW TRIGGERS と利用する時、一致する式(expr) は、トリガ名ではなく、トリガが宣言されたテーブル名と比較されます。
mysql> SHOW TRIGGERS LIKE 'ins%';
Empty set (0.01 sec)
このステートメントのアウトプット内のカラムに関する簡単な説明はここに表されています。
Trigger
トリガ名。
Event
トリガを有効化するイベント:'INSERT'、'UPDATE'、または 'DELETE' の1つ。
Table
トリガが定義されるテーブル。
Statement
トリガが有効化された時に実行されるステートメント。これは INFORMATION_SCHEMA.TRIGGERS の ACTION_STATEMENT 内に表されているテキストと同じです。
Timing
'BEFORE' か 'AFTER' の2つの値の1つ。
Created
現在、このカラムの値はいつでも NULL です。
sql_mode
トリガが実行する時に有効な SQL モード。
Definer
トリガを作成したアカウント。
項21.16. 「INFORMATION_SCHEMA TRIGGERS テーブル」 もご参照ください。
SHOW VARIABLES 構文SHOW [GLOBAL | SESSION] VARIABLES [LIKE 'pattern']
SHOW VARIABLES は MySQL システム変数の値を表示します。mysqladmin variables コマンドを利用してこの情報を得る事もできます。
GLOBAL 修飾子を利用すると、SHOW VARIABLES は MySQL への新しい接続に利用される値を表示します。SESSION を利用すると、現在の接続に有効な値を表示します。 もし修飾子が無ければ、デフォルトは SESSION です。LOCAL は SESSION の同義語です。
もしデフォルトのシステム変数が不適切であれば、mysqld がスタートした時にコマンド オプションを利用してそれらを設定する事ができ、また SET ステートメントを利用してほとんどの物をランタイムに変更できます。項 「システム変数の使用」 と 項 「SET 構文」 を参照して下さい。
部分的なアウトプットがここに表示されています。名前と値のリストは、お使いのサーバとは異なる場合があります。項 「システム変数」 で各変数の意味が説明されており、項 「サーバパラメータのチューニング」 にはそれらを調整する為の情報が紹介されています。
mysql> SHOW VARIABLES;
+---------------------------------+---------------------------+
| Variable_name | Value |
+---------------------------------+---------------------------+
| auto_increment_increment | 1 |
| auto_increment_offset | 1 |
| automatic_sp_privileges | ON |
| back_log | 50 |
| basedir | /home/jon/bin/mysql-5.1/ |
| binlog_cache_size | 32768 |
| bulk_insert_buffer_size | 8388608 |
| character_set_client | latin1 |
| character_set_connection | latin1 |
...
| max_user_connections | 0 |
| max_write_lock_count | 4294967295 |
| multi_range_count | 256 |
| myisam_data_pointer_size | 6 |
| myisam_max_sort_file_size | 2147483647 |
| myisam_recover_options | OFF |
| myisam_repair_threads | 1 |
| myisam_sort_buffer_size | 8388608 |
| ndb_autoincrement_prefetch_sz | 32 |
| ndb_cache_check_time | 0 |
| ndb_force_send | ON |
...
| time_zone | SYSTEM |
| timed_mutexes | OFF |
| tmp_table_size | 33554432 |
| tmpdir | |
| transaction_alloc_block_size | 8192 |
| transaction_prealloc_size | 4096 |
| tx_isolation | REPEATABLE-READ |
| updatable_views_with_limit | YES |
| version | 5.1.6-alpha-log |
| version_comment | Source distribution |
| version_compile_machine | i686 |
| version_compile_os | suse-linux |
| wait_timeout | 28800 |
+---------------------------------+---------------------------+
LIKE 条項を利用すると、パターンと一致する名前を持つ変数の行のみを表示します。
特定の変数に行を得る為には、次に表示されているように LIKE 条項を利用してください。
SHOW VARIABLES LIKE 'max_join_size'; SHOW SESSION VARIABLES LIKE 'max_join_size';
名前がパターンと一致する変数のリストを得るには、LIKE 条項内の ‘%’ ワイルドカード文字を利用してください。
SHOW VARIABLES LIKE '%size%'; SHOW GLOBAL VARIABLES LIKE '%size%';
ワイルドカード文字は、一致するパターン内のどの場所でも利用する事ができます。厳密に言うと、‘_’ は全ての単一文字と一致するワイルドカードなので、完全に一致させる為に ‘\_’ の時は拡張する必要があります。実際には、これはほとんど必要ありません。
SHOW WARNINGS 構文SHOW WARNINGS [LIMIT [offset,]row_count] SHOW COUNT(*) WARNINGS
SHOW WARNINGS は、メッセージを作成した最後のステートメントから生じたエラー、警告、そしてノート メッセージを表示、または、もしテーブルを利用した最後のステートメントが何のメッセージも作成しなければ、何も表示しません。関連ステートメントである
SHOW ERRORS はエラーだけを表示します。詳しくは 項14. 「SHOW ERRORS 構文」 を参照してください。
テーブルを利用するそれぞれの新ステートメントに対して、メッセージのリストはリセットされます。
SHOW COUNT(*) WARNINGS ステートメントはエラー、警告、そしてノートの総数を表示します。warning_count 変数からもこの数字を検索する事ができます。
SHOW COUNT(*) WARNINGS; SELECT @@warning_count;
もし max_error_count システム変数が、全てのメッセージの格納ができないほど低く設定されると、warning_count の値は SHOW WARNINGS によって表示されるメッセージ数よりも大きくなります。このセクションの後の方で表示される例で、これがどのように起きるのか紹介しています。
LIMIT 条項は SELECT ステートメントに対するのと同じ構文を持っています。詳しくは 項 「SELECT 構文」 を参照してください。
MySQL サーバは、最後のステートメントから生じたエラー、警告、そしてノートの総数を送り返します。もし C API を利用していれば、この値は
mysql_warning_count() をコールする事で得る事ができます。詳しくは 項72. 「mysql_warning_count()」 を参照してください。
警告は、LOAD DATA INFILE や、また DML INSERT、UPDATE、CREATE TABLE、そして ALTER TABLE のような DML ステートメントなどのようなステートメントに対して作成されます。
次の DROP TABLE ステートメントはノートをもたらします:
mysql>DROP TABLE IF EXISTS no_such_table;mysql>SHOW WARNINGS;+-------+------+-------------------------------+ | Level | Code | Message | +-------+------+-------------------------------+ | Note | 1051 | Unknown table 'no_such_table' | +-------+------+-------------------------------+
ここに、CREATE TABLE に対する構文警告と、INSERT に対する変換警告を表すシンプルな例があります。
mysql>CREATE TABLE t1 (a TINYINT NOT NULL, b CHAR(4)) TYPE=MyISAM;Query OK, 0 rows affected, 1 warning (0.00 sec) mysql>SHOW WARNINGS\G*************************** 1. row *************************** Level: Warning Code: 1287 Message: 'TYPE=storage_engine' is deprecated, use 'ENGINE=storage_engine' instead 1 row in set (0.00 sec) mysql>INSERT INTO t1 VALUES(10,'mysql'),(NULL,'test'),->(300,'Open Source');Query OK, 3 rows affected, 4 warnings (0.01 sec) Records: 3 Duplicates: 0 Warnings: 4 mysql>SHOW WARNINGS\G*************************** 1. row *************************** Level: Warning Code: 1265 Message: Data truncated for column 'b' at row 1 *************************** 2. row *************************** Level: Warning Code: 1263 Message: Data truncated, NULL supplied to NOT NULL column 'a' at row 2 *************************** 3. row *************************** Level: Warning Code: 1264 Message: Data truncated, out of range for column 'a' at row 3 *************************** 4. row *************************** Level: Warning Code: 1265 Message: Data truncated for column 'b' at row 3 4 rows in set (0.00 sec)
エラー警告、そしてノート メッセージの最高格納数は max_error_count システム変数によってコントロールされています。デフォルトにより、その値は64です。格納するメッセージ数を変更したければ、max_error_count の値を変更してください。次の例では ALTER TABLE ステートメントは3つの警告メッセージを発生しますが、max_error_count が1に設定されている為、そのうちの1つしか格納されません。
mysql>SHOW VARIABLES LIKE 'max_error_count';+-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | max_error_count | 64 | +-----------------+-------+ 1 row in set (0.00 sec) mysql>SET max_error_count=1;Query OK, 0 rows affected (0.00 sec) mysql>ALTER TABLE t1 MODIFY b CHAR;Query OK, 3 rows affected, 3 warnings (0.00 sec) Records: 3 Duplicates: 0 Warnings: 3 mysql>SELECT @@warning_count;+-----------------+ | @@warning_count | +-----------------+ | 3 | +-----------------+ 1 row in set (0.01 sec) mysql>SHOW WARNINGS;+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1263 | Data truncated for column 'b' at row 1 | +---------+------+----------------------------------------+ 1 row in set (0.00 sec)
警告を無効にするには、max_error_count を0に設定してください。この場合、warning_count はいくつの警告が起きたか指示しますが、どのメッセージも格納はされません。
SQL_NOTES セッション変数を0に設定して、Note レベルの警告が記録されないようにできます。