Como posso verificar MySQL tipo de motor para uma tabela específica?
Pergunta
banco de dados MySQL Meu contém várias tabelas usando diferentes mecanismos de armazenamento (Especificamente MYISAM e innodb). Como posso descobrir quais tabelas são usando o que motor?
Solução
SHOW TABLE STATUS WHERE Name = 'xxx'
Isto lhe dará (entre outras coisas) uma coluna Engine
, que é o que você quer.
Outras dicas
Para mostrar uma lista de todas as tabelas em um banco de dados e seus motores, use esta consulta SQL:
SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname';
Substituir dbname
com seu nome do banco de dados.
SHOW CREATE TABLE <tablename>;
Menos parseable mas mais legível do que SHOW TABLE STATUS
.
ou apenas
show table status;
apenas que este irá listar todas as tabelas em seu banco de dados.
Um pouco de tweak para a resposta de Jocker (que eu ia postar como um comentário, mas eu não tenho karma suficiente ainda):
SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;
Este MySQL exclui vistas a partir da lista, que não têm um motor.
SHOW CREATE TABLE <tablename>\G
irá formatá-lo muito mais agradável em comparação com a saída do
SHOW CREATE TABLE <tablename>;
O truque \G
também é útil para se lembrar de muitas outras consultas / comandos.
mysqlshow -i <database_name>
mostrará a informação para todas as tabelas de um banco de dados específico.
mysqlshow -i <database_name> <table_name>
irá fazê-lo apenas para uma tabela específica.
Se você estiver usando o MySQL Workbench, você pode botão direito do mouse na tabela e selecione 'alter table'.
Nessa janela você pode ver o seu motor de mesa e também alterá-lo.
Se você é um usuário Linux:
Para mostrar os motores para todas as tabelas para todos os bancos de dados em um servidor MySQL, sem tabelas 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)
Você pode amar isso, se você estiver em linux, pelo menos.
abrirá todas as informações para todas as tabelas no less
, pressione -S
para cortar linhas excessivamente longas.
Exemplo de saída:
--------------------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
.
.
.
No entanto, de outra forma, talvez o mais curto para obter o status de um conjunto único ou combinado de tabelas:
SHOW TABLE STATUS LIKE 'table';
Você pode então usar operadores como, por exemplo:
SHOW TABLE STATUS LIKE 'field_data_%';
ir para a base de dados information_schema lá você vai encontrar a tabela 'mesas', em seguida, selecione-o;
Mysql> uso information_schema; Mysql> select table_name, motor de tabelas;
Se você é um GUI cara e só quero encontrá-lo em O phpMyAdmin , do que escolher a mesa de sua escolha e cabeça sobre a guia Operations
>> Table options
>> Storage Engine
.
Você pode mesmo mudar-lo de lá usando o drop-down lista de opções.
PS: Este guia é baseado na versão 4.8 do phpMyAdmin. Não podemos garantir o mesmo caminho para versões muito mais antigas.