InnoDB 가 무엇이고, 다른 DB 엔진과 차이 알아보기
InnoDB란 무엇인가
- Storage Engine : 데이터베이스에서 데이터를 접근하는 방식
- frm 파일에 접근하는 속성을 설정
- 스토리지 엔진은 DB에서 데이터를 어떤 방식으로 저장하고 접근할 것인지에 대한 기능을 제공합니다.
- 스토리지 엔진에 따라 데이터 접근 속도, 안정적인지, 트랜잭션 기능을 제공하는지 등의 차이가 발생합니다.
InnoDB란 무엇
- 스토리지 엔진의 한 종류
스토리지 엔진
스토리지 엔진은
데이터 읽기/쓰기
작업을 처리한다. 데이터를 디스크로 저장하고 읽어오는 역할 담당.데이터를 디스크로 저장하고 읽어오는 역할을 담당하는 스토리지 엔진은, 데이터를 물리적 디스크에 저장하는 방식을 클러스터드 인덱스 방식과 넌 클러스터드 인덱스 방식으로 제공하고 있다.
MySQL서버에서 지원되는 스토리지 엔진 확인
show engines;
MySQL스토리지 엔진 종류
InnoDB MEMORY MRG_MYISAM CSV PERFORMANCE_SCHEMA MyISAM BLACKHOLE ARCHIVE FEDERATED
InnoDB와 다른 DB 엔진과 차이
- 데이터 저장 방식의 차이
InnoDB는 기본적으로 PK를 기준으로 클러스링 되어 있는 클러스터드 인덱스 방식을 사용하여 데이터를 디스크에 저장합니다. 즉 PK값에 의해 레코드의 저장위치가 결정됩니다. - 외래키 지원
MyISAM에서는 사용할 수 없는 기능.
부모/자식 테이블에 데이터가 있는지 체크하는 작업이 필요하므로 잠금이 여러 테이블로 전파되는 특성이 있습니다. - MVVC
락을 걸지 않고 읽기 작업을 수행 (serializable 격리 레벨은 제외)
레코드 기반 잠금 기능 지원 - 자동화된 장애 복구
- 오라클 아키텍처 사용
tablespace개념, undo 데이터를 시스템 tablespace에서 관리 등 - InnoDB 버퍼 풀
디스크의 데이터파일, 인덱스 정보를 메모리에 캐시해 두는 공간
쓰기 작업 지연시켜 일괄 작업을 처리하는 버퍼 역할 수행 : 랜덤 디스크 작업이 수행될 수 있는 insert, update, delete를 버퍼풀에 모아서 일괄 처리
MyISAM
- 키 캐시
키 캐시는 지원하나 데이터 캐시는 스토리지엔진에서 제공하지 않는다.
운영체제의 읽기작업으로 항상 요청해야 한다.
버퍼 풀이 없으므로 운영체제의 쓰기 작업으로 항상 요청해야 한다. - 데이터 저장방식
넌 클러스터드 인덱스 방식, 데이터의 저장을 인덱스에 의존하지 않는다.
넌클러스터드 인덱스
- 인덱스 순서와 데이터 순서가 연관이 없다.
- 인덱스에서 데이터에 접근할 수 있는 정보를 갖는다.
- MyISAM 의 모든 인덱스, InnoDB의 PK제외 인덱스의 경우 : 넌클러스터드 인덱스로 구성됨
클러스터드 인덱스
- 클러스더드 인덱스 방식으로 데이터를 저장한다는 것은 PK 값의 순서대로 디스크에 저장된다는 것입니다.
그래서 PK값의 범위 검색이 빠른 장점이 있습니다.
참고문서
'Database > MySQL' 카테고리의 다른 글
FCM토큰 저장 테이블 최적화 (0) | 2023.04.10 |
---|---|
프로젝트 쿼리 최적화 작업 (0) | 2023.04.06 |
MySQL 초단위 precision 자릿수 넘어갈 경우 (0) | 2022.06.03 |
Mysql 날짜관련 data type, datetime과 timestamp 차이 (0) | 2022.06.02 |
Mysql MMM이란 (Multi-Master Manager) (0) | 2021.10.06 |
댓글