SHOW 構文

1. SHOW AUTHORS 構文
2. SHOW CHARACTER SET 構文
3. SHOW COLLATION 構文
4. SHOW COLUMNS 構文
5. SHOW CONTRIBUTORS 構文
6. SHOW CREATE DATABASE 構文
7. SHOW CREATE EVENT
8. SHOW CREATE PROCEDURESHOW CREATE FUNCTION 構文
9. SHOW CREATE TABLE 構文
10. SHOW CREATE VIEW 構文
11. SHOW DATABASES 構文
12. SHOW ENGINE 構文
13. SHOW ENGINES 構文
14. SHOW ERRORS 構文
15. SHOW EVENTS
16. SHOW GRANTS 構文
17. SHOW INDEX 構文
18. SHOW INNODB STATUS 構文
19. SHOW OPEN TABLES 構文
20. SHOW PLUGINS 構文
21. SHOW PRIVILEGES 構文
22. SHOW PROCEDURE CODESHOW FUNCTION CODE 構文
23. SHOW PROCEDURE STATUSSHOW FUNCTION STATUS 構文
24. SHOW PROCESSLIST 構文
25. SHOW SCHEDULER STATUS 構文
26. SHOW STATUS 構文
27. SHOW TABLE STATUS 構文
28. SHOW TABLES 構文
29. SHOW TRIGGERS 構文
30. SHOW VARIABLES 構文
31. SHOW WARNINGS 構文

SHOW は、データベース、テーブル、カラム、またサーバのステータス情報などのような様々な情報を提供する多くの形を持っています。このセクションでは次のような物を紹介します。

SHOW AUTHORS
SHOW CHARACTER SET [LIKE 'pattern']
SHOW COLLATION [LIKE 'pattern']
SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [LIKE 'pattern']
SHOW CONTRIBUTORS
SHOW CREATE DATABASE db_name
SHOW CREATE EVENT event_name
SHOW CREATE FUNCTION funcname
SHOW CREATE PROCEDURE procname
SHOW CREATE TABLE tbl_name
SHOW CREATE VIEW view_name
SHOW DATABASES [LIKE 'pattern']
SHOW ENGINE engine_name {LOGS | STATUS | MUTEX}
SHOW [STORAGE] ENGINES
SHOW ERRORS [LIMIT [offset,] row_count]
SHOW [FULL] EVENTS
SHOW FUNCTION CODE sp_name
SHOW FUNCTION STATUS [LIKE 'pattern']
SHOW GRANTS FOR user
SHOW INDEX FROM tbl_name [FROM db_name]
SHOW INNODB STATUS
SHOW PROCEDURE CODE sp_name
SHOW PROCEDURE STATUS [LIKE 'pattern']
SHOW PLUGINS
SHOW PRIVILEGES
SHOW [FULL] PROCESSLIST
SHOW SCHEDULER STATUS
SHOW [GLOBAL | SESSION] STATUS [LIKE 'pattern']
SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']
SHOW [OPEN] TABLES [FROM db_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 ステートメントへの拡張」 を参照してください。

1. SHOW AUTHORS 構文

SHOW AUTHORS

SHOW AUTHORS ステートメントは、MySQL 上で働く人々の情報を表示します。それぞれの作者に対して、NameLocation、そして Comment 値を表示します。

このステートメントは、MySQL 5.1.3 で追加されました。

2. 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 カラムは、一文字を格納するのに必要な最大バイト数を表示します。

3. 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 は、文字セットの中の文字列式をソートする為に必要とされるメモリの量と関係しています。

4. SHOW COLUMNS 構文

SHOW [FULL] COLUMNS FROM tbl_name [FROM db_name] [LIKE 'pattern']

SHOW COLUMNS は与えられたテーブル内のカラムに関する情報を表示します。これはビューに対しても機能します。

FULL キーワードは、各カラムに対するプレ カラム コメントと同じように、アウトプットが今持っている権限を含むように働きかけます。

db_name.tbl_nametbl_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 構文」 を参照してください。

5. SHOW CONTRIBUTORS 構文

SHOW CONTRIBUTORS

SHOW CONTRIBUTORS ステートメントは、MySQL のソ-スに貢献した人や、MySQL AB サポートを引き起こす情報を表示します。それぞれの貢献者に対して、 NameLocation、そして Comment 値を表示します。

このステートメントは、MySQL 5.1.12 で追加されました。

6. SHOW CREATE DATABASE 構文

SHOW CREATE {DATABASE | SCHEMA} db_name

与えられたデータベースを作成する CREATE DATABASE ステートメントを表示します。SHOW CREATE SCHEMASHOW 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 DATABASESQL_QUOTE_SHOW_CREATE オプションの値に従ってテーブルとカラム名を引用します。詳しくは 項 「SET 構文」 を参照してください。

7. SHOW CREATE EVENT

SHOW 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 でインプリメントされました。

8. SHOW CREATE PROCEDURESHOW 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,'!')

9. 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 TABLESQL_QUOTE_SHOW_CREATE オプションの値に従ってテーブルとカラム名を引用します。詳しくは 項 「SET 構文」 を参照してください。

10. 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 テーブル」 を参照してください。

11. SHOW DATABASES 構文

SHOW {DATABASES | SCHEMAS} [LIKE 'pattern']

SHOW DATABASES は MySQL サーバ ホスト上のデータベースをリストにします。SHOW SCHEMASSHOW DATABASES の同義語です。

グローバル SHOW DATABASES 権限を持っていない限り、自分が何かしらの権限を持つデータベースしか見る事ができません。mysqlshow コマンドを利用してこのリストを手に入れる事もできます。

もしサーバが --skip-show-database オプションを利用してスタートしたら、SHOW DATABASES 権限を持っていない限り、このステートメントを利用する事は絶対にできません。

SHOW SCHEMAS を利用する事もできます。

12. 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 STATUSSHOW ENGINE INNODB MUTEX の古い(または廃止された)同義語は SHOW INNODB STATUSSHOW MUTEX STATUS です。

SHOW ENGINE INNODB STATUSInnoDB ストレージエンジンの状態に関する広範囲な情報を表示します。

InnoDB モニタは InnoDB 処理に関する追加情報を提供します。詳しくは 項1. 「SHOW ENGINE INNODB STATUSInnoDB モニタ」 を参照してください。

SHOW ENGINE INNODB MUTEXInnoDB ミューテックス統計を表示します。アウトプット フィールドは次に紹介されています。

  • Type

    常に InnoDB です。

  • Name

    それがインプリメントされたミューテックス名とソース ファイル。例:&pool->mutex:mem0pool.c

    ミューテックス名はその目的を指示します。例えば、log_sys ミューテックスは InnoDB ログ サブシステムに利用され、ログ活動がどれほど集中しているのかを指示します。buf_pool ミューテックスは InnoDB バッファ プールを保護します。

  • Status

    ミューテックス ステータスフィールドはいくつかの値を含んでいます。

    • count は、ミューテックスが何回要求されたかを指示します。

    • spin_waits はスピンロックが何回起動しなければいけなかったかを指示します。

    • spin_rounds はスピンロック ラウンドの数を指示します。(spin_roundsspin_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_waitsspin_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 MUTEXSHOW MUTEX STATUS として呼び出されます。後者のステートメントは似たような情報を表示しますが、それは少し異なるアウトプット フォーマットになります。

SHOW ENGINE BDB LOGS は以前は BDB ログ ファイルのステータス情報を表示しました。MySQL 5.1.12 にもあるように、BDB ストレージ エンジンはもうサポートされていませんし、このステートメントは警告を作成します。

13. 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-innodbInnoDB エンジンを無効にします。NDB Cluster ストレージ エンジンにとっては、DISABLED は、サーバは MySQL クラスタへのサポートを利用してコンパイルされたが、スタートするのに --ndb-cluster オプションは利用されなかった、という事を意味します。

全ての MySQL サーバは、MyISAM がデフォルトのストレージ エンジンなので、MyISAM テーブルをサポートします。

TransactionsXA、そして Savepoints カラムが MySQL 5.1.2 で追加されました。それらはそれぞれストレージ エンジンが、トランザクション、XA トランザクション、そしてセーブポイントをサポートするかどうかを指示します。

14. 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 構文」 を参照してください。

15. SHOW EVENTS

SHOW EVENTS [FROM schema_name] [LIKE pattern]

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:イベント ステータスENABLEDDISABLED のうちの1つです。

アクション ステートメントは SHOW EVENTS のアウトプット内に表示されていない事に注意してください。

注意:StartsEnds ('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 で削除されました。

16. 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 はそれらを表示しません。

17. SHOW INDEX 構文

SHOW INDEX FROM tbl_name [FROM db_name]

SHOW INDEX はテーブル インデックス情報を返します。そのフォーマットは、ODBC 内の SQLStatistics コールのそれと似ています。

SHOW INDEX は次のフィールドを返します。

  • Table

    テーブル名。

  • Non_unique

    もしインデックスが複製を含む事ができなければ0、もしできるなら1。

  • Key_name

    インデックス名

  • Seq_in_index

    1から始まる、インデックス内のカラム シーケンス番号

  • Column_name

    カラム名

  • Collation

    カラムがインデックス内でどのようにソートされるか。MySQL では、これは値 ‘A’ (昇順)か NULL (格納されない)を持つ事ができます。

  • Cardinality

    インデックス内の固有値数の見積もりこれは、ANALYZE TABLEmyisamchk -a を起動させる事で更新されます。Cardinality は、整数として格納された統計に基づいてカウントされるので、小さいテーブルに対してもその値は必ずしも精密ではありません。濃度が高ければ、その分 MySQL が接合を行う時にインデックスを利用する可能性は高くなります。

  • Sub_part

    もしカラムが部分的にだけインデックスされていた時のインデックスされる文字数、もしカラム全体がインデックスされていた時は NULL です。

  • Packed

    キーがどのようにパックされるのかを指示します。もしそうでなければ NULL です。

  • Null

    もしカラムが NULL を含んでいたら、YES を含みます。もしそうでなければ、カラムは NO を含みます。

  • Index_type

    使用されるインデックス方法(BTREEFULLTEXTHASHRTREE)

  • Comment

    様々な意見

db_name.tbl_nametbl_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 コマンドを利用してリストにする事もできます。

18. SHOW INNODB STATUS 構文

SHOW INNODB STATUS

MySQL 5.1 では、これは廃止予定の SHOW ENGINE INNODB STATUS の同義語です。詳しくは 項12. 「SHOW ENGINE 構文」 を参照してください。

19. SHOW OPEN TABLES 構文

SHOW OPEN TABLES [FROM db_name] [LIKE 'pattern']

SHOW OPEN TABLES は、現在テーブル キャッシュ内で開かれている非 TEMPORARY テーブルをリストします。詳しくは 項 「MySQL でのテーブルのオープンとクローズの方法」 を参照してください。

SHOW OPEN TABLES は次のフィールドを返します。

  • Database

    テーブルを含むデータベース

  • Table

    テーブル名。

  • In_use

    クエリによってテーブルが現在使用されている回数。もしカウントがゼロなら、そのテーブルは開いていますが現在は利用されていません。

  • Name_locked

    テーブル名がロックされているかどうか名前ロックは、ドロップやテーブルのリネームのような操作に利用されます。

20. 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 は廃止予定で、警告を発します。)

21. 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
...

22. SHOW PROCEDURE CODESHOW 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)

この例の中では、非実行可能 BEGINEND ステートメントは無くなっており、DECLARE variable_name ステートメントに対しては、実行可能な部分だけが現れています。(デフォルトが割り当てられている部分)ソースから取り出された各ステートメントに対しては、後にタイプが続くコード文字 stmt があります。(9は DROP、5は INSERT を意味する、という感じの物です。)最終行は、GOTO instruction #2 という意味を持つ jump 2 指示を含んでいます。

これらのステートメントは、MySQL 5.1.3 で追加されました。

23. SHOW PROCEDURE STATUSSHOW 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 テーブル」 を参照してください。

24. 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 userevent_scheduler には、Host カラム内で指定されたホストはありません。

  • Host

    ステートメントを発行するクライアントのホスト名(ホストが無い system user 以外)。SHOW PROCESSLIST は、どのクライアントが何をしているかの究明を簡単にする為に、TCP/IP 接続のホスト名を host_name:client_port フォーマットで報告します。

  • db

    もし選択されれば、これがデフォルト データベースです。そうでなければ NULL です。

  • Command

    クライアント/サーバ プロトコルの COM_xxx コマンドに対応するカラムの値。詳しくは 項 「ステータス変数」 を参照してください。

    Command 値は、次のうちのどれかでしょう。Binlog Dump, Change userClose stmtConnectConnect OutCreate DBDaemonDebugDelayed insertDrop DBErrorExecuteFetchField ListInit DBKillLong DataPingPrepareProcesslistQueryQuitRefreshRegister SlaveReset stmtSet optionShutdownSleepStatisticsTable DumpTime

  • Time

    ステートメントやコマンドの開始から現在までの、秒表示での時間。

  • State

    次のうちのどれかになり得る、アクション、イベント、またはステート:After createAnalyzingChanging masterChecking master versionChecking tableConnecting to masterCopying to group tableCopying to tmp tableCreating delayed handlerCreating indexCreating sort indexCreating table from master dumpCreating tmp tableExecution of init_commandFULLTEXT initializationFinished reading one binlog; switching to next binlogFlushing tablesKilledKilling slaveLockedMaking temp file Opening master dump tableOpening tableOpening tablesProcessing requestPurging old relay logsQueueing master event to the relay logReading event from the relay logReading from netReading master dump table dataRebuilding the index on master dump tableReconnecting after a failed binlog dump requestReconnecting after a failed master event readRegistering slave on masterRemoving duplicatesReopen tablesRepair by sortingRepair doneRepair with keycacheRequesting binlog dumpRolling backSaving stateSearching rows for updateSending binlog event to slaveSending dataSorting for groupSorting for orderSorting indexSorting resultSystem lockTable lockThread initializedUpdatingUser lockWaiting for INSERTWaiting for master to send eventWaiting for master updateWaiting for slave mutex on exitWaiting for tableWaiting for tablesWaiting for the next event in relay logWaiting on condWaiting to finalize terminationWaiting to reconnect after a failed binlog dump requestWaiting to reconnect after a failed master event readWriting to netallocating local tablecleaning upclosing tablesconverting HEAP to MyISAMcopy to tmp tablecreating tabledeleting from main tabledeleting from reference tablesdiscard_or_import_tablespaceendfreeing itemsgot handler lockgot old tableinfoinitinsertlogging slow queryloginpreparingpurging old relay logsquery endremoving tmp tablerenamerename result tablereschedulesetupstarting slavestatisticsstoring row into queueunauthenticated userupdateupdatingupdating main tableupdating reference tablesupgrading lockwaiting for delay_listwaiting for handler insertwaiting for handler lockwaiting for handler openWaiting 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 BYGROUP 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 TABLELOCK 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

    サーバはクエリ実行計画を開発する統計を計算しています。

  • System lock

    スレッドは、テーブルの為の外部システム ロックを得るのを待っています。もし同じテーブルにアクセスする複数の 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_nameALTER TABLERENAME TABLEREPAIR TABLEANALYZE TABLE、または OPTIMIZE TABLE

  • waiting for handler insert

    INSERT DELAYED ハンドラは全ての未解決の挿入を処理し、新しい物を待っています。

  • Writing to net

    サーバはネットワークにパケットを書き込んでいます。

ほとんどのステートが大変速い操作に対応します。もしスレッドがこれらのステートのどれかに何秒間も留まれば、調査が必要な問題があるかもしれません。

25. 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」 を参照してください。

26. 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 です。LOCALSESSION の同義語です。

いくつかのステータス変数は、グローバル値しか持っていません。それらに対しては、GLOBALSESSION の両方に同じ値を得ます。

27. SHOW TABLE STATUS 構文

SHOW TABLE STATUS [FROM db_name] [LIKE 'pattern']

SHOW TABLE STATUSSHOW TABLES のように機能しますが、各テーブルに関する多くの情報を提供します。mysqlshow --status db_name コマンドを利用してこのリストを得る事もできます。

このステートメントもまたビューの情報を表示します。

SHOW TABLE STATUS は次のフィールドを返します。

  • Name

    テーブル名。

  • Engine

    テーブルのストレージ エンジン。詳しくは 章 13. ストレージエンジンとテーブルタイプ を参照してください。

  • Version

    テーブルの .frm file. のバージョン番号。

  • Row_format

    行のストレージ フォーマット(FixedDynamicCompressedRedundantCompact)InnoDB テーブルのフォーマットは RedundantCompact としてレポートされます。

  • 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_lengthMax_data_length、そして Index_length 値は割り当てられたメモリの実際の量を概算します。割り当てアルゴリズムは、割り当て操作の数を減らす為に、大量のメモリを確保します。

NDB Cluster テーブルに対して、BLOB カラムは考慮されないという例外はありますが、このステートメントのアウトプットは Avg_row_lengthData_length カラムのおおよその値を表します。 さらに、レプリカの数が Comment カラム内に表示されます。(number_of_replicas として)

ビューに関しては、Name がビュー名を指示し、Commentview と言う事以外、SHOW TABLE STATUS に表示される全てのフィールドは NULL です。

28. SHOW TABLES 構文

SHOW [FULL] TABLES [FROM db_name] [LIKE 'pattern']

SHOW TABLES は、与えられたテーブル内で非 TEMPORARY テーブルをリストします。mysqlshow db_name コマンドを利用してこのリストを得る事もできます。

このステートメントはデータベース内のビューもリストします。FULL 修飾子は SHOW FULL TABLES が第2のアウトプット カラムを表示するようにサポートされています。第2カラムの値は、テーブルに対しては BASE TABLE で、ビューに対しては VIEW です。

注意:もしテーブルに権限を持っていなかったら、テーブルは SHOW TABLESmysqlshow db_name からのアウトプット内に現れません。

29. SHOW TRIGGERS 構文

SHOW TRIGGERS [FROM db_name] [LIKE expr]

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.TRIGGERSACTION_STATEMENT 内に表されているテキストと同じです。

  • Timing

    'BEFORE''AFTER' の2つの値の1つ。

  • Created

    現在、このカラムの値はいつでも NULL です。

  • sql_mode

    トリガが実行する時に有効な SQL モード。

  • Definer

    トリガを作成したアカウント。

項21.16. 「INFORMATION_SCHEMA TRIGGERS テーブル」 もご参照ください。

30. SHOW VARIABLES 構文

SHOW [GLOBAL | SESSION] VARIABLES [LIKE 'pattern']

SHOW VARIABLES は MySQL システム変数の値を表示します。mysqladmin variables コマンドを利用してこの情報を得る事もできます。

GLOBAL 修飾子を利用すると、SHOW VARIABLES は MySQL への新しい接続に利用される値を表示します。SESSION を利用すると、現在の接続に有効な値を表示します。 もし修飾子が無ければ、デフォルトは SESSION です。LOCALSESSION の同義語です。

もしデフォルトのシステム変数が不適切であれば、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%';

ワイルドカード文字は、一致するパターン内のどの場所でも利用する事ができます。厳密に言うと、‘_’ は全ての単一文字と一致するワイルドカードなので、完全に一致させる為に ‘\_’ の時は拡張する必要があります。実際には、これはほとんど必要ありません。

31. 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 INSERTUPDATECREATE 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 レベルの警告が記録されないようにできます。