Як знати механізм зберігання даних, який використовується у базі даних?


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 "СТАТУТ ТАБЛИЧНОГО СТАНУ" показує всі таблиці за замовчуванням.
Купи

круто - я хлопець у 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.