Как узнать механизм хранения базы данных?


13

Ранее для каждой созданной базы данных я использовал:

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

а затем использовать базу данных, не думая о MyISAM или InnoDB

Как узнать механизм хранения базы данных?

Ответы:


14

Вы можете проверить каждую таблицу следующим образом:

USE <database>;
SHOW TABLE STATUS\G

вы получите вывод по этим направлениям:

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: 

Вы знаете, как делать все таблицы в БД (кроме написания скрипта SHOW TABLEдля каждой таблицы в БД)?
voretaq7

2
@ voretaq7 "SHOW TABLE STATUS" показывает все таблицы по умолчанию.
Coops

круто - я парень из Postgres, так что все эти вещи с MySQL и несколькими механизмами хранения для меня странны :-)
voretaq7

5

Используйте команду «show engine» для просмотра активного механизма по умолчанию

Добавьте default-storage-engine = InnoDB в раздел [mysqld] файла my.cnf, чтобы механизм по умолчанию был активным.

Используйте команду «show create table table_name» для просмотра механизма по умолчанию в таблице.


SHOW ENGINEдает мне ОШИБКА 1064 (42000).
Mstrap

1
show engines;
w00t

4

Этот запрос перечисляет все таблицы InnoDB и их базы данных в MySQL:

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

Вы также можете перечислить все таблицы и их механизмы хранения:

SELECT table_name, table_schema, engine
FROM information_schema.tables;

Я попытался второй запрос - я получаю ошибку: ERROR 1146 (42S02): Table 'information_scheme.tables' doesn't exist (на MySQL 5.6.37)
nnyby

1

Чтобы получить имя двигателя для конкретной таблицы

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

Поменять двигатель

alter table <table_name> engine <engine_name>;
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.