들어가며: 왜 스토리지 엔진을 확인해야 하는가?
MySQL은 다른 관계형 데이터베이스 관리 시스템(RDBMS)과 구별되는 독특한 특징이 있습니다. 바로 플러그인 방식의 스토리지 엔진(Pluggable Storage Engine) 아키텍처입니다. 이는 마치 자동차의 엔진을 교체하듯이, 필요에 따라 InnoDB, MyISAM, MEMORY 등 다양한 엔진을 선택하여 사용할 수 있다는 뜻입니다.
데이터 무결성이 중요한 트랜잭션 처리가 필요할 때는 InnoDB를, 빠른 읽기 속도나 전문 검색(Full-text Search)이 과거에 중요했던 시점에는 MyISAM을 선택하는 식입니다. 하지만 내가 운영 중인 서버가 어떤 엔진을 지원하는지, 그리고 현재 기본(Default) 엔진이 무엇인지 정확히 알지 못한다면 최적의 성능을 낼 수 없습니다. 이때 가장 기본이 되면서도 필수적인 명령어가 바로 SHOW ENGINES입니다.
이번 포스팅에서는 주니어 개발자부터 숙련된 DBA까지 모두가 알아두어야 할 SHOW ENGINES 명령어의 활용법과 해석 방법을 알아보겠습니다.
1. SHOW ENGINES 명령어의 기본 이해
SHOW ENGINES는 현재 MySQL 서버 인스턴스가 지원하는 스토리지 엔진의 목록을 조회하는 명령어입니다. 이 명령어를 실행하면 서버에 로드된 엔진의 활성화 여부와 트랜잭션 지원 여부 등을 한눈에 파악할 수 있습니다.
기본 사용법
SHOW ENGINES;
이 간단한 쿼리를 실행하면 다음과 같은 형태의 결과셋을 얻게 됩니다. (결과는 버전 및 설정에 따라 다를 수 있습니다.)
| Engine | Support | Comment | Transactions | XA | Savepoints |
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine1 | null2 | null3 | null4 |
이 표가 의미하는 바를 정확히 해석하는 것이 중요합니다. 각 컬럼의 의미를 살펴보겠습니다.5
2. 출력 결과 상세 분석6
Engine7
스토리지 엔진의 이름입니다. 우리가 흔히 아는 InnoDB, MyISAM, MEMORY 등이 여기에 표시됩니다.8
Support (가장 중요한 컬럼)9
해당 엔진을 현재 서버에서 사용할 수 있는지를 나타냅니다.101112
- YES: 엔진이 활성화되어 있으며 사용 가능합니다.131415
- DEFAULT: 엔진이 활성화되어 있으며, 테이블 생성 시 엔진을 명시하지 않으면 16이 엔진이 자동으로 선택됩니다. (매우 중요)1718
- NO: 엔진이 컴파일되지 않았거나, 비활성화된 상태입니다.1920212223
- DISABLED: 엔진이 존재하지만 설정에 의해 꺼져 있는 상태입니다.2425262728
Transactions2930313233
해당 엔진이 데34이터베이스 트랜잭션을 지원하는지 여부입니다. 데이터 정합성이 중요35한 서비스라면 반드시 YES인 엔진(주로 InnoDB)을 사용해야 합니다.363738
XA394041
분산 트랜잭션(XA 트랜잭션)을 지원하는지 여부입니다.424344
Savepoints454647
트랜잭션 내에서 롤백할 수 있는 지점인 세이브포인트(Savep48oints) 기능을 지원하는지 여부입니다.4950
3. MySQL 버전별 변화와 DEFAULT 엔진의 중요성5152
SHOW ENGINES를 실행했53을 때 가장 눈여겨봐야 할 것은 어느54 엔진이 DEFAULT로 설정되어 있느냐입니다. MySQL의 역사 속에서 기본 엔진은 큰 변화를 겪었습니다.
MySQL 5.5 이전 (과거)
과거 버전에서는 MyISAM이 기본 스토리지 엔진이었습니다. MyISAM은 구조가 단순하고 읽기 속도가 빠르다는 장점이 있었지만, 트랜잭션을 지원하지 않고 테이블 단위 잠금(Table-level Locking)을 사용하여 동시성 처리에 취약했습니다.
MySQL 5.5 이후 및 8.0 (현재)
MySQL 5.5 버전부터는 InnoDB가 기본 스토리지 엔진으로 변경되었습니다. InnoDB는 트랜잭션(ACID) 지원, 레코드 단위 잠금(Row-level Locking), 외래 키(Foreign Key) 지원 등 엔터프라이즈급 기능을 제공합니다.
실무에서의 주의점
오래된 레거시 시스템을 마이그레이션하거나, 설정 파일(my.cnf 또는 my.ini)을 그대로 복사해서 새 서버를 구축하는 경우, 의도치 않게 기본 엔진 설정이 꼬일 수 있습니다. SHOW ENGINES를 통해 InnoDB가 DEFAULT로 되어 있는지 확인하는 습관은 데이터 무결성 사고를 미연에 방지하는 첫 단추입니다.
또한, FEDERATED 엔진이나 BLACKHOLE 엔진 같은 특수 목적 엔진들은 기본적으로 비활성화(NO) 되어 있는 경우가 많습니다. 이러한 엔진을 사용해야 한다면 플러그인을 설치하거나 설정을 변경한 후 SHOW ENGINES로 상태가 YES로 변했는지 검증해야 합니다.
결론 및 실무 팁
SHOW ENGINES는 단순한 조회 명령어가 아닙니다. 이는 현재 데이터베이스 서버가 어떤 capabilities(능력)를 가지고 있는지 보여주는 명세서와 같습니다.
요약 및 실무 적용 팁:
- 서버 구축 직후 확인: MySQL 설치 또는 업데이트 후 반드시 SHOW ENGINES를 실행하여 InnoDB가 DEFAULT인지 확인하십시오.
- 레거시 시스템 점검: 오래된 시스템을 인수받았다면, 혹시 MyISAM이 기본 엔진으로 잡혀 있지 않은지 점검하십시오. 현대적인 웹 애플리케이션의 99%는 InnoDB를 필요로 합니다.
- 특수 엔진 활성화 확인: 로그 수집을 위한 ARCHIVE 엔진이나 분산 처리를 위한 FEDERATED 엔진 등을 사용하기 전, 해당 기능이 서버 레벨에서 켜져 있는지 이 명령어로 1차 검증을 수행하십시오.
데이터베이스 관리의 핵심은 '가시성'입니다. 내 서버가 무엇을 지원하는지 아는 것에서부터 안정적인 서비스 운영이 시작됩니다.
공식 문서
더 자세한 내용과 옵션은 아래 MySQL 공식 문서를 참고하시기 바랍니다.
- MySQL 8.0 Reference Manual - SHOW ENGINES Statement:
- https://dev.mysql.com/doc/refman/8.0/en/show-engines.html
'SQL > MYSQL' 카테고리의 다른 글
| [MySQL] DISTINCT: 중복된 데이터를 세련되게 처리하는 기술 (기초부터 성능 최적화까지) (0) | 2026.01.29 |
|---|---|
| [MySQL] 백틱(`)의 역할과 올바른 사용법: 언제 써야 하고, 언제 피해야 할까? (0) | 2026.01.28 |
| [MySQL] 습관적으로 쓴 SELECT * 가 당신의 DB를 느리게 만드는 이유 (feat. 실행 계획 분석) (0) | 2026.01.27 |
| [MySQL] 에러 핸들링의 숨은 조력자: SHOW ERRORS 문 완벽 가이드 (0) | 2026.01.26 |
| [MySQL] SHOW ENGINE 문법 정복: SHOW ENGINE INNODB STATUS로 잠금·데드락·버퍼 이슈 읽어내기 (1) | 2026.01.20 |
| [MySQL] SHOW DATABASES 사용법과 실무 활용 가이드 (0) | 2025.07.06 |
| [MySQL] SHOW CREATE VIEW 사용법 완벽 가이드: 뷰(View) 정의 쉽게 확인하기 (0) | 2025.07.05 |
| [MySQL] SHOW CREATE USER 사용법 완벽 가이드: 사용자 계정 관리 쉽게 하기 (0) | 2025.07.04 |