2.1-1. WAL-1
Option – Disable_WAL LevelDB 의 경우 db_bench 를 실행하며 WAL 을 사용할지 말지에 대한 옵션이 존재하지 않는다. 반면 LevelDB 를 기반으로 만든 RocksDB 의 경우… 더 보기 »2.1-1. WAL-1
Option – Disable_WAL LevelDB 의 경우 db_bench 를 실행하며 WAL 을 사용할지 말지에 대한 옵션이 존재하지 않는다. 반면 LevelDB 를 기반으로 만든 RocksDB 의 경우… 더 보기 »2.1-1. WAL-1
Major Compaction 이란? – 우리가 흔히 Compaction 이라 부르는 실질적인 부분입니다. – 메모리에 있는 데이터를 디스크에 옮기는 Minor Compaction와 다르게 디스크 내부에 있는 데이터를 병합하는… 더 보기 »1.5-3. Major Compaction
Minor Compaction flush 라 부르며 메모리에 있는 데이터(imm memtable)을 디스크(level 0)로 내려주는 작업을 합니다. Overall Minor Compaction Code Flow 전체적인 과정 MaybeScheduleCompaction에서는 Minor Compaction 작업이… 더 보기 »1.5-2. Minor Compaction
Compaction은 db에서 가장 복잡한 프로세스 중 하나이며 db의 성능에 큰 영향을 주기도 합니다. 내부 데이터 중첩 및 통합 메커니즘이며 읽기 및 쓰기 속도의 균형을 맞추는… 더 보기 »1.5-1. Compaction
LevelDB에서 Get Operation을 통해 원하는 key의 value를 찾을 때, 어떤 과정을 거쳐서 key를 찾는지, 그 중에서 storage에 저장되는 SSTable에서 어떤 과정을 거쳐 찾는지에 대해 Top-Down… 더 보기 »1.4-3. SSTable Read
SSTable은 다음과 같은 상황에서 만들어진다. MemTable로부터 Flush(Minor Compaction)가 일어날 때 Storage에서 Compaction이 일어날 때 이 중 MemTable로부터 Flush가 일어날 때에 초점을 맞춰 SSTable에 어떻게 만들어지는지… 더 보기 »1.4-2. SSTable Write
LevelDB는 LSM트리(Log Structured Merge Tree)를 기반으로 만들어졌으며, 이 때문에 write를 할 때 데이터를 디스크에 직접 쓰는게 아니라 Log에 처음 쓰고 MemTable에 쓰게 된다. MemTable은 데이터가… 더 보기 »1.4-1. SSTable
Memtable 은 log의 memory copy로 볼수 있습니다. 주요역할은 log내의 데이터를 구조화 저장하는 것입니다. (source https://www.jianshu.com/p/0e6116f23c3d) DB에 write를 할 때 leveldb의 kv데이터를 저장하는 공간이 Memtable입니다, Memtable에… 더 보기 »1.3. Memtable
MANIFEST 는 VersionSet 과 VersionEdit 를 파일로 정리해놓는 기능을 한다. 이는 MANIFEST-000000 와 같은 이름으로 저장이 된다. MANIFEST 파일은 LevelDB 를 활용하며 이름이 바뀌는데, 이번… 더 보기 »1.2. Manifest
이 문서는 WAL 에 대한 문서이다. Index WAL: WAL 에 대한 개요를 설명한다. Functions: WAL/MANIFEST 관련 함수들에 대한 설명이다. MANIFEST 와 WAL 에서 사용하는 함수들이… 더 보기 »1.1. WAL