2012-10-17 2 views
12

wal_checkpoint (FULL)를 실행 한 후 cp commmand를 사용하여 SQLite DB를 백업하고 있습니다. DB는 WAL 모드에서 사용되므로 내 폴더에는 -shm 및 -wal과 같은 다른 파일이 있습니다. wal_checkpoint (FULL)를 실행하면 WAL 파일의 변경 사항이 데이터베이스에 커밋됩니다. 체크 포인트를 실행 한 후에 -wal 및 -shm 파일이 삭제되는지 궁금합니다. 그렇지 않다면 무엇이 포함되어 있습니까?-SQLite DB의 shm 및 -wal 파일

SQLite 백업 API를 사용하지 않아서 백업 프로세스가 좋지 않다는 것을 알고 있습니다. 이것은 내 코드의 버그입니다.

누구든지 체크 포인트를 실행 한 후 -shm 및 -wal 파일에 어떤 내용을 포함 시킬지 제안 할 수 있습니까?

제공된 모든 링크가 도움이됩니다.

감사

답변

14

수많은 내용을 검색 한 후에는 다음과 같은 점을 나열합니다.
1. -shm 파일에 -wal 파일의 색인이 포함되어 있습니다. -shm은 -wal 파일 읽기 성능을 향상시킵니다.
2. -shm 파일이 삭제되면 다음에 데이터베이스에 액세스 할 때 다시 생성됩니다.
3. 검사 점이 실행되면 -wal 파일을 삭제할 수 있습니다.

안전 백업
1. 백업을 수행하는 데 SQLite 백업 기능을 사용하는 것이 좋습니다. SQLite 라이브러리에는 온라인 데이터베이스의 백업까지 할 수있는 기능이 있습니다.
2. (1)을 사용하지 않으려면 데이터베이스 핸들을 닫는 것이 가장 좋습니다. 이것은 데이터베이스 파일의 깨끗하고 일관된 상태를 보장하고 -shm 및 -wal 파일도 삭제합니다. 3. SQLite 데이터베이스 파일을 네트워크를 통해 전송하려는 경우 진공 명령을 검사 점 이후에 실행해야합니다. 이렇게하면 데이터베이스 파일의 조각화가 제거되어 크기가 줄어들어 네트워크를 통해 더 적은 데이터를 전송할 수 있습니다. 그것은 단지 제안 일뿐입니다.
은 체크 포인트를 실행 한 후 모든 것을 포함 할 파일을 -wal겠습니까이 좋은 줄
http://www.dbtalks.com/uploadfile/ca5be5/write-ahead-logging-concept-in-sqlite/
http://www.mentby.com/Group/sqlite-users/database-disk-image-is-malformed-37x.html

3

-shm 파일은 영구 데이터를 포함하지 않습니다.

마지막 연결이 닫히면 데이터베이스에 자동으로 검사 점이 지정되고 -wal 파일이 삭제됩니다. 이것은 검사 점 다음에 다른 연결이없는 경우 -wal 파일에 중요한 데이터가 들어 있지 않음을 의미합니다.

가능하면 백업을하기 전에 연결을 닫아야합니다.

+0

아래를 참조하십시오. 연결이 닫히지 않았다고 생각하십시오. –

관련 문제