ChatGPT解决这个技术问题 Extra ChatGPT

How can I check MySQL engine type for a specific table?

My MySQL database contains several tables using different storage engines (specifically myisam and innodb). How can I find out which tables are using which engine?


G
Giacomo1968
SHOW TABLE STATUS WHERE Name = 'xxx'

This will give you (among other things) an Engine column, which is what you want.


If my table is damaged, it's simply shows Engine=NULL and has a "Comment" telling me to repair the table. However, before I know how to repair the table, I'm guessing I need to know the engine (I haven't gotten that far to be honest.) Therefore, @Jocker's comment below was much more helpful to me.
@Greg, Should we use this or Jocker's solution?
@Pacerier - Both work fine. The difference is that this solution gives the info for one table, while Jocker's solution shows the engine type for all tables in a database (while being a bit more readable as well).
@Greg, Btw why doesn't engine info show up when we do show full columns from t1?
a
aalaap

To show a list of all the tables in a database and their engines, use this SQL query:

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

Replace dbname with your database name.


This is great b/c it filters out everything but tablename and engine.
To get engine of specific table, you may use: SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<database_name>' AND TABLE_NAME = '<table_name>'
This gives me an empty set on MySQL 5.6.37.
This is a better answer because it's true SQL, so I can do things like COUNT(*) and GROUP BY.
P
Pacerier
SHOW CREATE TABLE <tablename>;

Less parseable but more readable than SHOW TABLE STATUS.


2
2 revs, 2 users 73% MArk Guadalupe

Or just run this:

show table status;

This will list all tables and related details on your database.


@NikolaiSamteladze, Do have you tables in the selected db?
the best and easiest way!
A
Alexis Wilke

Bit of a tweak to Jocker's response (I would post as a comment, but I don't have enough karma yet):

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

This excludes MySQL views from the list, which don't have an engine.


N
Nicholas
SHOW CREATE TABLE <tablename>\G

will format it much nicer compared to the output of

SHOW CREATE TABLE <tablename>;

The \G trick is also useful to remember for many other queries/commands.


\G hack is only under cli mysql
Great solution thanks
Z
Zahid

show table status from database_name;

It will list all tables from the mentioned database. Example output

https://i.stack.imgur.com/8yVDn.png

show table status where name=your_desired_table_name;

It will show the storage engine used by the mentioned table.


s
sjas
mysqlshow -i <database_name>

will show the info for all tables of a specific database.

mysqlshow -i <database_name> <table_name> 

will do so just for a specific table.


T
T30

If you're using MySQL Workbench, right-click a table and select alter table.

In that window you can see your table Engine and also change it.

https://i.stack.imgur.com/zc2Nx.png


D
David Thomas

Yet another way, perhaps the shortest to get status of a single or matched set of tables:

SHOW TABLE STATUS LIKE 'table';

You can then use LIKE operators for example:

SHOW TABLE STATUS LIKE 'field_data_%';

s
sjas

If you are a linux user:

To show the engines for all tables for all databases on a mysql server, without tables information_schema, mysql, performance_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)

You might love this, if you are on linux, at least.

Will open all info for all tables in less, press -S to chop overly long lines.

Example output:

--------------------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 

.
.
.

m
mytuny

If you are a GUI guy and just want to find it in PhpMyAdmin, than pick the table of your choice and head over the Operations tab >> Table options >> Storage Engine. You can even change it from there using the drop-down options list.

PS: This guide is based on version 4.8 of PhpMyAdmin. Can't guarantee the same path for very older versions.


S
Suraj Rao

Apart from examples showed in previous entries, you can also get that from information_schema db with standard query as follows :

use information_schema;

select NAME from INNODB_TABLES where NAME like "db_name%";

h
harsha vardhan

go to information_schema database there you will find 'tables' table then select it;

Mysql>use information_schema; Mysql> select table_name,engine from tables;