MySQLデータベースが使用しているストレージエンジンを見つけるためのコマンドがターミナルにありますか?
これはいくつかの場所で利用できます。
SHOW CREATE TABLE
出力から。mysql> SHOW CREATE TABLE guestbook.Guestbook;
+-----------+-------------------------------------------+
| Table | Create Table |
+-----------+-------------------------------------------+
| Guestbook | CREATE TABLE `Guestbook` (
`NAME` varchar(128) NOT NULL DEFAULT '',
`MESSAGE` text NOT NULL,
`TIMESTAMP` varchar(24) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1 |
+-----------+-------------------------------------------+
1 row in set (0.00 sec)
複数のテーブルのエンジンにクエリを実行する場合は、information_schema.TABLES
にもあります。
SELECT ENGINE
FROM information_schema.TABLES
WHERE
TABLE_NAME='yourtable'
AND TABLE_SCHEMA='yourdatabase';
MySQLのデータベースは複数のストレージエンジンを使用できるため、テーブルごとに確認する必要があります。最も簡単なのは
show create table yourtable;
dDLステートメントの最後にある「engine」行が何であるかを確認します。例えばengine=InnoDB
、engine=MyISAM
など...
DB内のすべてのテーブルを確認する場合:
select TABLE_NAME, ENGINE
from information_schema.TABLES
where TABLE_SCHEMA='yourdbname'
SHOW ENGINES;
mySQLデータベースがサポートするエンジンを返し、作成時に特に指定されていない限り、デフォルトのエンジンを教えてください。
これはより長い解決策ですが、information_schema
について何かを学びたい場合に役立ちます。
mysql> select table_name,engine from information_schema.tables where table_name
= 'table_name' and table_schema = 'db_name';
次のコマンドを使用できます。
mysql -u[user] -p -D[database] -e "show table status\G"| egrep "(Index|Data)_length" | awk 'BEGIN { rsum = 0 } { rsum += $2 } END { print rsum }'
SHOW TABLE STATUS WHERE Name = 'user_tbl'
mysql -u[user] -p -D[database] -e "show table status\G" | egrep "(Engine|Name)"
これにより、すべてのテーブルとそれに対応するエンジンが一覧表示されます。すべての概要を把握するのは良いことです!
これは@ yago-riveiroからの修正された回答であり、使用中のエンジンではなく、テーブルのサイズを取得する方法を示しました。また、コマンドの機能について説明することをお勧めします。