특정 테이블의 MySQL 엔진 유형을 확인하려면 어떻게해야합니까?
문제
MySQL 데이터베이스에는 다른 스토리지 엔진 (특히 MyISAM 및 InnoDB)을 사용하는 여러 테이블이 포함되어 있습니다. 어떤 엔진을 사용하고 있는지 어떻게 알 수 있습니까?
해결책
SHOW TABLE STATUS WHERE Name = 'xxx'
이것은 당신에게 (무엇보다도) Engine
당신이 원하는 열입니다.
다른 팁
데이터베이스 및 엔진의 모든 테이블 목록을 표시하려면이 SQL 쿼리를 사용하십시오.
SELECT TABLE_NAME,
ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'dbname';
바꾸다 dbname
데이터베이스 이름으로.
SHOW CREATE TABLE <tablename>;
덜 평범하지만 읽기 쉬운 것 SHOW TABLE STATUS
.
아니면 그냥
show table status;
이것은 데이터베이스의 모든 테이블을 llist다는 것입니다.
Jocker의 응답을 조정하는 데 약간의 조정 (의견으로 게시 할 것이지만 아직 업장이 충분하지 않음) :
SELECT TABLE_NAME, ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database' AND ENGINE IS NOT NULL;
이것은 엔진이없는 목록에서 MySQL보기를 제외합니다.
SHOW CREATE TABLE <tablename>\G
출력에 비해 훨씬 더 멋진 형식
SHOW CREATE TABLE <tablename>;
그만큼 \G
트릭은 또한 다른 많은 쿼리/명령에 대해 기억하는 데 유용합니다.
mysqlshow -i <database_name>
특정 데이터베이스의 모든 테이블에 대한 정보가 표시됩니다.
mysqlshow -i <database_name> <table_name>
특정 테이블을 위해서만 그렇게합니다.
MySQL 워크 벤치를 사용하는 경우 테이블을 마우스 오른쪽 버튼으로 클릭하고 'Alter Table'을 선택할 수 있습니다.
그 창에서 테이블 엔진을보고 변경할 수도 있습니다.
Linux 사용자 인 경우 :
테이블이없는 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)
적어도 Linux에 있다면 이것을 좋아할 것입니다.
모든 테이블에 대한 모든 정보를 엽니 다 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
.
.
.
또 다른 방법, 아마도 단일 또는 일치하는 테이블 세트의 상태를 얻기가 가장 짧은 방법 :
SHOW TABLE STATUS LIKE 'table';
그런 다음 예를 들어 연산자처럼 사용할 수 있습니다.
SHOW TABLE STATUS LIKE 'field_data_%';
information_schema 데이터베이스로 이동하여 '테이블'테이블을 찾은 다음 선택할 수 있습니다.
mySQL> 사용 information_schema; mysql> 선택 테이블 _ame, 테이블에서 엔진;
당신이 구이 가이와 그냥 찾고 싶어 phpmyadmin, 당신이 선택한 테이블을 선택하고 Operations
탭 >> Table options
>> Storage Engine
. 드롭 다운 옵션 목록을 사용하여 변경할 수도 있습니다.
추신 :이 안내서는 Phpmyadmin의 버전 4.8을 기반으로합니다. 매우 오래된 버전의 경우 동일한 경로를 보장 할 수 없습니다.