본문 바로가기
WIKI 기술 지식 베이스

Checkpoint

원문 보기 위키 갱신

로컬 WAL을 압축해 디스크 사용량을 한도 안으로 묶어 두는 방법이에요. 동기화 상태는 그대로 보존하면서 말이에요.

출처: 문서

본문

이 사용법은 로컬 Turso 데이터베이스를 동기화하기 위해 Turso Cloud를 사용하며, 계정이 있다고 가정해요.

Overview

동기화 엔진은 로컬 쓰기를 추적하기 위해 WAL(Write-Ahead Log)을 사용해요. 변경을 거듭할수록 WAL은 점점 커져요. 체크포인트는 커밋된 프레임을 메인 데이터베이스 파일로 옮긴 다음 WAL을 잘라내어(truncate) 압축해요.

동기화 데이터베이스에서는 자동 체크포인트가 비활성화되어 있어요. 반드시 checkpoint()를 직접 호출해야 해요.

Why Checkpoint Matters

체크포인트를 하지 않으면 WAL은 한도 없이 계속 커져요. 쓰기를 많이 하고 나면 WAL이 데이터베이스 자체보다 훨씬 커질 수 있어요. 체크포인트는 그 디스크 공간을 되찾아 줘요.

stats()로 직접 관찰할 수 있어요.

```ts TypeScript const before = await db.stats(); console.log('WAL size before:', before.mainWalSize);

await db.checkpoint();

const after = await db.stats(); console.log('WAL size after:', after.mainWalSize);


```py Python
before = conn.stats()
print("WAL size before:", before.main_wal_size)

conn.checkpoint()

after = conn.stats()
print("WAL size after:", after.main_wal_size)
before, _ := db.Stats(ctx)
log.Printf("WAL size before: %d", before.MainWalSize)

db.Checkpoint(ctx)

after, _ := db.Stats(ctx)
log.Printf("WAL size after: %d", after.MainWalSize)

When to Checkpoint

쓰기 패턴에 맞춰 checkpoint()를 주기적으로 호출해요.

  • 대량 삽입 후 — 한 번에 많은 행을 삽입했다면 그 후에 체크포인트해서 WAL 공간을 회수하세요
  • 정해진 일정으로 — 꾸준한 쓰기 워크로드라면 정기적인 간격(예: 몇 분마다)으로 체크포인트하세요
  • WAL 크기가 커졌을 때 — stats().mainWalSize로 모니터링하다가 임계값을 넘으면 체크포인트하세요
```ts TypeScript await db.checkpoint(); ```
conn.checkpoint()
if err := db.Checkpoint(ctx); err != nil {
\treturn err
}

더 알아보기 (Learn more)