C.W.K.
Stream
Lesson 08 of 10 · published

VACUUM, Page Size, Cache

~12 min · vacuum, page-size, cache, maintenance

Level 0Scout
0 XP0/80 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

디스크 hygiene + 메모리 튜닝

Storage 레이어 SQLite 성능에 영향 주는 노브 3 개:

  • VACUUM — DB 파일 재구축, 삭제 row 공간 회수 + B-tree defrag. 느림 (파일 전체 write), 큰 삭제 후 주기적 유용.
  • PRAGMA page_size = N — B-tree storage 단위. 기본 4096 byte (3.12 이후). 큰 page = sequential scan 의 I/O 적음 + 작은 row 의 낭비 공간 많음. 테이블 만들기 설정, 또는 변경 후 VACUUM.
  • PRAGMA cache_size = N — in-memory page cache. 음수 값 = kibibyte (예: -64000 = 64 MB). 큰 cache = disk hit 적음.
Warning: VACUUM 이 DB 사이즈의 최대 2x 임시 디스크 필요. 50 GB DB 면 100 GB 여유. 계획. auto_vacuum 이 work 를 incrementalize 하는 대안인데 자체 트레이드오프 있음.

Code

Storage 튜닝 시퀀스·sql
-- 현재 설정 검사
PRAGMA page_size;        -- 4096
PRAGMA cache_size;       -- -2000  (~2 MB; SQLite 기본)
PRAGMA page_count;       -- DB 의 page 수
PRAGMA freelist_count;   -- 재사용 가능 page

-- Read-heavy 워크로드 더 큰 cache (64 MB)
PRAGMA cache_size = -65536;

-- 큰 삭제 후 공간 회수
VACUUM;
Per-table 사이즈 — capacity planning 유용·sql
-- dbstat virtual 테이블이 standard 빌드에 로드됨
SELECT name, sum(payload) AS bytes
FROM   dbstat
GROUP  BY name
ORDER  BY bytes DESC;

External links

Exercise

최근 수백만 row 삭제한 DB 에서 VACUUM 전후 파일 사이즈 측정. VACUUM 시간 + free 공간 기록. 그 다음 cache_size = -2000 (2 MB) vs cache_size = -65536 (64 MB) 로 cold/warm cache 의 range scan latency 비교.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.