반응형

1-1 Mysql의 논리적 아키텍처

Mysql의 스토리지 엔진

-- 테이블 생성시 xx.frm 파일이 만들어지고 파일안에는 테이블이름과 스키마 정의를 저장
-- show table status like '테이블이름' \G;

1) MyISAM 엔진
Full-text 인덱싱, 압축, 공간함수 지원, 트랜잭션 x, 행수준의 잠금지원x
스토리지 저장파일 : xxxx.MYD, xxxx.MYI
기능
/*
잠금과 동시성
- 테이블 전체를 잠금
자동복구
수동복구 - CHECK TABLE '테이블이름', REPAIR TABLE '테이블이름'
인덱스기능
지연된키 쓰기 - DELAY_KEY_WRITE 옵션이 ON으로 설정된 MyISAM 테이블은 쿼리 실행 마지막에 변경된 인덱스 데이터를 디스크에 기록하지 않고,
대신 메모리 상의 버퍼에 변경 내용을 버퍼링한다. MyISAM 테이블은 버퍼를 정리하거나 테이블을 닫을 때 인덱스 블록을 디스크로 flush 한다.
이러한 작업은 이용 빈도수가 높고 데이터 변경이 잦은 테이블의 성능을 높여준다. 그러나 서버나 시스템에 충돌이 나면 인덱스가 손상되므로 이를 복구해야한다.
서버를 다시 시작하기 전 myisamchk을 실행하는 스크립트나 자동복구 옵션을 이용해 이 상황을 처리한다.(DELAY_KEY_WRITE 옵션을 사용하지 않더라도 이렇게 하는 것은
매우 좋은 생각이다.) DELAY_KEY_WRITE는 전역적으로 또는 개별 테이블 기준으로 설정할 수 있다.
*/
2) InnoDB 엔진
트랜잭션 O, MVCC이용 4가지 격리수준을 모두 구현한다. REPEATABLE READ 가 DEfault
인덱스 압축을 지원x

3) Memory 엔진
매우빠름, HEAP 테이블, 재시작시 테이블 구조는 있지만, 데이터는 모두 사라짐
HASH 인덱스 사용, 테이블 수준의 잠금, TEXT BLOB 지원x
고정된 레코드만 지원하기 때문에 VARCHAR -> CHAR로 변경해야함(메모리낭비)
사용예)
--조회용 매핑용 테이블(우편번호를 주소에 매핑하는 테이블)
--주기적으로 집계되는 테이블의 결과 캐시용
--데이터 분석시 중간 결과 저장용

4) Archive 엔진
고속삽입과 압축 저장을 위해 최적화된 스토리진 엔진(replication작업 등)
INSERT와 SELECT 쿼리만 지원, zlib 압축, 인덱스 사용x

5) CSV 엔진
쉼표로 구분된 값으로 구성된 파일을 테이블로 처리할 수 있으나 인덱스는 지원x
데이터 교환하거나 일부 로깅작업에 매우 유용

6) Federated 엔진
원격 서버에 테이블 참조
INSERT 쿼리에 가장 유용, 조인이나 집계쿼리는 성능이슈있음

7) Blackhole 엔진
저장 메커니즘이 아에 없음, insert 쿼리는 버림
복제구성과 감사용 로깅에 유용

8) NDB 클러스터 엔진
shared nothing 아무것도 공유하지 않는 형태의 클러스터링 개념
NDB가 스토리지 엔진 수준이 아닌 Mysql 서버 수준에서 조인을 실행함, NDB의 모든 데이터는 네트워클르 거쳐 나오므로 복잡한 조인은 매우 느리다.
반면 단일 테이블 조회는 여러 데이터 노드가 결과를 구성하기 때문에 신속하다.

9) Falcon 엔진
MVCC

10) SolidDB 엔진
MVCC, InnoDB와 유사함

11) PBXT(Primebase XT) 엔진
트랜젝션 커밋의 오버헤드를 최대한 줄이기 위해 고안, 좀더 확인필요

12) Maria 엔진
MVCC

 

반응형

'쇠똥굴리기(BOOK) > Mysql 성능최적화' 카테고리의 다른 글

실행계획(explain) 사용  (2) 2019.09.25
로컬 호스트 전용 연결  (0) 2019.09.17
운영체제 보안  (0) 2019.09.10
localhost와 127.0.0.1로 연결 및 차이점  (0) 2019.09.09
INTRO  (0) 2019.09.04
블로그 이미지

dung beetle

취미는 데이터 수집 직업은 MYSQL과 함께 일하는 DBA의 소소한 일상 이야기

,