MySQL에서 새로 생성되는 테이블에 특정 스토리지 엔진을 기본값으로 사용하고 싶다면 default_storage_engine 시스템 변수를 변경하면 됩니다. 이 글에서는 기본 스토리지 엔진을 MyISAM으로 설정하는 방법과 그 동작 방식을 단계별로 살펴보겠습니다.
1. 기본 스토리지 엔진 설정하기
기본 스토리지 엔진을 변경하려면 다음 문법을 사용합니다.
SET @@default_storage_engine = '엔진이름';
기본 엔진을 MyISAM으로 지정하려면 아래와 같이 실행합니다.
mysql> SET @@default_storage_engine = 'MyISAM'; Query OK, 0 rows affected (0.05 sec)
2. 설정 결과 확인하기
SELECT 문을 사용해 현재 기본 스토리지 엔진이 제대로 변경되었는지 확인할 수 있습니다.
mysql> SELECT @@default_storage_engine;
실행 결과는 다음과 같습니다.
+--------------------------+ | @@default_storage_engine | +--------------------------+ | MyISAM | +--------------------------+ 1 row in set (0.00 sec)
3. 테이블 생성 후 엔진 확인
실제로 테이블을 하나 만들어서 MyISAM 엔진이 적용되는지 확인해 보겠습니다. 먼저 테이블을 생성합니다.
mysql> CREATE TABLE Followers
-> (
-> FollowerId int,
-> FollowerName varchar(20)
-> );
Query OK, 0 rows affected (0.32 sec)SHOW TABLE STATUS 명령어로 방금 만든 테이블의 스토리지 엔진을 확인합니다.
mysql> SHOW TABLE STATUS WHERE Name = 'Followers'\G
출력 결과
Name: followers Engine: MyISAM Version: 10 Row_format: Dynamic Rows: 0 Avg_row_length: 0 Data_length: 0 Max_data_length: 281474976710655 Index_length: 1024 Data_free: 0 Auto_increment: 1 Create_time: 2019-02-12 00:42:27 Update_time: 2019-02-12 00:42:28 Check_time: NULL Collation: utf8_general_ci Checksum: NULL Create_options: Comment: 1 row in set (0.00 sec)
출력 결과에서 Engine: MyISAM 항목을 통해 별도의 옵션 없이 테이블이 자동으로 MyISAM 엔진으로 생성된 것을 확인할 수 있습니다.
4. 세션 변수의 한계 — MySQL 재시작 시 초기화
주의할 점은 MySQL 8.0.12 버전의 기본 엔진은 InnoDB라는 것입니다. 위에서 설정한 값은 해당 세션에만 유효한 임시 설정입니다. MySQL 서버를 재시작하면 기본값인 InnoDB로 되돌아갑니다.
실제로 MySQL을 재시작해 보겠습니다.
mysql> RESTART; Query OK, 0 rows affected (0.20 sec)
재시작 후 다시 기본 엔진을 확인하면 InnoDB로 복원된 것을 볼 수 있습니다.
mysql> SELECT @@default_storage_engine; No connection. Trying to reconnect... Connection id: 8 Current database: sample +--------------------------+ | @@default_storage_engine | +--------------------------+ | InnoDB | +--------------------------+ 1 row in set (0.00 sec)
영구적으로 기본 엔진을 설정하는 방법
세션 단위가 아니라 서버 전체에 영구적으로 기본 스토리지 엔진을 지정하려면 MySQL 설정 파일(my.cnf 또는 my.ini)의 [mysqld] 섹션에 다음 내용을 추가한 뒤 서버를 재시작하면 됩니다.
[mysqld] default-storage-engine=MyISAM
또는 SET GLOBAL 구문을 사용해 현재 실행 중인 서버에 전역적으로 적용할 수도 있습니다. 단, 이 경우에도 서버 재시작 시에는 설정 파일의 값이 우선 적용됩니다.
mysql> SET GLOBAL default_storage_engine = 'MyISAM';
정리
SET @@default_storage_engine = 'MyISAM';으로 현재 세션의 기본 엔진을 변경할 수 있습니다.SELECT @@default_storage_engine;으로 현재 설정 값을 확인할 수 있습니다.- 세션 변수는 MySQL 재시작 시 초기화되므로 영구 적용을 원한다면 설정 파일(my.cnf)에
default-storage-engine=MyISAM을 추가해야 합니다.