MySQL에서 테이블의 스토리지 엔진을 변경하려면 먼저 현재 사용 중인 엔진이 무엇인지 확인해야 합니다. 대표적인 엔진으로는 트랜잭션을 지원하는 InnoDB와 속도가 빠르지만 트랜잭션을 지원하지 않는 MyISAM이 있습니다.
1단계: 현재 테이블의 엔진 확인하기
현재 테이블이 어떤 엔진을 사용하고 있는지 확인하려면 information_schema.tables의 ENGINE 컬럼을 조회하면 됩니다.
기본 문법은 다음과 같습니다.
SELECT ENGINE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'yourDatabaseName' AND TABLE_NAME = 'yourTableName';
예제 테이블 생성
설명을 위해 'StudentInformations'라는 이름의 테이블을 하나 만들어 보겠습니다.
mysql> create table StudentInformations
-> (
-> StudentId int not null auto_increment,
-> StudentFirstName varchar(20),
-> StudentLastName varchar(20),
-> Primary Key(StudentId)
-> );
Query OK, 0 rows affected (0.57 sec)
위에서 작성한 쿼리를 실행하면 해당 테이블이 InnoDB를 사용하는지 MyISAM을 사용하는지 알 수 있습니다. 여기서는 데이터베이스 이름이 'test'라고 가정합니다.
mysql> select engine from information_schema.tables
-> where table_schema = 'test'
-> and table_name = 'StudentInformations';
실행 결과는 다음과 같습니다.
+--------+ | ENGINE | +--------+ | InnoDB | +--------+ 1 row in set (0.05 sec)
결과를 보면 현재 이 테이블은 InnoDB 엔진을 사용 중임을 확인할 수 있습니다.
2단계: ALTER 명령어로 엔진 변경하기
테이블의 엔진을 변경할 때는 ALTER TABLE 명령어를 사용합니다. 기본 문법은 다음과 같습니다.
ALTER TABLE yourTableName ENGINE = 'yourEngineName';
이제 실제로 'StudentInformations' 테이블의 엔진을 InnoDB에서 MyISAM으로 변경해 보겠습니다.
mysql> alter table StudentInformations ENGINE = 'MyISAM'; Query OK, 6 rows affected (1.84 sec) Records - 6 Duplicates - 0 Warnings - 0
결과에 6개의 행(rows)이 영향을 받았다고 표시되는데, 이는 테이블에 저장된 데이터가 6건 있기 때문입니다. 엔진 변경 시 기존 데이터가 새로운 엔진 구조에 맞게 재구성됩니다.
3단계: 변경 결과 확인하기
테이블이 정상적으로 InnoDB에서 MyISAM으로 변환되었는지 다시 한번 조회 쿼리를 실행하여 확인할 수 있습니다.
mysql> select engine from information_schema.tables -> where table_schema = 'test' -> and table_name = 'StudentInformations';
실행 결과, 엔진이 성공적으로 변경된 것을 확인할 수 있습니다.
+--------+ | ENGINE | +--------+ | MyISAM | +--------+ 1 row in set (0.00 sec)
엔진 변경 시 주의사항
테이블 엔진을 변경하기 전에 몇 가지 유의해야 할 점이 있습니다.
- InnoDB → MyISAM 전환 시: 외래 키(Foreign Key) 제약 조건과 트랜잭션(ACID) 지원이 사라집니다.
- MyISAM → InnoDB 전환 시: 디스크 사용량과 메모리 요구량이 증가할 수 있습니다.
- 데이터 크기: 대용량 테이블의 경우 엔진 변경에 상당한 시간이 소요될 수 있으므로, 서비스 트래픽이 적은 시간대에 작업하는 것이 좋습니다.
- 백업 필수: 변경 작업 전에는 반드시 테이블을 백업해 두는 것이 안전합니다.
이처럼 information_schema.tables 조회와 ALTER TABLE ... ENGINE 명령어만 활용하면 MySQL 테이블의 스토리지 엔진을 손쉽게 확인하고 변경할 수 있습니다.