DATABASE, MySQL 스토리지 엔진
MySQL DB엔진
스토리지엔진
- 스토리지엔진은 DB에서 데이터를 어떤 방식으로 저장하고, 접근할 것인지에 대한 기능을 제공한다
- 스토리지엔진의 특성에 따라 데이터 접근이 얼마나 빠른지, 얼마나 안정적인지, 트랜잭션 등의 기능을 제공하는지 등의 차이점이 발생한다.
- 1대의 서버에 두가지 스토리 엔진을 혼용하는것은 좋지 않다.
- 각기 다른 동작, 메모리 사용법을 취하므로
- 혼용하면 효율적인 cpu, 메모리 사용이 어렵다
효과적인 스토리 엔진 선택
스토리 엔진 | 엑세스 패턴 |
---|---|
MyISAM | 추가 처리만 한다, select count(*) 를 많이 사용 |
InnoDB | 갱신 빈도가 높다, 트랜잭션이 필요하다, 민감한 정보를 사용한다 |
1. MyISAM
- MySQL 5.5 이전까지 기본 스토리지 엔진
- Table-level Lock
- 테이블 작업시 특정 행을 수정하려고 하면 테이블 전체에 락이 걸린다
- 트랜잭션 미지원
- 작업도중 문제가 발생해도, 이미 db안으로 데이터가 입력됨
- select작업이 많은 경우 효과적
- 잦은 변경 및 삭제에는 성능이 좋지 못함.
2. InnoDB
- MySQL 5.5 부터 기본 스토리지 엔진
- 트랜잭션 지원 (ACID Transaction)
- MyISAM 보다 data 저장 비율이 낮고, 데이터 로드 속도 느리다.
- Row-level Lock
- 테이블작업시, 작업 시작하면 해당 row만 잠긴다.
- insert, update, delete에 대한 속도가 빠르다
- 민감한 정보를 갖는 table(회원 table, 돈 관련 table)에 사용하기 좋다
- 비정상 종료시 복구 기능
- 주로 데이터 입력 및 수정이 빈번한 높은 퍼포먼스를 요구하는 대용량 사이트에 적합
3. Cluster(NDB)
- 트랜잭션 지원
- 모든 데이터와 인덱스가 메모리에 존재하여 매우 빠른 데이터 로드 속도
- PK사용시 최상의 속도를 나타낸다
4. Archive
- MySQL5.0 부터 새롭게 도입된 엔진
- 자동으로 데이터 압축지원
- 다른 엔진에 비해 80% 저장 공간 절약 효과
- 가장 빠른 데이터 로드 속도
- insert, select만 가능
5. Federated
- MySQL5.0 부터 새롭게 도입된 엔진
- 물리적 db에 대한 논리적 db를 생성하여 원격 데이터 컨트롤 가능
- 실행속도는 N/W요소에 따라 좌우된다
- 테이블 정의를 통한 SSL보안 처리
- 분산 DB환경에서 사용