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

MySQL에서 InnoDB를 MyISAM 테이블 엔진으로 변경하는 방법

MySQL에서는 ALTER TABLE 문을 사용해 테이블의 저장 엔진을 손쉽게 변경할 수 있습니다. 이 글에서는 InnoDB로 생성된 테이블을 MyISAM 엔진으로 전환하는 전체 과정을 단계별로 살펴보겠습니다.

1. 예제 테이블 생성

먼저 테스트에 사용할 테이블을 생성합니다.

mysql> create table DemoTable1982
    (
    StudentId int,
    StudentName varchar(20),
    StudentAge int
    );
Query OK, 0 rows affected (0.00 sec)

2. 현재 테이블 엔진 확인

테이블 생성 후, 어떤 엔진이 적용되어 있는지 확인해 보겠습니다.

mysql> show create table DemoTable1982;

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table         | Create Table                                                                                                                                                                                                                                          |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| DemoTable1982 | CREATE TABLE `demotable1982` (`StudentId` int(11) DEFAULT NULL, `StudentName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `StudentAge` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

출력 결과 마지막 부분의 ENGINE=InnoDB를 통해 현재 테이블이 InnoDB 엔진을 사용하고 있음을 확인할 수 있습니다.

3. ALTER TABLE로 엔진 변경하기

InnoDB에서 MyISAM으로 엔진을 변경하는 핵심 쿼리는 다음과 같습니다.

mysql> alter table DemoTable1982 ENGINE='MyISAM';
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

ALTER TABLE ... ENGINE='MyISAM' 구문 하나만 실행하면 테이블 전체 구조와 데이터가 MyISAM 방식으로 변환됩니다.

4. 변경 결과 확인

엔진이 실제로 변경되었는지 다시 한번 확인해 보겠습니다.

mysql> show create table DemoTable1982;

실행 결과는 다음과 같습니다.

+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table         | Create Table                                                                                                                                                                                                                                          |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| DemoTable1982 | CREATE TABLE `demotable1982` ( `StudentId` int(11) DEFAULT NULL, `StudentName` varchar(20) COLLATE utf8_unicode_ci DEFAULT NULL, `StudentAge` int(11) DEFAULT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci |
+---------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

ENGINE=MyISAM으로 표시된 것을 확인할 수 있습니다. 이로써 엔진 변경이 성공적으로 완료되었습니다.

참고: InnoDB vs MyISAM 주요 차이점

  • InnoDB: 트랜잭션 지원, 외래 키(Foreign Key) 제약 조건 지원, 행 수준 잠금(Row-level Locking), 충돌 복구 기능 제공
  • MyISAM: 트랜잭션 미지원, 테이블 수준 잠금(Table-level Locking), 읽기 위주 작업에서 빠른 성능, FULLTEXT 인덱스 초기부터 지원

트랜잭션이나 데이터 무결성이 중요한 서비스라면 InnoDB를 유지하는 것이 권장되며, 단순 조회 중심의 테이블이라면 MyISAM도 고려할 만합니다. 운영 환경에서 엔진을 변경하기 전에는 반드시 데이터 백업을 먼저 수행하시기 바랍니다.