MySQL: INFORMATION_SCHEMAデータベースでテーブルのエンジンタイプを確認
ここでは、MySQLの特定のテーブルのエンジンタイプを確認する2つの方法を紹介します。
方法1:SHOW TABLE STATUSコマンドを使用する
SHOW TABLE STATUS
コマンドは、指定されたテーブルに関する情報を表示します。このコマンドの出力には、エンジンタイプを含む、テーブルに関する多くの情報が含まれます。
SHOW TABLE STATUS WHERE Name = 'テーブル名';
例:
SHOW TABLE STATUS WHERE Name = 'my_table';
出力結果:
...
Engine: InnoDB
...
INFORMATION_SCHEMA
データベースには、MySQLサーバーに関するメタデータが格納されています。TABLES
テーブルには、すべてのテーブルに関する情報が含まれます。このテーブルには、エンジンタイプを含む、テーブルに関する多くの情報が含まれます。
SELECT Engine
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'テーブル名';
SELECT Engine
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME = 'my_table';
InnoDB
どちらの方法でも、以下の点に注意する必要があります。
- テーブル名が正しいことを確認してください。
SHOW TABLE STATUS
コマンドは、古いバージョンのMySQLでは使用できない場合があります。
- MySQL WorkbenchなどのGUIツールを使用する
mysqldump
コマンドを使用してテーブルのスキーマをダンプし、エンジンタイプを確認する
import mysql.connector
# データベースへの接続
connection = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="database_name",
)
# テーブル名の取得
table_name = input("テーブル名を入力してください: ")
# カーソルの作成
cursor = connection.cursor()
# クエリの実行
cursor.execute(f"SHOW TABLE STATUS WHERE Name = '{table_name}'")
# 結果の取得
result = cursor.fetchone()
# エンジンタイプの出力
print(f"エンジンタイプ: {result['Engine']}")
# カーソルのクローズ
cursor.close()
# データベースとの接続の切断
connection.close()
例2:INFORMATION_SCHEMAデータベースを使用する
import mysql.connector
# データベースへの接続
connection = mysql.connector.connect(
host="localhost",
user="root",
password="password",
database="database_name",
)
# テーブル名の取得
table_name = input("テーブル名を入力してください: ")
# カーソルの作成
cursor = connection.cursor()
# クエリの実行
cursor.execute(f"SELECT Engine FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = '{table_name}'")
# 結果の取得
result = cursor.fetchone()
# エンジンタイプの出力
print(f"エンジンタイプ: {result[0]}")
# カーソルのクローズ
cursor.close()
# データベースとの接続の切断
connection.close()
これらのサンプルコードは、Pythonを使用してMySQLデータベースに接続し、SHOW TABLE STATUS
コマンドとINFORMATION_SCHEMA
データベースを使用して特定のテーブルのエンジンタイプを確認する方法を示しています。
上記のサンプルコードはPythonで書かれていますが、他の言語でも同様の方法で特定のテーブルのエンジンタイプを確認することができます。
特定のテーブルのエンジンタイプを確認するその他の方法
GUIツールを使用する
MySQL WorkbenchなどのGUIツールを使用すると、テーブルのプロパティを表示することでエンジンタイプを確認することができます。
mysqldump -d database_name table_name > table_schema.sql
出力されたスキーマファイルを開き、ENGINE
というキーワードを探します。そのキーワードの後に、テーブルのエンジンタイプが表示されます。
INFORMATION_SCHEMA.INNODB_TABLESテーブルを使用する
InnoDBエンジンを使用しているテーブルの場合は、INFORMATION_SCHEMA.INNODB_TABLES
テーブルを使用してエンジンタイプを確認することができます。
SELECT ENGINE
FROM INFORMATION_SCHEMA.INNODB_TABLES
WHERE NAME = 'テーブル名';
INFORMATION_SCHEMA.FILES
テーブルを使用して、テーブルのデータファイルの拡張子を確認することができます。拡張子によって、エンジンタイプを推測することができます。
SELECT FILE_NAME
FROM INFORMATION_SCHEMA.FILES
WHERE TABLE_NAME = 'テーブル名';
**拡張子 | エンジンタイプ** |
---|---|
.ibd | InnoDB |
.frm | MyISAM |
.ISM | Aria |
SHOW ENGINE INNODB STATUSコマンドを使用する
SHOW ENGINE INNODB STATUS;
...
Status:
...
Engine: InnoDB
...
注意事項
- 上記の方法の中には、すべてのバージョンのMySQLで使用できないものもあります。
- 特定の方法を使用する前に、MySQLのドキュメントを参照してください。
mysql innodb myisam