特定のテーブルのMySQLエンジンタイプを確認するにはどうすればよいですか?
質問
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
より読みやすい。
または単に
テーブルの状態を表示;
データベース上のすべてのテーブルをリストするだけです。
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データベースに移動すると、「テーブル」テーブルが表示され、選択されます。
Mysql&gt; use information_schema; Mysql&gt;テーブルからtable_name、engineを選択します。
あなたが GUI の男で、 PhpMyAdmin で見つけたい場合は、選択したテーブルを選択して、 Operations
>タブ&gt;&gt; テーブルオプション
&gt;&gt; ストレージエンジン
。
ドロップダウンオプションリストを使用して、そこから変更することもできます。
PS:このガイドはPhpMyAdminのバージョン4.8に基づいています。非常に古いバージョンに対して同じパスを保証することはできません。