¿Cómo saber el motor de almacenamiento utilizado de una base de datos?


12

Anteriormente, en cada base de datos creada, uso:

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

y luego use la base de datos sin pensar en MyISAM o InnoDB

¿Cómo saber el motor de almacenamiento utilizado de una base de datos?

Respuestas:


13

Puede marcar por tabla de esta manera:

USE <database>;
SHOW TABLE STATUS\G

obtendrá una salida a lo largo de estas líneas:

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 alguna manera sabes hacer todas las tablas en un DB (además de escribir un script SHOW TABLEpara cada tabla en el DB)?
voretaq7

2
@ voretaq7 el "SHOW TABLE STATUS" muestra todas las tablas de forma predeterminada.
Coops

cool - Soy un tipo tan postgres todo esto MySQL y múltiples motores de almacenamiento es extraño para mí :-)
voretaq7

5

Use el comando 'show engine' para ver el motor predeterminado activo

Agregue default-storage-engine = InnoDB en la sección [mysqld] del archivo my.cnf para que el motor predeterminado esté activo.

Use el comando 'show create table table_name' para ver el motor predeterminado en la tabla.


SHOW ENGINEme da ERROR 1064 (42000).
mstrap

1
show engines;
w00t

4

Esta consulta enumera todas las tablas de InnoDB y sus bases de datos en MySQL:

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

También puede enumerar todas las tablas y sus motores de almacenamiento:

SELECT table_name, table_schema, engine
FROM information_schema.tables;

Intenté la segunda consulta - me sale el error: ERROR 1146 (42S02): Table 'information_scheme.tables' doesn't exist (en MySQL 5.6.37)
nnyby

1

Para obtener el nombre del motor para una tabla específica

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

Para cambiar de motor

alter table <table_name> engine <engine_name>;
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.