Jak poznać silnik pamięci używany w bazie danych?


13

Wcześniej w każdej utworzonej bazie danych korzystam z:

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

a następnie korzystaj z bazy danych, nie myśląc o MyISAM lub InnoDB

Jak poznać silnik pamięci używany w bazie danych?

Odpowiedzi:


14

Możesz sprawdzić tabelę w następujący sposób:

USE <database>;
SHOW TABLE STATUS\G

otrzymasz wynik według następujących linii:

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: 

w jakikolwiek sposób znasz wszystkie tabele w DB (oprócz pisania skryptu SHOW TABLEdla każdej tabeli w DB)?
voretaq7

2
@ voretaq7 „STATUS POKAŻ TABELĘ” domyślnie pokazuje wszystkie tabele.
Coops

spoko - jestem postgresowym facetem, więc wszystkie te MySQL i wiele
mechanizmów

5

Użyj polecenia „pokaż silnik”, aby wyświetlić aktywny domyślny silnik

Dodaj default-storage-engine = InnoDB w sekcji [mysqld] pliku my.cnf, aby domyślny silnik był aktywny.

Użyj polecenia „pokaż tworzenie tabeli nazwa_tabeli”, aby wyświetlić domyślny silnik w tabeli.


SHOW ENGINEdaje mi BŁĄD 1064 (42000).
mstrap

1
show engines;
w00t,

4

To zapytanie zawiera listę wszystkich tabel InnoDB i ich baz danych w MySQL:

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

Możesz także wyświetlić listę wszystkich tabel i ich mechanizmów przechowywania:

SELECT table_name, table_schema, engine
FROM information_schema.tables;

Próbowałem drugiego zapytania - ERROR 1146 (42S02): Table 'information_scheme.tables' doesn't exist pojawia się błąd: (na MySQL 5.6.37)
nnyby

1

Aby uzyskać nazwę silnika dla określonej tabeli

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

Aby zmienić silnik

alter table <table_name> engine <engine_name>;
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.