15.1 스토리지 엔진 설정
새 테이블을 만들 때, ENGINE
테이블 옵션을 CREATE TABLE
문에 추가해서 어떤 스토리지 엔진을 사용할 것인지를 지정할 수 있습니다.
- ENGINE = INNODB not needed unless you have set a different - default storage engine. CREATE TABLE t1 (i INT) ENGINE = INNODB; - Simple table definitions can be switched from one to another. CREATE TABLE t2 (i INT) ENGINE = CSV; CREATE TABLE t3 (i INT) ENGINE = MEMORY;
ENGINE
옵션을 생략하면 기본 스토리지 엔진이 사용됩니다. 기본 엔진은 MySQL 5.6의 InnoDB
입니다. 기본 엔진을 지정하려면 --default-storage-engine
서버 시작 옵션을 사용하거나 my.cnf
구성 파일에 default-storage-engine
옵션을 설정하거나합니다.
현재 세션에 기본 스토리지 엔진을 설정하려면 default_storage_engine
변수를 설정합니다.
SET default_storage_engine = NDBCLUSTER;
MySQL 5.6.3 이후에서는, CREATE TEMPORARY TABLE
에서 만든 TEMPORARY
테이블의 스토리지 엔진은 시동시 또는 런타임 중 하나에 default_tmp_storage_engine
을 설정하여 영구 테이블의 엔진에서 개별적으로 설정할 수 있습니다. MySQL 5.6.3 이전에는 default_storage_engine
에서 영구 및 TEMPORARY
의 두 테이블의 엔진을 설정합니다.
테이블을 다른 스토리지 엔진으로 변환하려면 새로운 엔진을 지정하는 ALTER TABLE
문을 사용합니다.
ALTER TABLE t ENGINE = InnoDB;
섹션 13.1.17 "CREATE TABLE 구문」 및 섹션 13.1.7 "ALTER TABLE 구문" 을 참조하십시오.
컴파일되지 않은 스토리지 엔진 또는 컴파일되어 있지만 비활성화 된 스토리지 엔진을 사용하는 경우 MySQL은 그 대신 기본 스토리지 엔진을 사용하여 테이블을 만듭니다. 예를 들어 복제 설정에서 마스터 서버는 최대한의 안전을 위해 InnoDB
테이블을 사용하고 슬레이브 서버는 지속성과 일관성을 희생하고 속도를 얻기 위해 대체 스토리지 엔진을 사용하는 경우 수 있습니다.
기본적으로 CREATE TABLE
또는 ALTER TABLE
가 기본 스토리지 엔진을 사용할 수없는 경우 항상 경고가 생성됩니다. 원하는 엔진을 사용할 수없는 경우에 혼란을 일으킬 의도하지 않은 동작을하지 않게하려면 NO_ENGINE_SUBSTITUTION
SQL 모드를 활성화합니다. 원하는 엔진을 사용할 수없는 경우이 설정은 경고 대신 오류가 발생 테이블이 작성되거나 변경되거나하지 않습니다. 섹션 5.1.7 "서버 SQL 모드" 를 참조하십시오.
새 테이블의 경우, MySQL은 테이블과 컬럼의 정의를 유지하기 위해 .frm
파일을 만들어야합니다. 테이블의 인덱스와 데이터는 스토리지 엔진에 따라 다르지만, 하나 이상의 다른 파일에 저장해도 괜찮습니다. 서버가 스토리지 엔진 레벨의 상위에 .frm
파일을 만듭니다. 개별 스토리지 엔진은 그들이 관리하는 테이블에 필요한 파일을 더 만듭니다. 테이블 이름에 특수 문자가 포함되어있는 경우, 섹션 9.2.3 "식별자와 파일 이름 매핑" 에 설명 된대로 해당 문자의 인코딩 된 버전이 테이블 파일 이름에 포함됩니다.