MySQLテーブルがMyISAMまたはInnoDBエンジンを使用しているか確認する方法
MySQLテーブルのストレージエンジンを確認するには?
MySQLでテーブルがMyISAMまたはInnoDBのどちらのストレージエンジンを使用しているかを確認したい場合、SHOW TABLE STATUSコマンドを使うのが最も手軽な方法です。このコマンドを実行すると、エンジンの種類だけでなく、行数や作成日時、照合順序など、テーブルに関する詳細情報を一度に取得できます。
基本構文
SHOW TABLE STATUS FROM データベース名 LIKE 'テーブル名';
上記の構文では、指定したデータベース内の特定のテーブルに関する情報が表示されます。Engine列の値を確認することで、そのテーブルがMyISAMかInnoDBかを判断できます。
実行例:特定のテーブルのエンジンを確認
ここでは、データベース「business」内のテーブル「student」を例に説明します。以下のクエリを実行します。
mysql> SHOW TABLE STATUS FROM business LIKE 'student';
実行結果は次のとおりです。「Engine」列にInnoDBと表示されているため、「student」テーブルがInnoDBエンジンを使用していることがわかります。
+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+
| 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 | InnoDB | 10 | Dynamic | 2 | 8192 | 16384 | 0 | 32768 | 0 | NULL | 2018-10-01 12:26:57 | NULL | NULL | utf8mb4_unicode_ci | NULL | | |
+---------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+-------------+------------+--------------------+----------+----------------+---------+
1 row in set (0.09 sec)
データベース内の全テーブルのエンジンを一括確認する
すべてのテーブルのストレージエンジンをまとめて確認したい場合は、LIKE句を省略して次の構文を使用します。
SHOW TABLE STATUS FROM データベース名;
実際のクエリは以下のとおりです。
mysql> SHOW TABLE STATUS FROM business;
このクエリを実行すると、「business」データベース内のすべてのテーブルと、それぞれが使用しているエンジンの種類が一覧形式で表示されます。
補足:その他の確認方法
SHOW TABLE STATUS以外にも、以下のような方法でストレージエンジンを確認できます。
- information_schemaを参照する:
スクリプトやプログラムから結果を扱いやすいため、自動化処理に向いています。SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'business' AND TABLE_NAME = 'student'; - SHOW CREATE TABLEを使う:
出力結果のテーブル定義の末尾に「ENGINE=InnoDB」のようにエンジン情報が含まれます。SHOW CREATE TABLE student;
まとめ
MySQLのテーブルがMyISAMかInnoDBかを確認するには、SHOW TABLE STATUSコマンドが便利です。特定のテーブルのみを調べたい場合はLIKE句で絞り込み、データベース全体を調査したい場合はLIKE句を外して実行します。表示結果の「Engine」列を見れば、ストレージエンジンの種類をひと目で判別できます。
-
MySQLでInnoDBをインストールまたは有効化する方法
MySQLでInnoDBストレージエンジンを有効にするには、設定ファイルmy.ini(Linux環境の場合はmy.cnf)を編集する必要があります。MySQL 8以降ではInnoDBがデフォルトなお、MySQL 8.0以降では、デフォルトのストレージエンジンとしてInnoDBが標準で採用されているため、通常は特別な設定を行わなくてもInnoDBを使用できます。現在の設定はmy.iniファイルで確認しましょう。デフォルトストレージエンジンを明示的に指定したい場合は、設定ファイルに以下のように記述します。[mysqld]default-storage-engine=InnoDBまた、サーバー側で現
-
PythonでMySQLのテーブルを丸ごとコピーする方法をわかりやすく解説
Pythonを使えば、MySQLに存在する既存テーブルのコピーを簡単に作成できます。コピーには、カラム(列)やその定義、テーブル内のすべての行データが含まれます。基本構文CREATE TABLE table_name SELECT * FROM existing_tabletable_name:新しく作成するテーブルの名前existing_table:コピー元となる既存テーブルの名前PythonでMySQLのテーブルをコピーする手順MySQLコネクタ(mysql.connector)をインポートするconnect() メソッドでデータベースへの接続を確立するcursor() メソッドでカーソル