特定のテーブルのMySQLエンジンタイプを確認するにはどうすればよいですか?


391

私のMySQLデータベースには、さまざまなストレージエンジン(具体的にはmyisamとinnodb)を使用するいくつかのテーブルが含まれています。どのテーブルがどのエンジンを使用しているかを確認するにはどうすればよいですか?

回答:


507

SHOW TABLE STATUS WHERE Name = 'xxx'

これにより、(特に)Engine列が表示され、必要な列になります。


4
テーブルが破損している場合は、単にEngine = NULLと表示され、テーブルを修復するように指示する「コメント」があります。ただし、テーブルを修復する方法を知る前に、エンジンを知る必要があると思います(正直に言うと、それほど遠くまではわかりません)。したがって、以下の@Jockerのコメントは、はるかに役に立ちました。
harperville 2013

@Greg、これまたはJockerのソリューションを使用する必要がありますか?
Pacerier 2015

@Pacerier-どちらも正常に動作します。違いは、このソリューションは1つのテーブルの情報を提供するのに対し、Jockerのソリューションはデータベース内のすべてのテーブルのエンジンタイプを示します(少し読みやすくなります)。
kramer65 2016年

@Greg、ところで、なぜエンジン情報が表示されないのshow full columns from t1ですか?
Pacerier 2017年

236

データベース内のすべてのテーブルとそのエンジンのリストを表示するには、次のSQLクエリを使用します。

SELECT TABLE_NAME,
       ENGINE
FROM   information_schema.TABLES
WHERE  TABLE_SCHEMA = 'dbname';

dbnameデータベース名に置き換えます。


3
これはすばらしいb / cで、テーブル名とエンジン以外のすべてを除外します。
トーン

1
特定のテーブルのエンジンを取得するには、使用することができます: SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<database_name>' AND TABLE_NAME = '<table_name>'
userlond

1
これにより、MySQL 5.6.37で空のセットが得られます。
nnyby 2018年

1
私はのようなものを行うことができますので、それは真のSQLは、ですので、これは良い答えであるCOUNT(*)GROUP BY
ブランドン

47
SHOW CREATE TABLE <tablename>;

解析可能性は低くなりますが、より読みやすくなりSHOW TABLE STATUSます。


41

あるいは単に

show table status;

これにより、データベース上のすべてのテーブルがリストされます。


2
@NikolaiSamteladze、選択したデータベースにテーブルがありますか?
Pacerier、2015

15

Jockerの応答を少し調整しました(コメントとして投稿しますが、カルマがまだ十分ではありません)。

SELECT TABLE_NAME, ENGINE
  FROM information_schema.TABLES
 WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;

これにより、エンジンを持たないMySQLビューがリストから除外されます。


9
SHOW CREATE TABLE <tablename>\G

の出力に比べてはるかにうまくフォーマットされます

SHOW CREATE TABLE <tablename>;

この\Gトリックは、他の多くのクエリ/コマンドでも覚えておくと便利です。


1
\ Gハックはmysqlのcliの下でのみ
gaRex

7
mysqlshow -i <database_name>

特定のデータベースのすべてのテーブルの情報を表示します。

mysqlshow -i <database_name> <table_name> 

特定のテーブルに対してのみそうします。


1
すべてのテーブルのエンジンが表示されるため、これは質問の答えにはなりません。質問の開始者は、特定のテーブルに関する情報を求めていました。
タス通信

4

database_nameからテーブルのステータスを表示します。

上記のデータベースのすべてのテーブルがリストされます。
出力例

mysql dbのサンプル出力

name = your_desired_table_nameであるテーブルのステータスを表示します。

上記のテーブルで使用されているストレージエンジンが表示されます。


3

MySQL Workbenchを使用している場合は、テーブルを右クリックして[alter table]を選択できます。

そのウィンドウで、テーブルエンジンを確認して変更することもできます。


2

さらに別の方法では、単一または一致するテーブルのセットのステータスを取得するのにおそらく最短です。

SHOW TABLE STATUS LIKE 'table';

次に、LIKE演算子を使用できます。

SHOW TABLE STATUS LIKE 'field_data_%';

2

Linuxユーザーの場合:

テーブルなしで、MySQLサーバ上のすべてのデータベースのすべてのテーブルのためのエンジンを表示するにはinformation_schemamysqlperformance_schema

less < <({ for i in $(mysql -e "show databases;" | cat | grep -v -e Database-e information_schema -e mysql -e performance_schema); do echo "--------------------$i--------------------";  mysql -e "use $i; show table status;"; done } | column -t)

少なくともLinuxを使用している場合は、これが好きかもしれません。

ですべてのテーブルのすべての情報を開きます。less押す-Sと、過度に長い行が切り取られます。

出力例:

--------------------information_schema--------------------
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  C
CHARACTER_SETS                                              MEMORY              10       Fixed       NULL   384             0            16434816            0             0          NULL            2015-07-13   15:48:45     NULL        N
COLLATIONS                                                  MEMORY              10       Fixed       NULL   231             0            16704765            0             0          NULL            2015-07-13   15:48:45     NULL        N
COLLATION_CHARACTER_SET_APPLICABILITY                       MEMORY              10       Fixed       NULL   195             0            16357770            0             0          NULL            2015-07-13   15:48:45     NULL        N
COLUMNS                                                     MyISAM              10       Dynamic     NULL   0               0            281474976710655     1024          0          NULL            2015-07-13   15:48:45     2015-07-13  1
COLUMN_PRIVILEGES                                           MEMORY              10       Fixed       NULL   2565            0            16757145            0             0          NULL            2015-07-13   15:48:45     NULL        N
ENGINES                                                     MEMORY              10       Fixed       NULL   490             0            16574250            0             0          NULL            2015-07-13   15:48:45     NULL        N
EVENTS                                                      MyISAM              10       Dynamic     NULL   0               0            281474976710655     1024          0          NULL            2015-07-13   15:48:45     2015-07-13  1
FILES                                                       MEMORY              10       Fixed       NULL   2677            0            16758020            0             0          NULL            2015-07-13   15:48:45     NULL        N
GLOBAL_STATUS                                               MEMORY              10       Fixed       NULL   3268            0            16755036            0             0          NULL            2015-07-13   15:48:45     NULL        N
GLOBAL_VARIABLES                                            MEMORY              10       Fixed       NULL   3268            0            16755036            0             0          NULL            2015-07-13   15:48:45     NULL        N
KEY_COLUMN_USAGE                                            MEMORY              10       Fixed       NULL   4637            0            16762755            0 

.
.
.

0

information_schemaデータベースに移動して「テーブル」テーブルを見つけて選択します。

Mysql> use information_schema; Mysql>テーブルからtable_name、engineを選択します。


0

GUIの専門家で、PhpMyAdminでそれを見つけたいだけの場合は、お好みのテーブルを選択して、Operationsタブ>> Table options>>に目を通しますStorage Engine。ドロップダウンオプションリストを使用して、そこから変更することもできます。

PS:このガイドは、PhpMyAdminのバージョン4.8に基づいています。非常に古いバージョンでは同じパスを保証できません。

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