SQLite multi-thread 및 multi-process 지원에 대해 설명한다.
1. multi-process 지원
- 구현기술: OS의 File Locking 기능을 이용하여 multi-process 지원한다.
SQLite에서 기본적으로 지원한다.
즉, 사용자가 별도로 설정하지 않아도 된다.
2. multi-thread 지원
- 구현기술:
관련 API: int sqlite3_busy_timeout(sqlite3*, int ms);
설명:
API를 이용하여 timeout을 설정한다.
한개의 thread에서 SQLite DB 접근 상태에서,
다른 thread에서 SQLite DB 접근시 timeout 시간동안 delay후 처리한다.
delay된 작업이 thread 경합에 의해 또 다시 처리되지 않으면,
다시 delay 후 처리한다.
delay time은 SQLite 내부 알고리즘에 의해 점점 길어진다.
이슈사항:
지연 처리 작업이 많아지면 overhead 발생.
해결방안:
응용에서 locking 기능을 이용하여 SQLite 동시접근을 하지 않도록 하는것이
좋다.
(응용에 따라 최적으로 처리할 수 있기 때문에)
위 내용은 개인적으로 검토한 내용이므로 참고만 하시기 바랍니다.
감사합니다.