Как я могу проверить тип движка MySQL для определенной таблицы?
моя база данных MySQL содержит несколько таблиц, использующих различные механизмы хранения (в частности, myisam и innodb). Как я могу узнать, какие таблицы на каком двигателе?
11 ответов
SHOW TABLE STATUS WHERE Name = 'xxx'
это даст вам (среди прочего) в Engine
столбец, который вы хотите.
Показать список всех таблиц в базе данных и их двигателей, использовать этот SQL запрос:
SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname';
заменить dbname
С именем базы данных.
немного подправить ответ Джокера (я бы опубликовал комментарий, но у меня еще недостаточно кармы):
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:
показать движки для всех таблиц для всех баз данных на сервере mysql, без таблиц 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)
Вам может понравиться это, если вы находитесь на 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
.
.
.
перейдите в базу данных information_schema, там вы найдете таблицу "таблицы", затем выберите ее;
Mysql>использовать information_schema; Mysql > выберите table_name, engine из таблиц;
еще один способ, пожалуй, самый короткий, чтобы получить статус одного или подобранный набор таблиц:
SHOW TABLE STATUS LIKE 'table';
затем вы можете использовать операторы LIKE, например:
SHOW TABLE STATUS LIKE 'field_data_%';