특정 테이블의 MySQL 엔진 유형을 어떻게 확인할 수 있습니까?


391

내 MySQL 데이터베이스에는 다른 스토리지 엔진 (특히 myisam 및 innodb)을 사용하는 여러 테이블이 있습니다. 어떤 엔진이 어떤 엔진을 사용하고 있는지 어떻게 알 수 있습니까?

답변:


507

SHOW TABLE STATUS WHERE Name = 'xxx'

이것은 당신에게 (다른 것들 중에서) Engine당신에게 원하는 열 을 줄 것 입니다.


4
내 테이블이 손상된 경우 간단히 Engine = NULL을 표시하고 테이블을 복구하라는 "설명"이 표시됩니다. 그러나 테이블을 수리하는 방법을 알기 전에 엔진을 알아야한다고 생각합니다 (정직하게 말하지는 못했습니다.) 따라서 아래 @Jocker의 의견이 나에게 훨씬 도움이되었습니다.
harperville

@Greg, 이거 아니면 Jocker의 솔루션을 사용해야합니까?
Pacerier

@Pacerier-둘 다 잘 작동합니다. 차이점은이 솔루션은 하나의 테이블에 대한 정보를 제공하지만 Jocker의 솔루션은 데이터베이스의 모든 테이블에 대한 엔진 유형을 보여줍니다 (좀 더 읽기 쉽습니다).
kramer65

@Greg, Btw 왜 우리가 할 때 엔진 정보가 나타나지 show full columns from t1않습니까?
Pacerier

236

데이터베이스 및 엔진의 모든 테이블 목록을 표시하려면 다음 SQL 쿼리를 사용하십시오.

SELECT TABLE_NAME,
       ENGINE
FROM   information_schema.TABLES
WHERE  TABLE_SCHEMA = 'dbname';

교체 dbname데이터베이스 이름.


3
이것은 테이블 이름과 엔진을 제외한 모든 것을 필터링하는 훌륭한 B / C입니다.
Tone

1
특정 테이블의 엔진을 얻으려면 다음을 사용하십시오. SELECT ENGINE FROM information_schema.TABLES WHERE TABLE_SCHEMA = '<database_name>' AND TABLE_NAME = '<table_name>'
userlond

1
이것은 MySQL 5.6.37에서 빈 세트를 제공합니다.
nnyby

1
이것은 진정한 SQL이기 때문에 더 나은 대답이므로 COUNT(*)and과 같은 일을 할 수 있습니다 GROUP BY.
Brandon

47
SHOW CREATE TABLE <tablename>;

보다 구문 분석이 가능하지만 읽기가 쉽습니다 SHOW TABLE STATUS.


41

아니면 그냥

show table status;

데이터베이스의 모든 테이블을 표시합니다.


2
@NikolaiSamteladze, 선택한 DB에 테이블이 있습니까?
Pacerier

15

Jocker의 답변을 약간 수정했습니다 (댓글로 게시하지만 아직 업장이 충분하지 않습니다).

SELECT TABLE_NAME, ENGINE
  FROM information_schema.TABLES
 WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;

엔진이없는 목록에서 MySQL 뷰가 제외됩니다.


9
SHOW CREATE TABLE <tablename>\G

의 출력에 비해 훨씬 더 좋은 형식입니다

SHOW CREATE TABLE <tablename>;

\G트릭은 또한 다른 많은 쿼리 / 명령을 기억하는 데 유용합니다.


1
\ G 해킹은 CLI mysql을 받고있다
gaRex

7
mysqlshow -i <database_name>

특정 데이터베이스의 모든 테이블에 대한 정보가 표시됩니다.

mysqlshow -i <database_name> <table_name> 

특정 테이블에 대해서만 그렇게 할 것입니다.


1
모든 테이블의 엔진을 표시하기 때문에 질문에 대답하지 않습니다. 질문의 개시자는 특정 테이블에 관한 정보를 찾고있었습니다.
Tass

4

database_name에서 테이블 상태를 표시합니다.

언급 된 데이터베이스의 모든 테이블이 나열됩니다.
출력 예

mysql db의 샘플 출력

name = your_desired_table_name 인 테이블 상태를 표시하십시오.

언급 된 표에서 사용 된 스토리지 엔진이 표시됩니다.


3

MySQL Workbench를 사용하는 경우 테이블을 마우스 오른쪽 단추로 클릭하고 'alter table'을 선택할 수 있습니다.

이 창에서 테이블 엔진을보고 변경할 수도 있습니다.


2

또 다른 방법은 단일 또는 일치하는 테이블 세트의 상태를 얻는 데 가장 짧은 방법입니다.

SHOW TABLE STATUS LIKE 'table';

그런 다음 LIKE 연산자를 사용할 수 있습니다.

SHOW TABLE STATUS LIKE 'field_data_%';

2

당신이 리눅스 사용자라면 :

테이블없이, MySQL 서버의 모든 데이터베이스의 모든 테이블에 대한 엔진을 표시하려면 information_schema, mysql, performance_schema:

less < <({ for i in $(mysql -e "show databases;" | cat | grep -v -e Database-e information_schema -e mysql -e performance_schema); do echo "--------------------$i--------------------";  mysql -e "use $i; show table status;"; done } | column -t)

적어도 리눅스를 사용한다면 이것을 좋아할 것입니다.

의 모든 테이블에 대한 모든 정보 를 열고을 less눌러 -S지나치게 긴 줄을 자릅니다.

출력 예 :

--------------------information_schema--------------------
Name                                                        Engine              Version  Row_format  Rows   Avg_row_length  Data_length  Max_data_length     Index_length  Data_free  Auto_increment  Create_time  Update_time  Check_time  C
CHARACTER_SETS                                              MEMORY              10       Fixed       NULL   384             0            16434816            0             0          NULL            2015-07-13   15:48:45     NULL        N
COLLATIONS                                                  MEMORY              10       Fixed       NULL   231             0            16704765            0             0          NULL            2015-07-13   15:48:45     NULL        N
COLLATION_CHARACTER_SET_APPLICABILITY                       MEMORY              10       Fixed       NULL   195             0            16357770            0             0          NULL            2015-07-13   15:48:45     NULL        N
COLUMNS                                                     MyISAM              10       Dynamic     NULL   0               0            281474976710655     1024          0          NULL            2015-07-13   15:48:45     2015-07-13  1
COLUMN_PRIVILEGES                                           MEMORY              10       Fixed       NULL   2565            0            16757145            0             0          NULL            2015-07-13   15:48:45     NULL        N
ENGINES                                                     MEMORY              10       Fixed       NULL   490             0            16574250            0             0          NULL            2015-07-13   15:48:45     NULL        N
EVENTS                                                      MyISAM              10       Dynamic     NULL   0               0            281474976710655     1024          0          NULL            2015-07-13   15:48:45     2015-07-13  1
FILES                                                       MEMORY              10       Fixed       NULL   2677            0            16758020            0             0          NULL            2015-07-13   15:48:45     NULL        N
GLOBAL_STATUS                                               MEMORY              10       Fixed       NULL   3268            0            16755036            0             0          NULL            2015-07-13   15:48:45     NULL        N
GLOBAL_VARIABLES                                            MEMORY              10       Fixed       NULL   3268            0            16755036            0             0          NULL            2015-07-13   15:48:45     NULL        N
KEY_COLUMN_USAGE                                            MEMORY              10       Fixed       NULL   4637            0            16762755            0 

.
.
.

0

information_schema 데이터베이스로 이동하여 'tables'테이블을 찾은 다음 선택하십시오.

MySQL> 사용 information_schema; MySQL> 테이블에서 엔진 이름을 선택하십시오.


0

GUI 사용자 이고 PhpMyAdmin 에서 찾으려면 원하는 테이블을 선택하고 Operations>> Table options>> 탭으로 이동하십시오 Storage Engine. 드롭 다운 옵션 목록을 사용하여 여기에서 변경할 수도 있습니다.

PS :이 안내서는 PhpMyAdmin 버전 4.8을 기반으로합니다. 이전 버전의 경우 동일한 경로를 보장 할 수 없습니다.

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