Como saber o mecanismo de armazenamento usado de um banco de dados?


12

Anteriormente, em todos os bancos de dados criados, eu uso:

mysql -u root -p
CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_bin;
GRANT ALL ON dbname.* TO 'dbuser'@'localhost';

e depois use o banco de dados sem pensar no MyISAM ou no InnoDB

Como saber o mecanismo de armazenamento usado de um banco de dados?

Respostas:


13

Você pode verificar por tabela assim:

USE <database>;
SHOW TABLE STATUS\G

você obterá uma saída ao longo destas linhas:

root@localhost/database> show table status\G
*************************** 1. row ***************************
           Name: tablename
         Engine: MyISAM
        Version: 10
     Row_format: Fixed
           Rows: 101
 Avg_row_length: 70
    Data_length: 7070
Max_data_length: 19703248369745919
   Index_length: 2048
      Data_free: 0
 Auto_increment: 1004
    Create_time: 2009-12-07 20:15:53
    Update_time: 2010-11-10 21:55:01
     Check_time: NULL
      Collation: latin1_swedish_ci
       Checksum: NULL
 Create_options: 
        Comment: 

de alguma maneira você sabe fazer todas as tabelas em um banco de dados (além de escrever um script SHOW TABLEpara cada tabela no banco de dados)?
voretaq7

2
@ voretaq7 o "SHOW TABLE STATUS" mostra todas as tabelas por padrão.
Coops

cool - Eu sou um postgres cara assim todo este material MySQL e vários mecanismos de armazenamento é estranho para mim :-)
voretaq7

5

Use o comando 'show engine' para visualizar o mecanismo padrão ativo

Adicione default-storage-engine = InnoDB na seção [mysqld] do arquivo my.cnf para que o mecanismo padrão esteja ativo.

Use o comando 'show create table table_name' para visualizar o mecanismo padrão na tabela.


SHOW ENGINEdá-me o erro 1064 (42000).
Mstrap

1
show engines;
W00t

4

Esta consulta lista todas as tabelas do InnoDB e seus bancos de dados no MySQL:

SELECT table_name, table_schema 
FROM information_schema.tables 
WHERE engine = 'InnoDB';

Você também pode listar todas as tabelas e seus mecanismos de armazenamento:

SELECT table_name, table_schema, engine
FROM information_schema.tables;

Eu tentei a segunda consulta - eu recebo o erro: ERROR 1146 (42S02): Table 'information_scheme.tables' doesn't exist (no MySQL 5.6.37)
nnyby

1

Para obter o nome do mecanismo para uma tabela específica

use <database_name>
show table status like '<table_name>';

Para mudar o mecanismo

alter table <table_name> engine <engine_name>;
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.