MySQLでInnoDBストレージエンジンを使用しているすべてのテーブルを確認する方法
InnoDBエンジンのテーブル一覧を取得するSQL
MySQLでInnoDBストレージエンジンを使用しているすべてのテーブル名を確認するには、information_schema.TABLES を参照します。このシステムビューには、データベース(スキーマ)名、テーブル名、使用中のストレージエンジンなどのメタデータが格納されており、ENGINE列の値で絞り込むことで目的のテーブルだけを抽出できます。
以下のクエリでは、ENGINEが「InnoDB」であるテーブルを取得し、さらに NOT IN 条件を使って mysql・information_schema・performance_schema といったシステムスキーマを除外しています。
mysql> SELECT TABLE_SCHEMA AS DATABASENAME,
-> TABLE_NAME AS AllTABLENAME,
-> ENGINE AS ENGINETYPE
-> FROM information_schema.TABLES
-> WHERE ENGINE = 'InnoDB'
-> AND TABLE_SCHEMA NOT IN ('mysql','information_schema','performance_schema');実行結果の例
上記のクエリを実行すると、次のような結果が得られます(ここでは出力の一部を抜粋して掲載しています)。
+--------------+----------------+------------+ | DATABASENAME | AllTABLENAME | ENGINETYPE | +--------------+----------------+------------+ | sys | sys_config | InnoDB | | business | mytable | InnoDB | | business | primarytable | InnoDB | | business | tblstudent | InnoDB | | business | modifydatatype | InnoDB | | business | nulldemo | InnoDB | | business | groupdemo | InnoDB | | sample | mytable | InnoDB | | sample | yourtable | InnoDB | | education | university | InnoDB | | education | student | InnoDB | | test | destination | InnoDB | +--------------+----------------+------------+ 194 rows in set (0.01 sec)
この環境では、business・sample・education・test・sys の各スキーマに属する合計194件のInnoDBテーブルが検出されました。実際の出力では、各テーブルの行がこの形式でずらっと並びます。
補足:特定のデータベースだけを調べたい場合
対象のデータベースが決まっている場合は、SHOW TABLE STATUS を使うとより手軽に確認できます。
mysql> SHOW TABLE STATUS FROM business WHERE Engine = 'InnoDB';
また、単一のテーブルについてストレージエンジンを調べたいときは、次のように条件を絞り込むのが便利です。
SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'business' AND TABLE_NAME = 'mytable';
まとめ
information_schema.TABLES を参照すれば、サーバー全体からInnoDBを使用しているテーブルを簡単に一覧化できます。MyISAMなど他のエンジンからInnoDBへの移行状況をチェックしたい場合や、トランザクション対応テーブルの棚卸しを行いたい場合にぜひ活用してください。
-
MySQLでInnoDBをインストールまたは有効化する方法
MySQLでInnoDBストレージエンジンを有効にするには、設定ファイルmy.ini(Linux環境の場合はmy.cnf)を編集する必要があります。MySQL 8以降ではInnoDBがデフォルトなお、MySQL 8.0以降では、デフォルトのストレージエンジンとしてInnoDBが標準で採用されているため、通常は特別な設定を行わなくてもInnoDBを使用できます。現在の設定はmy.iniファイルで確認しましょう。デフォルトストレージエンジンを明示的に指定したい場合は、設定ファイルに以下のように記述します。[mysqld]default-storage-engine=InnoDBまた、サーバー側で現
-
MySQLで特定のカラム名を持つテーブルを検索する方法
MySQLで特定のカラム名(列名)を持つテーブルを探したい場合は、システムビューである information_schema.columns を利用します。このビューにはデータベース内のすべてのテーブルとカラムの情報が格納されているため、条件を指定して検索するだけで、目的のカラムを持つテーブルを簡単に特定できます。 基本構文 カラム名からテーブル名を検索する際の基本的な構文は以下の通りです。 select distinct table_name from information_schema.columns where column_name like %yourSearchValue% a