인메모리 DBMS는 모든 데이터를 메모리에 저장/관리함으로써 불필요한 I/O Cost를 최소화하여 고성능 트랜잭션 처리가 가능합니다.
구분
|
인메모리 DBMS |
Buffer Cache |
Columnar
|
데이터 저장
|
- 데이터 삽입 시 메모리 저장소를 사용한 고속 데이터 저장 가능
|
- 장애복구를 위해 데이터가 디스크 저장소에 저장되기 때문에 디스크 I/O로 인한 성능저하 발생
|
- 디스크 저장소에 저장한 후 메모리와 동기화 또는 메모리에 저장 후 디스크 저장소로 동기화
- 동기화 시점에 LOCK 발생 시 성능 저하 발생
|
데이터 로딩
|
- DBMS 구동 시 모든 데이터는 메모리에 로드 되며, 로딩시간 감축을 위한 패러럴 로드기술을 사용함
|
- 캐시 용량만큼의 데이터만 로딩할 수 있으며, 트랜잭션 처리 시 빈번한 디스크 I/O 발생 가능
|
- DBMS 구동 시 정의 한 Column 값은 메모리에 로드
|
DML
|
- 모든 DML은 메모리 내에서 실행되어 고성능 트랜잭션 보장
|
- 버퍼 캐시에 없는 경우, 오래된 데이터 블럭을 내리고 필요한 데이터를 디스크로부터 읽어 올리는 I/O발생.
|
- DML는 트랜잭션 처리 단위가 ROW 기반이므로 Column으로 변화 저장하기 위한 agent로 인한 성능 저하 발생
|
SELECT
|
- 모든 데이터는 메모리에 존재
- Select시 메모리 내에서만 검색
|
- 버퍼 캐시부터 읽고 데이터가 없는 경우 디스크에서 데이터를 가져옴.
- Select 에도 I/O 발생가능.
|
- 비즈니스 업무 정의에 따라 select 속도 상이
|