우리는 SQLite 데이터베이스에서 매우 큰 트랜잭션을 수행하여 WAL 파일이 매우 커질 수 있습니다. (대용량 트랜잭션의 경우 최대 1GB 가끔 나타납니다.) 트랜잭션 도중에 WAL 파일을 체크 포인트 할 수 있습니까? sqlite3_wal_checkpoint()
을 호출하거나 WAL 체크 포인트 PRAGMA 문을 실행하면 SQLITE_BUSY가 반환됩니다.트랜잭션 중에 WAL 파일을 체크 포인트 할 수 있습니까?
2
A
답변
4
아니요. 이것은 트랜잭션의 전체 지점입니다. WAL (또는 저널 파일)은 성공적으로 커밋 된 데이터를 공식적으로 유지합니다. 그 때까지 프로그램 크래시, 컴퓨터 재부팅 등의 문제가 발생하면 WAL 또는 저널 파일을 사용하여 커밋되지 않은 작업을 안전하게 롤백 (실행 취소) 할 수 있습니다. 이 커밋되지 않은 트랜잭션의 일부만 이동하면이 목적을 무효화합니다.
SQLite 문서는 체크 포인팅을 moving the WAL file transactions back into the database으로 정의합니다. 즉, 검사 점 지정은 하나 이상의 트랜잭션을 WAL에서 이동하지만 큰 커밋되지 않은 트랜잭션의 일부는 이동하지 않습니다. - 당신이 할 수있는 경우 작은 청크에 커밋
- 은 큰 거래를 피하십시오 :
이 문제에 대한 몇 가지 가능한 해결 방법이 있습니다. 물론 응용 프로그램에 따라 항상 가능한 것은 아닙니다.
PRAGMA journal_mode=DELETE
과 함께 오래된 저널링 모드를 사용하십시오. 새로운 WAL 모드 (PRAGMA journal_mode=WAL
)보다 약간 느리지 만 제 경험상 훨씬 작은 저널 파일을 만드는 경향이 있으며 트랜잭션이 성공적으로 커밋되면 삭제됩니다. 예를 들어, Android 4.x는 여전히 이전 저널링 모드를 사용하고 있습니다. 플래시에서 더 빠르게 작동하는 경향이 있으며 거대한 임시 또는 저널 파일을 생성하지 않습니다.
관련 문제
- 1. 트랜잭션 중에 실패 할 경우 파일을 삭제하십시오.
- 2. pg_LSN을 wAL postgresql로 변환
- 3. 체크 아웃 중에 SVN에서 파일을 변경할 수 있습니까?
- 4. InnoDB 트랜잭션 중에 보류중인 쿼리를 검색 할 수 있습니까?
- 5. 트랜잭션 중에 SQL Server 데이터베이스에 응답 할 수 있습니까?
- 6. SQLite에서 -wal 파일이 사라지는 이유는 무엇입니까?
- 7. 아무도 체크 포인트 프로세스가 무엇인지 설명 할 수 있습니까?
- 8. SQLite 트랜잭션 내에서 쿼리 할 수 있습니까?
- 9. 방법의 PostgreSQL WAL 파일을 읽으려고
- 10. 체크 포인트 파일을 찾을 수 없으므로 평가 그래프가 복원됩니다.
- 11. 트랜잭션 중에 레코드가 삭제되었습니다.
- 12. HBase의 체크 포인트
- 13. 포인트 값을 pyshp로 추가 할 수 있습니까
- 14. WAL 시퀀스 번호 무한대?
- 15. Gradle 빌드 중에 어떻게 .properties 파일을 변환 할 수 있습니까?
- 16. 디버깅 - Windows 디버거에 체크 포인트 기능이 있습니까?
- 17. XNA에서 체크 포인트 만들기
- 18. sqlite는 WAL 모드에서 SQLITE_BUSY를 반환합니다.
- 19. 체크 포인트 벡터
- 20. TensorFlow에서 움직이는 체크 포인트
- 21. qemu 에뮬레이터에 체크 포인트 기능이 있습니까?
- 22. 는 체크 포인트 장치
- 23. 체크 아웃 한 파일을 다른보기의 한보기에서 병합 할 수 있습니까
- 24. .svn 폴더가없는 Subversion에서 파일을 체크 아웃 할 수 있습니까?
- 25. GitHub Desktop에서 체크 아웃 할 수 있습니까?
- 26. 다각형 내의 체크 포인트
- 27. malloc 체크 포인트
- 28. SQLite WAL 성능 향상
- 29. PostgreSQL 레코드 버전 제어에 WAL 파일을 사용 하시겠습니까?
- 30. 데이터베이스에서 svn 체크 아웃을 할 수 있습니까?
불행히도 우리 애플리케이션에서는 트랜잭션을 더 작은 트랜잭션으로 청크 처리 할 수 없습니다. 이것은 내가 예상했던 대답 이었지만 대규모 트랜잭션 중에 WAL 파일을 작게 유지할 수있는 구현하기 쉬운 기법이 있기를 바랬습니다. 그래도 고마워! – zanneth