私のMySQLデータベースには、異なるストレージエンジン(特にmyisamとinnodb)を使用しているいくつかのテーブルが含まれています。どのテーブルがどのエンジンを使用しているかを知るにはどうすればよいですか?
SHOW TABLE STATUS WHERE Name = 'xxx'
これは(とりわけ)Engine
カラムをあなたに与えるでしょう、それはあなたが望むものです。
データベース内のすべてのテーブルとそのエンジンのリストを表示するには、次のSQLクエリを使用します。
SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname';
dbname
を自分のデータベース名に置き換えます。
SHOW CREATE TABLE <tablename>;
SHOW TABLE STATUS
よりも解析は簡単ですが読みやすくなります。
あるいは単に
show table status;
データベースのすべてのテーブルがリストされるだけです。
Jockerの回答に対するちょっとした微調整(コメントとして投稿する予定だが、まだ十分なカルマがない)
SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;
これは、エンジンを持たないMySQLビューをリストから除外します。
SHOW CREATE TABLE <tablename>\G
の出力と比較してはるかにきれいにフォーマットします
SHOW CREATE TABLE <tablename>;
\G
トリックは他の多くの問い合わせやコマンドを覚えておくのにも役に立ちます。
mysqlshow -i <database_name>
特定のデータベースのすべてのテーブルに関する情報を表示します。
mysqlshow -i <database_name> <table_name>
特定のテーブルに対してのみ行います。
MySQL Workbenchを使用している場合は、テーブルを右クリックして「alter table」を選択できます。
そのウィンドウであなたはあなたのテーブルエンジンを見ることができ、またそれを変更することができます。
あなたがLinuxユーザーなら:
テーブルinformation_schema
、mysql
、performance_schema
なしで、mysqlサーバー上の全データベースの全テーブルのエンジンを表示するには:
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
.
.
.
さらに別の方法では、おそらくテーブルの単一または一致したセットのステータスを取得するための最短の方法です。
SHOW TABLE STATUS LIKE 'table';
そうすると、LIKE演算子を使うことができます。
SHOW TABLE STATUS LIKE 'field_data_%';
information_schemaデータベースに移動して、 'tables'テーブルを見つけて選択します。
MySQL> use information_schema; MySQL> select table_name、テーブルからのエンジン。
あなたがGUIの人で、それをPhpMyAdminで探したいのであれば、あなたの選んだ表と頭を選んでください。 Operations
タブ>> Table options
>> Storage Engine
の上に。ドロップダウンオプションリストを使ってそこから変更することもできます。
シモンズ:このガイドはPhpMyAdminのバージョン4.8に基づいています。非常に古いバージョンで同じパスを保証することはできません。