logo

[SQLite] VACUUM

SQLite의 VACUUM 문은 데이터베이스 파일의 크기를 줄이는 데 사용됩니다. 데이터를 삭제하거나 변경할 때, SQLite는 물리적인 데이터베이스 파일에서 공간을 즉시 재활용하지 않습니다. 이로 인해 데이터베이스 파일이 실제 데이터보다 크게 유지될 수 있으며, 이는 저장 공간을 낭비하고 성능을 저하시킬 수 있습니다. VACUUM 명령을 실행하면 SQLite는 데이터베이스 파일의 크기를 최적화하여 불필요한 공간을 회수합니다.

 

VACUUM 명령의 작동 방식

  • SQLite는 데이터베이스의 전체 내용을 임시 파일로 복사합니다. 이 과정에서 데이터는 연속적으로 배치되어 불필요한 공간이 제거됩니다.
  • 복사가 완료되면, 원본 데이터베이스 파일은 임시 파일로 대체됩니다.
  • 이 과정을 통해 데이터베이스 파일의 빈 공간이 제거되고 파일 크기가 줄어듭니다.
 

VACUUM 명령 사용

VACUUM;

이 명령은 추가 파라미터 없이 데이터베이스 전체에 대해 실행됩니다. 특정 테이블이나 인덱스에 대해서만 VACUUM을 실행하는 것은 지원되지 않습니다.

 

VACUUM의 효과

  • 저장 공간 절약: 사용되지 않는 공간을 회수하여 데이터베이스 파일 크기를 줄입니다.
  • 성능 향상: 데이터베이스의 단편화를 줄여 데이터 접근 속도를 향상시킬 수 있습니다.
  • 데이터 무결성 유지: VACUUM 과정에서 데이터베이스 파일이 재구성되므로, 데이터 구조의 무결성을 검증하는 효과도 있습니다.
 

주의 사항

  • VACUUM 명령은 데이터베이스 전체를 재작성해야 하므로, 큰 데이터베이스에서는 시간이 오래 걸릴 수 있습니다. 따라서, VACUUM은 시스템 부하가 낮은 시간에 실행하는 것이 좋습니다.
  • VACUUM 실행 중에는 데이터베이스에 대한 다른 작업을 수행할 수 없습니다.
  • 데이터베이스가 VACUUM을 지원하지 않는 모드(예: WAL 모드)에서 실행 중일 경우, 명령을 실행하기 전에 모드를 변경해야 할 수 있습니다.

VACUUM은 데이터베이스 유지 관리의 중요한 부분으로, 주기적으로 실행하여 데이터베이스의 효율성과 성능을 유지하는 데 도움이 됩니다.

Previous
셸 명령