본문 바로가기
프로그래밍 놀이터/Database

sqlite 의 transaction mode 와 lock 의 종류 특성.

by 돼지왕 왕돼지 2014. 8. 31.
반응형

sqlite 의 transaction mode 와 lock 의 종류 특성.



-
Transaction 은 deffered, immediate, exclusive 3가지 모드로 진행될 수 있다.

-
기본 transaction 은 deffered 이다.

-
DEFFERED 의 lock
    이 모드일 때 database 에 실질적인 action 이 있기 전까지는 lock 을 잡지 않는다.
    DB 에 read action 이 생기면 SHARED lock 이 걸린다.
    반대로 DB 에 첫 write action 이 생기면 RESERVED lock 이 걸린다.


-
IMMEDIATE 의 lock
    이 모드일 때는 begin 명령이 떨어지자마자 RESERVED lock 을 걸어버린다.
    이 상태에서는 BEGIN IMMEDIATE 나 BEGIN EXCLUSIVE 를 호출 할 수 없다.
    단 database 로부터 read 는 계속 가능한다.

-
EXCLUSIVE 의 lock
    이 모드일 때는 begin 명령이 떨어지자마자 EXCLUSIVE lock 을 건다.
    EXCLUSIVE lock 상태에서는 read uncommitted 이외에는 다른 db connection 은 불허된다.


-
SHARED lock
    read 가능하나 write 불가능한 lock.
    여러개의 SHARED lock 이 공존할 수 있다.



-
RESERVED lock
    process 가 db 의 write 를 계획중이라는 의미로 현재는 read 중이라는 의미이다.
한번에 하나의 RESERVED lock 을 잡을 수 있다.
    PENDING lock 과는 다르게 RESERVED lock 을 잡은 상태에서 추가로 SHARED lock 을 여러번 잡을 수 ( acquired ) 있다.

-
PENDING lock
    Java 의 일반적 lock 과 비슷한 개념으로 lock 을 잡는 순간 write 를 할 것이라는 의미.
    모든 SHARED lock 이 풀리기를 기다린 후 바로 EXCLUSIVE lock 을 잡는다는 의미이다.
    PENDING lock 이 active 된 상황에서는 추가로 SHARED lock 을 잡을 수 없다.

-
EXCLUSIVE lock
    db 에 쓰기 위한 lock 이다.
    EXCLUSIVE lock 은 다른 lock 과 동시에 존재할 수 없다.
    동시성을 위해 EXCLUSIVE lock 은 최소화하여 잡아야 한다.





반응형

'프로그래밍 놀이터 > Database' 카테고리의 다른 글

[SQLite3] 04. SQLite3 C API 기초  (4) 2018.05.20
[SQLite3] 03. SQL 고급 #2  (0) 2018.05.19
[SQLite3] 03. SQL 고급 #1  (0) 2018.05.18
[SQLite3] 02. SQLite3 설치  (0) 2018.05.17
[SQLite3] 01. SQLite 소개  (0) 2018.05.16

댓글