mysqlテーブルがmyISAMまたはInnoDBエンジンを使用しているかどうかを確認するにはどうすればよいですか?


85

MySQLでは、特定のデータベースにストレージエンジンを指定する方法はなく、単一のテーブルにのみ指定します。ただし、次の1つのセッションで使用するストレージエンジンを指定できます。

SET storage_engine=InnoDB;

したがって、テーブルごとに指定する必要はありません。

実際にすべてのテーブルがInnoDBを使用しているかどうかを確認するにはどうすればよいですか?


回答:


134

SHOW CREATE TABLEを使用する場合は、クエリからエンジンを解析する必要があります。

開発者はいつでもスキーマを変更する権利を留保しているため、INFORMATION_SCHEMAデータベースから選択することはお勧めできません(可能性は低いですが)。

使用する正しいクエリはSHOWTABLESTATUSです。データベース内のすべてのテーブルに関する情報を取得できます。

SHOW TABLE STATUS FROM `database`;

または特定のテーブルの場合:

SHOW TABLE STATUS FROM `database` LIKE 'tablename';

返される列の1つはエンジンです。


+1。ただし、権限を持つオブジェクトの情報スキーマを表示する権限は常にあります。
Konerak 2010

@Konerakああ、十分に真実です-私は答えを訂正します。余談ですが、人々が正しい権限を持っている場合、information_schemaからの選択が機能しないバグをいくつか見ました。
TehShrike 2010

15
SELECT * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db name' AND ENGINE != 'InnoDB'

注意点は、INFORMATION_SCHEMAのデータがキャッシュされることだけです。したがって、指定したステートメントの前にFLUSH TABLESを使用することをお勧めします
OMG Ponies 2010

DB内のInnoDBテーブルの数を数えるのに役立ちます。
anon30 2015年

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.