SQLite 진공
VACUUM 명령은 마스터 데이터베이스의 내용을 임시 데이터베이스 파일에 복사한 다음 마스터 데이터베이스를 지우고 복사본에서 원본 데이터베이스 파일을 다시 로드합니다. 이렇게 하면 사용 가능한 페이지가 제거되고 테이블의 데이터가 연속적으로 정렬되며 데이터베이스 파일 구조가 정리됩니다.
테이블에 명시적인 정수 기본 키(INTEGER PRIMARY KEY)가 없는 경우 VACUUM 명령은 테이블 항목의 행 ID(ROWID)를 변경할 수 있습니다. VACUUM 명령은 master 데이터베이스에서만 작동하며 첨부된 데이터베이스 파일에서는 VACUUM 명령을 사용할 수 없습니다.
활성 트랜잭션이 있으면 VACUUM 명령이 실패합니다. VACUUM 명령은 모든 메모리 내 데이터베이스에 대한 작업입니다. VACUUM 명령은 데이터베이스 파일을 처음부터 다시 생성하므로 VACUUM을 사용하여 많은 데이터베이스별 구성 매개변수를 수정할 수도 있습니다.
MANUAL VACUUM
다음은 전체 데이터베이스에 대해 명령 프롬프트에서 VACUUM 명령을 실행하는 구문입니다.
$sqlite3 database_name "VACUUM;"
또한 SQLite에서 VACUUM을 실행할 수도 있습니다.
sqlite> VACUUM;
아래와 같이 특정 테이블에서 VACUUM을 실행할 수도 있습니다.
sqlite> VACUUM table_name;
Auto-VACCUM(Auto-VACUUM)
SQLite의 Auto -VACUUM은 VACUUM과 동일하지 않습니다. 단지 사용 가능한 페이지를 데이터베이스 끝으로 이동하여 데이터베이스 크기를 줄입니다. 이렇게 하면 데이터베이스가 눈에 띄게 조각화되는 반면 VACUUM은 조각화 방지 기능을 제공합니다. 따라서 자동 VACUUM은 데이터베이스를 더 작게 만듭니다.
SQLite 프롬프트에서 다음 컴파일을 실행하여 SQLite에 대한 자동 VACUUM을 활성화/비활성화할 수 있습니다.
sqlite> PRAGMA auto_vacuum = NONE; -- 0 means disable auto vacuum sqlite> PRAGMA auto_vacuum = INCREMENTAL; -- 1 means enable incremental vacuum sqlite> PRAGMA auto_vacuum = FULL; -- 2 means enable full auto vacuum
명령 프롬프트에서 -vacuum 명령을 실행하여 자동을 확인할 수 있습니다. 설정:
아아아아