-
MySQL Storage Engines 요약카테고리 없음 2023. 2. 10. 17:11
데이터베이스의 성능을 극대화하기 위해 효과적으로 사용할 수 있도록 MySQL의 각 스토리지 엔진의 기능을 이해하는 것이 필수이다.
MySQL은 다음과 같이 테이블에 다양한 스토리지 엔진을 제공합니다.
- MyISAM
- MyISAM은 이전 ISAM 스토리지 엔진을 확장
- MyISAM 테이블은 압축 및 속도에 최적화
- MyISAM 테이블은 플랫폼과 운영 체제 간에도 이동 가능
- MyISAM 테이블의 크기는 최대 256TB까지 가능
- yISAM 테이블을 읽기 전용 테이블로 압축하여 공간을 절약할 수 있다.
- MyISAM 테이블은 트랜잭션에 안전하지 않다.
- MySQL 버전 5.5 이전에는 저장 엔진을 명시적으로 지정하지 않고 테이블을 만들 때 MyISAM이 기본 저장 엔진이다. 버전 5.5부터 MySQL은 InnoDB를 기본 저장 엔진으로 사용한다.
- InnoDB
- InnoDB 테이블은 ACID 호환 및 트랜잭션을 완벽하게 지원하여 데이터의 일관성을 보장한다.
- InnoDB 테이블은 외부 키, 커밋, 롤백, 롤포워드 작업을 지원한다.
- InnoDB 테이블의 크기는 최대 64TB
- MyISAM과 마찬가지로 InnoDB 테이블은 서로 다른 플랫폼과 운영 체제간에 이식 가능하다.
- 대용량 트랜잭션에 최적화
- MERGE
- MERGE 테이블은 하나의 테이블과 유사한 구조를 가진 여러 MyISAM 테이블을 결합한 가상 테이블이다.
- MERGE 테이블에는 자체 인덱스가 없다.
- 대신 구성요소 테이블의 인덱스를 사용한다.
- MERGE 테이블을 사용하면 여러 테이블을 결합할 때 성능을 향상시킬 수 있다.
- MySQL은 MERGE 테이블에서만 SELECT, DELETE, UPDATE 및 INSERT 작업을 수행할 수 있다.
- MERGE 테이블에서 DROP TABLE 문을 사용하면 MERGE 스펙만 제거되고 기본 테이블은 영향을 받지 않는다.
- MEMORY (HEAP)
- 메모리 테이블은 메모리에 저장되며 MyISAM 테이블보다 더 빠르기 위해 해시 인덱스를 사용한다.
- 저장 엔진은 이전에 HEAP
- 메모리 테이블의 데이터 수명은 데이터베이스 서버의 가동 시간에 따라 다르다.
- ARCHIVE
- 아카이브 저장 엔진을 사용하면 아카이브 목적으로 많은 수의 레코드를 압축 형식으로 저장하여 디스크 공간을 절약할 수 있다.
- 아카이브 저장 엔진은 레코드를 삽입할 때 레코드를 압축하고 읽을 때 zlib 라이브러리를 사용하여 압축을 해제한다.
- 보관 테이블은 INSERT 및 SELECT 문만 허용한다.
- ARCHIVE 테이블은 인덱스를 지원하지 않으므로 행을 읽으려면 전체 테이블 스캔이 필요하다.
- CSV
- CSV 스토리지 엔진은 CSV(쉼표로 구분된 값) 파일 형식으로 데이터를 저장한다.
- CSV 테이블은 데이터를 스프레드시트 소프트웨어와 같은 SQL이 아닌 응용프로그램으로 쉽게 마이그레이션할 수 있는 방법을 제공한다.
- CSV 테이블은 NULL 데이터 타입을 지원하지 않는다.
- 읽기 동작을 하기 위해서는 전체 테이블 스캔이 필요하다.
- FEDERATED
- FEDERATED 스토리지 엔진을 사용하면 클러스터 또는 복제 기술을 사용하지 않고도 원격 MySQL 서버에서 데이터를 관리할 수 있다.
- 로컬 테이블에는 데이터가 저장되지 않는다.
- 로컬 테이블에서 데이터를 쿼리하면 원격 연합 테이블에서 데이터가 자동으로 가져온다.
- MyISAM