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

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への移行状況をチェックしたい場合や、トランザクション対応テーブルの棚卸しを行いたい場合にぜひ活用してください。

  1. MySQLでInnoDBをインストールまたは有効化する方法

    MySQLでInnoDBストレージエンジンを有効にするには、設定ファイルmy.ini(Linux環境の場合はmy.cnf)を編集する必要があります。MySQL 8以降ではInnoDBがデフォルトなお、MySQL 8.0以降では、デフォルトのストレージエンジンとしてInnoDBが標準で採用されているため、通常は特別な設定を行わなくてもInnoDBを使用できます。現在の設定はmy.iniファイルで確認しましょう。デフォルトストレージエンジンを明示的に指定したい場合は、設定ファイルに以下のように記述します。[mysqld]default-storage-engine=InnoDBまた、サーバー側で現

  2. MySQLで特定のカラム名を持つテーブルを検索する方法

    MySQLで特定のカラム名(列名)を持つテーブルを探したい場合は、システムビューである information_schema.columns を利用します。このビューにはデータベース内のすべてのテーブルとカラムの情報が格納されているため、条件を指定して検索するだけで、目的のカラムを持つテーブルを簡単に特定できます。 基本構文 カラム名からテーブル名を検索する際の基本的な構文は以下の通りです。 select distinct table_name from information_schema.columns where column_name like %yourSearchValue% a