Meu banco de dados MySQL contém várias tabelas usando diferentes mecanismos de armazenamento (especificamente myisam e innodb). Como posso descobrir quais tabelas estão usando qual mecanismo?
Meu banco de dados MySQL contém várias tabelas usando diferentes mecanismos de armazenamento (especificamente myisam e innodb). Como posso descobrir quais tabelas estão usando qual mecanismo?
Respostas:
SHOW TABLE STATUS WHERE Name = 'xxx'
Isso fornecerá a você (entre outras coisas) uma Engine
coluna, que é o que você deseja.
show full columns from t1
?
Para mostrar uma lista de todas as tabelas em um banco de dados e seus mecanismos, use esta consulta SQL:
SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname';
Substitua dbname
pelo nome do seu banco de dados.
SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<database_name>' AND TABLE_NAME = '<table_name>'
COUNT(*)
e GROUP BY
.
ou apenas
show table status;
apenas isso listará todas as tabelas no seu banco de dados.
Um pouco da resposta de Jocker (eu postaria como um comentário, mas ainda não tenho karma suficiente):
SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;
Isso exclui as visualizações MySQL da lista, que não possuem um mecanismo.
mysqlshow -i <database_name>
mostrará as informações para todas as tabelas de um banco de dados específico.
mysqlshow -i <database_name> <table_name>
fará isso apenas para uma tabela específica.
Outra maneira, talvez a mais curta para obter o status de um único ou conjunto de tabelas correspondente:
SHOW TABLE STATUS LIKE 'table';
Você pode usar os operadores LIKE, por exemplo:
SHOW TABLE STATUS LIKE 'field_data_%';
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 no Linux, pelo menos.
Irá abrir todas as informações para todas as tabelas 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
.
.
.
vá para o banco de dados information_schema, você encontrará a tabela 'tables' e a seleciona;
Mysql> use information_schema; Mysql> selecione nome_da_tabela, mecanismo das tabelas;
Se você é um usuário de GUI e deseja apenas encontrá-lo no PhpMyAdmin , escolha a tabela de sua preferência e vá para a Operations
guia >> Table options
>> Storage Engine
. Você pode até mudar a partir daí usando a lista de opções suspensa.
PS: Este guia é baseado na versão 4.8 do PhpMyAdmin. Não é possível garantir o mesmo caminho para versões muito mais antigas.