MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

【MySQL入門】テーブルのストレージエンジン(MyISAM/InnoDB)を確認する方法

MySQLテーブルのストレージエンジンを確認するには?

MySQLのテーブルがMyISAMInnoDBのどちらのストレージエンジンを使用しているかを調べたいときは、SHOW TABLE STATUSステートメントを使います。このコマンドを実行すると、テーブル名・エンジンの種類・行数・作成日時などの詳細情報を一覧形式で取得でき、結果の「Engine」列を見ることでエンジンの種類をすぐに判別できます。

データベース内の全テーブルのエンジンを表示する構文

複数のテーブル(データベース内のすべてのテーブル)の情報を一度に確認したい場合は、次の構文を使用します。

SHOW TABLE STATUS FROM データベース名;

特定のテーブルのエンジンを表示する構文

特定の1つのテーブルだけエンジンを確認したい場合は、LIKE句でテーブル名を指定します。

SHOW TABLE STATUS FROM データベース名 LIKE 'テーブル名';

実行例①:データベース内の全テーブルのエンジンを表示

ここでは、サンプルデータベース「sampleTest」に対してクエリを実行してみます。

mysql> SHOW TABLE STATUS FROM sampleTest;

実行結果は以下のとおりです。「Engine」列に注目してください。

+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
| Name         | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation          | Checksum | Create_options | Comment |
+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
| datetimedemo | InnoDB | 10      | Dynamic    | 0    | 0              | 16384       | 0               | 0            | 0         | NULL           | 2018-12-05 09:22:54 | NULL                | NULL       | utf8mb4_0900_ai_ci | NULL     |                |         |
| primarydemo  | InnoDB | 10      | Dynamic    | 0    | 0              | 16384       | 0               | 0            | 0         | NULL           | 2018-12-05 09:23:34 | NULL                | NULL       | utf8mb4_0900_ai_ci | NULL     |                |         |
| student      | MyISAM | 10      | Dynamic    | 0    | 0              | 0           | 281474976710655 | 1024         | 0         | 1              | 2018-12-05 09:22:22 | 2018-12-05 09:22:23 | NULL       | utf8mb4_0900_ai_ci | NULL     |                |         |
+--------------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
3 rows in set (0.19 sec)

この結果から、「datetimedemo」と「primarydemo」はInnoDB、「student」はMyISAMを使用していることがわかります。

実行例②:特定のテーブル「student」だけエンジンを表示

次に、特定のテーブルに絞り込んでクエリを実行します。

mysql> SHOW TABLE STATUS FROM sampletest LIKE 'student';

実行結果は以下のとおりです。「student」テーブルの情報だけが表示されます。

+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
| Name    | Engine | Version | Row_format | Rows | Avg_row_length | Data_length | Max_data_length | Index_length | Data_free | Auto_increment | Create_time         | Update_time         | Check_time | Collation          | Checksum | Create_options | Comment |
+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
| student | MyISAM | 10      | Dynamic    | 0    | 0              | 0           | 281474976710655 | 1024         | 0         | 1              | 2018-12-05 09:22:22 | 2018-12-05 09:22:23 | NULL       | utf8mb4_0900_ai_ci | NULL     |                |         |
+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+--------------------+----------+----------------+---------+
1 row in set (0.00 sec)

補足:information_schemaを使った確認方法

SHOW TABLE STATUS以外にも、information_schemaデータベースを直接参照する方法があります。必要な列だけを抽出できるため、結果がすっきりして読みやすくなります。

SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'sampleTest';

また、MySQL 5.5以降ではInnoDBがデフォルトのストレージエンジンとなっているため、特に指定しない限り新規作成されるテーブルはInnoDBになります。トランザクション処理が必要なテーブルなのか、高速な全文検索向けのMyISAMが適しているのかなど、用途に応じてエンジンを意識して設計しましょう。

まとめ

  • 全テーブルのエンジンを確認する:SHOW TABLE STATUS FROM データベース名;
  • 特定テーブルだけ絞り込む:SHOW TABLE STATUS FROM データベース名 LIKE 'テーブル名';
  • 結果の「Engine」列を見れば、MyISAMかInnoDBかが一目でわかる
  • 必要な列だけ欲しい場合はinformation_schema.TABLESの参照も有効
  1. MySQLで最新のIDを持つレコードを表示する方法

    MySQLのテーブルから、最も新しいID(最大のAUTO_INCREMENT値)を持つレコードを取得したい場面はよくあります。この記事では、サンプルテーブルを作成し、ORDER BY句とLIMIT句を組み合わせることで、最新のIDを持つレコードを表示する手順を解説します。 1. サンプルテーブルの作成 まず、以下のようにテーブルを作成します。IdカラムはAUTO_INCREMENT付きの主キーとして定義します。 mysql> create table DemoTable676( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, Nu

  2. MySQLテーブルのストレージエンジンを変更する方法

    MySQLでは、ALTER TABLE文を使うことで、既存テーブルのストレージエンジンを簡単に変更できます。例えば、MyISAMで作成したテーブルをInnoDBに切り替えたい場合などに役立ちます。 基本構文 alter table yourTableName ENGINE=InnoDB; yourTableName の部分に対象となるテーブル名を指定し、ENGINE= の後ろに設定したいストレージエンジン名を記述します。 サンプルテーブルの作成 まず、MyISAMエンジンを使用したテーブルを作成してみましょう。 mysql> create table DemoTable  &n