MySQLでやりたいことから調べられるリファレンス

MySQL 逆引きリファレンス

テーブル毎のストレージエンジンを確認する方法

スポンサードリンク

MySQL ではテーブルを作成する際に ENGINE オプションでストレージエンジンを指定することができます。このテーブル毎のストレージエンジンは、次の2つの方法で確認することができます。

information_schema の TABLES テーブルを参照する方法

information_schema の TABLES テーブルには、全てのテーブルの属性情報が格納されています。各テーブルがどのストレージエンジンを使用しているかは ENGINE 列で確認することができます。

サンプルコード(システム使用のテーブルを除外)
SELECT
    TABLE_SCHEMA,
    TABLE_NAME,
    ENGINE
FROM
    information_schema.TABLES
WHERE
    TABLE_SCHEMA NOT IN(
        'information_schema',
        'performance_schema',
        'mysql'
    );

information_schema の TABLES テーブルには、ユーザーが定義したテーブルだけでなくシステムが使用するテーブルも全て含まれるので、サンプルコードでは TABLE_SCHEMA 列を絞り込み条件にしてシステムが使用するデータベースを除外しています。実行結果は次の通りです。

mysql> SELECT
    ->     TABLE_SCHEMA,
    ->     TABLE_NAME,
    ->     ENGINE
    -> FROM
    ->     information_schema.TABLES
    -> WHERE
    ->     TABLE_SCHEMA NOT IN(
    ->         'information_schema',
    ->         'performance_schema',
    ->         'mysql'
    ->     );
+--------------+------------+--------+
| TABLE_SCHEMA | TABLE_NAME | ENGINE |
+--------------+------------+--------+
| test         | cust_list  | MyISAM |
| test         | item_list  | InnoDB |
| test         | name_list  | InnoDB |
+--------------+------------+--------+
3 rows in set (0.00 sec)

mysql>

SHOW TABLE STATUS で確認する方法

SHOW TABLE STATUS を実行すると、選択中のデータベースのテーブル情報を参照できます。その為、最初に USE で確認するテーブルが存在するデータベースを選択しておきます。

また SHOW TABLE STATUS の実行結果はカラムが多く、そのまま表示すると表示が崩れるので \G オプションを使用します。

SHOW TABLE STATUS\G

実行結果は次の通りです。Engine にストレージエンジンが記述されています。

mysql> USE TEST;
Database changed
mysql> SHOW TABLE STATUS\G
*************************** 1. row ***************************
           Name: cust_list
         Engine: MyISAM
        Version: 10
     Row_format: Dynamic
           Rows: 0
 Avg_row_length: 0
    Data_length: 0
Max_data_length: 281474976710655
   Index_length: 1024
      Data_free: 0
 Auto_increment: 2
    Create_time: 2014-12-10 17:21:47
    Update_time: 2014-12-10 17:21:47
     Check_time: NULL
      Collation: cp932_japanese_ci
       Checksum: NULL
 Create_options:
        Comment:
*************************** 2. row ***************************
           Name: item_list
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 1
 Avg_row_length: 16384
    Data_length: 16384
Max_data_length: 0
   Index_length: 16384
      Data_free: 0
 Auto_increment: 3
    Create_time: 2014-12-10 17:13:58
    Update_time: NULL
     Check_time: NULL
      Collation: cp932_japanese_ci
       Checksum: NULL
 Create_options:
        Comment:
*************************** 3. row ***************************
           Name: name_list
         Engine: InnoDB
        Version: 10
     Row_format: Compact
           Rows: 0
 Avg_row_length: 0
    Data_length: 16384
Max_data_length: 0
   Index_length: 0
      Data_free: 0
 Auto_increment: NULL
    Create_time: 2014-12-05 05:43:54
    Update_time: NULL
     Check_time: NULL
      Collation: cp932_japanese_ci
       Checksum: NULL
 Create_options:
        Comment:
3 rows in set (0.00 sec)

mysql>
スポンサードリンク

テーブル関連

その他のカテゴリー一覧