반응형
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 은 최소화하여 잡아야 한다.
-
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 |
댓글