데이터베이스에 사용 된 스토리지 엔진을 아는 방법은 무엇입니까?


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: 

DB의 모든 테이블을 수행하는 방법을 알고 SHOW TABLE있습니까 (DB의 각 테이블에 대해 스크립트를 작성하는 것 외에 )?
voretaq7

2
@ voretaq7 "SHOW TABLE STATUS"는 기본적으로 모든 테이블을 보여줍니다.
Coops

쿨-나는 postgres 사람
이므로이

5

활성 기본 엔진을 보려면 'show engine'명령을 사용하십시오.

기본 엔진이 활성화되도록 my.cnf 파일의 [mysqld] 섹션에 default-storage-engine = InnoDB를 추가하십시오.

'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>;
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.