분류없음2012.02.10 15:23


기본적으로 SQLITE는 롤백 저널을 사용하여 데이터 보존 및 변경을 하였다.
이럴 경우 조회하는 동시에 INSERT와 같이 변경하려고 할 때 Database Lock이 걸려 수행하지 못한다.
그런데 3.7.0버전부터 WAL(Write Ahead Log)라는 것을 지원하면 가능하다.

WAL은 롤백 저널과 다르게 원본 데이터베이스를 변경하지 않고 WAL 파일에 변경내역을 저장하고 특정 이상의
페이지의 변경 내역이 발생하면 체크포인트라 하여 실제 원본 데이터 베이스를 변경한다.


그렇기 때문에 롤백 저널에서 동시접근 시 발생하는 Databse LOCK 문제를 해결할 수 있다.

WAL 저널로 변경하는 방법은 아래와 같다.

PRAGMA journal_mode=WAL;

(성공할 경우 wal 를 리턴한다.)


그리고 다시 롤백 저널로 복원하려면 아래와 같이 하면 된다.

PRAGMA journal_mode=DELETE;


wal 관련해서 체크포인트 설정하는 함수등이 있는데 아직 잘 몰라서 패쓰!!

정말이지 SQLITE 잘 만들어진 것 같다

Posted by nocode