Woher weiß man, welche Speicher-Engine einer Datenbank verwendet wird?


11

Zuvor habe ich für jede erstellte Datenbank Folgendes verwendet:

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

und verwenden Sie dann die Datenbank, ohne an MyISAM oder InnoDB zu denken

Woher weiß man, welche Speicher-Engine einer Datenbank verwendet wird?

Antworten:


12

Sie können pro Tabelle wie folgt überprüfen:

USE <database>;
SHOW TABLE STATUS\G

Sie erhalten eine Ausgabe in dieser Richtung:

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: 

Wie können Sie alle Tabellen in einer Datenbank ausführen (außer ein Skript SHOW TABLEfür jede Tabelle in der Datenbank zu schreiben )?
voretaq7

2
@ voretaq7 Der "SHOW TABLE STATUS" zeigt standardmäßig alle Tabellen an.
Coops

cool - Ich bin ein Postgres-Typ, also ist mir all das Zeug mit MySQL und mehreren Speicher-Engines fremd :-)
voretaq7

5

Verwenden Sie den Befehl 'show engine', um die aktive Standard-Engine anzuzeigen

Fügen Sie default-storage-engine = InnoDB im Abschnitt [mysqld] der Datei my.cnf hinzu, damit die Standard-Engine aktiv ist.

Verwenden Sie den Befehl 'show create table table_name', um die Standard-Engine in der Tabelle anzuzeigen.


SHOW ENGINEgibt mir FEHLER 1064 (42000).
Mstrap

1
show engines;
w00t

4

Diese Abfrage listet alle InnoDB-Tabellen und ihre Datenbanken in MySQL auf:

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

Sie können auch alle Tabellen und ihre Speicher-Engines auflisten:

SELECT table_name, table_schema, engine
FROM information_schema.tables;

Ich habe die zweite Abfrage versucht - ich erhalte den Fehler: ERROR 1146 (42S02): Table 'information_scheme.tables' doesn't exist (unter MySQL 5.6.37)
nnyby

1

Abrufen des Motornamens für eine bestimmte Tabelle

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

Motor wechseln

alter table <table_name> engine <engine_name>;
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.