[SQLite] VACUUM
SQLite의 VACUUM
문은 데이터베이스 파일의 크기를 줄이는 데 사용됩니다. 데이터를 삭제하거나 변경할 때, SQLite는 물리적인 데이터베이스 파일에서 공간을 즉시 재활용하지 않습니다. 이로 인해 데이터베이스 파일이 실제 데이터보다 크게 유지될 수 있으며, 이는 저장 공간을 낭비하고 성능을 저하시킬 수 있습니다. VACUUM
명령을 실행하면 SQLite는 데이터베이스 파일의 크기를 최적화하여 불필요한 공간을 회수합니다.
VACUUM 명령의 작동 방식
- SQLite는 데이터베이스의 전체 내용을 임시 파일로 복사합니다. 이 과정에서 데이터는 연속적으로 배치되어 불필요한 공간이 제거됩니다.
- 복사가 완료되면, 원본 데이터베이스 파일은 임시 파일로 대체됩니다.
- 이 과정을 통해 데이터베이스 파일의 빈 공간이 제거되고 파일 크기가 줄어듭니다.
VACUUM 명령 사용
VACUUM;
이 명령은 추가 파라미터 없이 데이터베이스 전체에 대해 실행됩니다. 특정 테이블이나 인덱스에 대해서만 VACUUM
을 실행하는 것은 지원되지 않습니다.
VACUUM의 효과
- 저장 공간 절약: 사용되지 않는 공간을 회수하여 데이터베이스 파일 크기를 줄입니다.
- 성능 향상: 데이터베이스의 단편화를 줄여 데이터 접근 속도를 향상시킬 수 있습니다.
- 데이터 무결성 유지:
VACUUM
과정에서 데이터베이스 파일이 재구성되므로, 데이터 구조의 무결성을 검증하는 효과도 있습니다.
주의 사항
VACUUM
명령은 데이터베이스 전체를 재작성해야 하므로, 큰 데이터베이스에서는 시간이 오래 걸릴 수 있습니다. 따라서,VACUUM
은 시스템 부하가 낮은 시간에 실행하는 것이 좋습니다.VACUUM
실행 중에는 데이터베이스에 대한 다른 작업을 수행할 수 없습니다.- 데이터베이스가
VACUUM
을 지원하지 않는 모드(예: WAL 모드)에서 실행 중일 경우, 명령을 실행하기 전에 모드를 변경해야 할 수 있습니다.
VACUUM
은 데이터베이스 유지 관리의 중요한 부분으로, 주기적으로 실행하여 데이터베이스의 효율성과 성능을 유지하는 데 도움이 됩니다.