SQLite Multi-Thread 지원

By lhcsoft - 4월 26, 2019

Muti-Thread Application에서 SQLite를 사용하는 방안에 대해서 설명한다.



SQLite 다음과 같이 3가지 thread 모드를 지원하고 있다.




1) Single-thread

   모든 mutexes가 disable 된다.
   하나 이상의 thread에서 정상적으로 동작하지 않을 수 있다.



 2) Multi-thread

   multiple thread에서 사용 가능하다.
   그러나, 하나의 database connection은 동시에 2개이상의 thread에서 사용하면 안된다.



3) Serialized

   multiple thread에서 제한없이 안전하게 사용할 수 있다.





thread 모드를 설정하는 방식은 아래와 같이 3가지 방식이 있다.




1) Compile-time 설정하는 방식

   SQLITE_THREADSAFE 매개변수에 설정하면 된다.
   Single-thread: -DSQLITE_THREADSAFE=0 로 설정
   Multi-thread: -DSQLITE_THREADSAFE=2 로 설정
   Serialized: -DSQLITE_THREADSAFE=1 로 설정



2) Start-time에 설정하는 방식

    sqlite3_config() 함수를 이용하여 설정할수 있다.
    Single-thread: SQLITE_CONFIG_SINGLETHREAD 로 설정
    Multi-thread: SQLITE_CONFIG_MULTITHITREAD 로 설정
    Serialized: SQLITE_CONFIG_SERIALIZED 로 설정



3) Run-time에 설정하는 방식

    sqlite3_open_v2() 함수를 이용하여 설정할 수 있다.
    Single-thread: flag 사용하지 않거나, sqlite3_open() 또는 sqlite3_open16() 함수를 사용하여 open 한다.
    Multi-thread: SQLITE_OPEN_NOMUTEX flag 사용
    Serialized: SQLITE_OPEN_FULLMUTEX flag 사용



위 내용은 개인적으로 검토한 내용이므로 참고만 하시기 바랍니다.

감사합니다.

  • Share:

You Might Also Like

0 개의 댓글