2016-11-23 4 views
0

그래서 iMessages를 가지고 놀고 그들을 백업하는 방법과 다양한 것을 생각하십시오.iMessage 앱 저장 위치 - chat.db-wal이 즉시 업데이트되었지만 chat.db에 잠시 시간이 걸리는 이유는 무엇입니까?

~/Library/Messages에서 위치를 찾았습니다.

세 개의 파일

1. chat.db 
2. chat.db-wal 
3. chat.db-shm 

있습니다 나는 chat.db - 월마트 즉시 변경하지만 chat.db 업데이트 잠시 소요 볼 사람에게 iMessage를를 전송하는 동안 파일 변경을 감시 노드 스크립트를 실행하는 경우 .

최대한 빨리 메시지를 보내고 싶지만 .db-wal 파일을 읽을 수 있는지 잘 모르겠습니다. 누구든지 내가 그 파일을 읽을 수 있는지 안다? 또는 .db 파일을 업데이트하는 데 시간이 오래 걸리는 이유는 무엇입니까?

감사합니다.

답변

2

모두 괜찮습니다. 귀하의 데이터가 있습니다. 이것은 SQLite가 작동하는 방법입니다.

충돌이나 전원이 꺼져도 데이터가 올바르게 저장되는 ACID 트랜잭션을 지원하기 위해 SQLite는 먼저 "write-ahead log"(*-wal 파일)에 데이터를 기록합니다. 데이터베이스가 제대로 닫히거나 미리 쓰기 로그가 가득 차면 SQLite는 데이터베이스 파일을 로그의 내용으로 업데이트합니다.

SQLite를 읽을 때 SQLite는 먼저 여러 개의 연결에서 동일한 데이터베이스를 사용하고 있어도 미리 쓰기 로그를 참조합니다. 로그의 데이터는 여전히 "데이터베이스에 있음"입니다.

SQLite는 데이터베이스를 닫을 때 데이터베이스에 로그를 적용해야합니다. 그렇지 않은 경우 PRAGMA wal_checkpoint;을 실행하여 로그 파일을 수동으로 체크 포인트 할 수 있습니다.

해당 사항 : -wal 파일을 삭제하지 마십시오. 특히 이전에 데이터베이스를 완전히 닫지 않은 경우에는 삭제하지 마십시오.

SQLite는의 미리 쓰기 로깅에 대한

자세한 내용은 the SQLite documentation.

에서 찾을 수 있습니다