Как посмотреть тип движка у таблиц в MySQL

Очень часто бывает необходимо посмотреть тип движка у таблицы в MySQL.
Как это сделать для 1 таблицы и для всех таблиц в нужной базе данных? Читаем ниже.

Самый простой способ узнать тип движка у таблицы — это вызвать ‘show create table <имя_таблицы>‘.

mysql> use mysql;
mysql> show create table plugin;
| plugin | CREATE TABLE `plugin` (
  `name` varchar(64) NOT NULL DEFAULT '',
  `dl` varchar(128) NOT NULL DEFAULT '',
  PRIMARY KEY (`name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='MySQL plugins' |

и в строке ENGINE мы видим, что у таблицы plugin тип движка MyISAM.

На самом деле есть способ еще проще — это воспользоваться утилитой mysqlshow.

Посмотрим информацию о таблице plugin из БД mysql:

# mysqlshow -u root -p -i mysql plugin
Database: mysql  Wildcard: plugin
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------------+
| 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 | Collation       | Checksum | Create_options | Comment       |
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------------+
| plugin | MyISAM | 10      | Dynamic    | 4    | 51             | 204         | 281474976710655 | 2048         | 0         |                | 2017-12-10 23:37:48 | 2017-12-10 23:37:48 |            | utf8_general_ci |          |                | MySQL plugins |
+--------+--------+---------+------------+------+----------------+-------------+-----------------+--------------+-----------+----------------+---------------------+---------------------+------------+-----------------+----------+----------------+---------------+


Информации довольно много и она достаточно неудобно представлена (много колонок), но можно увидеть поле Engine - это то, что нам нужно.

Если же нужно посмотреть информацию в более удобном виде то можно выполнить sql-запрос:


mysql> use mysql;
mysql> SELECT TABLE_NAME, ENGINE, ROW_FORMAT,TABLE_ROWS,DATA_LENGTH,INDEX_LENGTH FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'mysql' ORDER BY ENGINE asc;
+---------------------------+--------+------------+------------+-------------+--------------+
| TABLE_NAME                | ENGINE | ROW_FORMAT | TABLE_ROWS | DATA_LENGTH | INDEX_LENGTH |
+---------------------------+--------+------------+------------+-------------+--------------+
| general_log               | CSV    | Dynamic    |          2 |           0 |            0 |
| slow_log                  | CSV    | Dynamic    |          2 |           0 |            0 |
| innodb_index_stats        | InnoDB | Compact    |      29542 |     5767168 |            0 |
| innodb_table_stats        | InnoDB | Compact    |       3057 |      425984 |            0 |
| slave_master_info         | InnoDB | Compact    |          0 |       16384 |            0 |
| slave_relay_log_info      | InnoDB | Compact    |          0 |       16384 |            0 |
| slave_worker_info         | InnoDB | Compact    |          0 |       16384 |            0 |
| db                        | MyISAM | Fixed      |        148 |       65560 |        13312 |
| help_topic                | MyISAM | Dynamic    |        533 |      510552 |        21504 |
| proxies_priv              | MyISAM | Fixed      |          2 |        1386 |         5120 |
| time_zone                 | MyISAM | Fixed      |          0 |           0 |         1024 |
| event                     | MyISAM | Dynamic    |          0 |           0 |         2048 |
| servers                   | MyISAM | Fixed      |          0 |           0 |         1024 |
| time_zone_leap_second     | MyISAM | Fixed      |          0 |           0 |         1024 |
| func                      | MyISAM | Fixed      |          3 |        1737 |         2048 |
| time_zone_name            | MyISAM | Fixed      |          0 |           0 |         1024 |
| ndb_binlog_index          | MyISAM | Dynamic    |          0 |           0 |         1024 |
| time_zone_transition      | MyISAM | Fixed      |          0 |           0 |         1024 |
| help_category             | MyISAM | Dynamic    |         40 |        1120 |         3072 |
| plugin                    | MyISAM | Dynamic    |          4 |         204 |         2048 |
| time_zone_transition_type | MyISAM | Fixed      |          0 |           0 |         1024 |
| help_keyword              | MyISAM | Fixed      |        485 |       95545 |        17408 |
| proc                      | MyISAM | Dynamic    |          0 |        1200 |         4096 |
| user                      | MyISAM | Dynamic    |        160 |       19620 |         6144 |
| columns_priv              | MyISAM | Fixed      |          0 |           0 |         4096 |
| help_relation             | MyISAM | Fixed      |       1090 |        9810 |        20480 |
| procs_priv                | MyISAM | Fixed      |          0 |           0 |         4096 |
| tables_priv               | MyISAM | Fixed      |          7 |        5957 |         8192 |
+---------------------------+--------+------------+------------+-------------+--------------+
28 rows in set (0.00 sec)

Колонка ENGINE - это тип движка у таблицы;
Колонка ROW_FORMAT - это формат строк таблицы;
Колонка TABLE_ROWS - это количества записей в таблице;
Колонка DATA_LENGTH - это размер данных в таблице в байтах;
Колонка INDEX_LENGTH - это размер индекса в таблице в байтах;

На этом все, до скорых встреч. Если у Вас возникли вопросы или Вы хотите чтобы я помог Вам, то Вы всегда можете связаться со мной разными доступными способами.