Bagaimana cara mengetahui mesin penyimpanan yang digunakan dari suatu basis data?


13

Sebelumnya, pada setiap database yang dibuat, saya menggunakan:

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

dan kemudian menggunakan database tanpa memikirkan MyISAM atau InnoDB

Bagaimana cara mengetahui mesin penyimpanan yang digunakan dari suatu basis data?

Jawaban:


14

Anda dapat memeriksa per-tabel seperti ini:

USE <database>;
SHOW TABLE STATUS\G

Anda akan mendapatkan output di sepanjang baris ini:

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: 

cara Anda tahu untuk melakukan semua tabel dalam DB (selain menulis skrip SHOW TABLEuntuk setiap tabel dalam DB)?
voretaq7

2
@ voretaq7 "SHOW TABLE STATUS" memang menampilkan semua tabel secara default.
Coops

keren - Saya seorang pria postgres sehingga semua hal ini MySQL dan beberapa mesin penyimpanan aneh bagi saya :-)
voretaq7

5

Gunakan perintah 'show engine' untuk melihat engine default aktif

Tambahkan default-storage-engine = InnoDB di bagian [mysqld] dari file my.cnf agar mesin default menjadi aktif.

Gunakan perintah 'show create table table_name' untuk melihat engine default di tabel.


SHOW ENGINEmemberi saya KESALAHAN 1064 (42000).
mstrap

1
show engines;
w00t

4

Kueri ini mencantumkan semua tabel InnoDB dan databasenya di MySQL:

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

Anda juga dapat membuat daftar semua tabel dan mesin penyimpanannya:

SELECT table_name, table_schema, engine
FROM information_schema.tables;

Saya mencoba permintaan kedua - Saya mendapatkan kesalahan: ERROR 1146 (42S02): Table 'information_scheme.tables' doesn't exist (pada MySQL 5.6.37)
nnyby

1

Untuk mendapatkan nama mesin untuk tabel tertentu

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

Untuk mengganti mesin

alter table <table_name> engine <engine_name>;
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.