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?

Foi útil?

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_%';

Mostrar estado de tabela a partir database_name;

Ele irá listar todas as tabelas do banco de dados mencionados.
Exemplo saída

saída de amostra de banco de dados mysql

show status mesa onde name = your_desired_table_name;

Ela vai mostrar o mecanismo de armazenamento usado pela tabela mencionada.

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top