Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL 테이블의 스토리지 엔진 변경 방법, InnoDB에서 MyISAM으로 전환하기

MySQL에서 테이블의 스토리지 엔진을 변경하려면 먼저 현재 사용 중인 엔진이 무엇인지 확인해야 합니다. 대표적인 엔진으로는 트랜잭션을 지원하는 InnoDB와 속도가 빠르지만 트랜잭션을 지원하지 않는 MyISAM이 있습니다.

1단계: 현재 테이블의 엔진 확인하기

현재 테이블이 어떤 엔진을 사용하고 있는지 확인하려면 information_schema.tablesENGINE 컬럼을 조회하면 됩니다.

기본 문법은 다음과 같습니다.

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 테이블의 스토리지 엔진을 손쉽게 확인하고 변경할 수 있습니다.