[데이터베이스] RocksDB Space Amplification 측정해보기

kothe·2022년 11월 6일
0

데이터베이스

목록 보기
8/8

Space amplification
Disk에 있는 데이터크기와 실제 DB 사이즈의 비율
만약 DB에 10MB를 넣었는데 100MB의 디스크 공간을 사용했다면 이때 space amplification은 10이다.

db_bench로 RocksDB의 space amplification을 측정해보자.

1. Run DB_Bench

rocksdb 디렉토리로가서 db_bench를 실행시켜준다.

./db_bench --benchmarks="readrandomwriterandom" \
        -db="/home/koh/rocksdb" \
        -use_direct_io_for_flush_and_compaction=true \
        -use_direct_reads=true \
        -compaction_style=0 \
        -target_file_size_base=2097152 \
        -write_buffer_size=2097152 \
        -max_bytes_for_level_base=33554432 \
        -max_bytes_for_level_multiplier=3 \
        -duration=4800 \
        -statistics \
        -stats_dump_period_sec=30 \
        -stats_interval_seconds=10 2>&1 | tee result.txt

--benchmarks="readrandomwriterandom" : 1 writer, N threads doing random reads
-db="/home/koh/rocksdb" : RocksDB 데이터 디렉토리 path
-use_direct_io_for_flush_and_compaction=true : Use O_DIRECT for background flush and compaction I/O
-use_direct_reads=true : Use O_DIRECT for reading data
-compaction_style=0 : style of compaction; level-based (0), universal(1)
(level-based를 사용했는데 level이 0,1에서 더 증가하지 않을 때가 있다. 이땐 execution time을 늘려주면 된다.)
-write_buffer_size=209715 : Number of bytes to buffer in memtable before compacting
(사양에 따라 조절)
-max_bytes_for_level_base=16777216 : Max bytes for level-1
(사양에 따라 조절)
-max_bytes_for_level_multiplier=10 : A multiplier to compute max bytes for level-N (N >= 2)
(사양에 따라 조절)
-duration=4800 : Execution tim
-stats_dump_period_sec=30 : Gap between printing stats to log in seconds
-stats_interval_seconds=10: Report stats every N second
(더 많은 옵션은 다음 링크를 참고
https://github.com/EighteenZi/rocksdb_wiki/blob/master/Benchmarking-tools.md)

2. Calculate space amplification

rocksdb디렉토리안에 있는 LOG 파일을 보면 db_bench에서 설정한 30초간격으로 stat이 기록되어있는 것을 볼 수 있다. 가장 마지막 Compaction stat을 보고 계산해보자.

Space amplification은 (L1 size + L2 size) / L2 size로 구할 수 있다.
L1 size = 31.59MB
L2 size = 55.66MB

Space amplification = (31.59 + 55.66) / 55.66 = 1.568

Reference

profile
천천히 꾸준히

0개의 댓글