MS-SQL 트랜잭션(작업 단위) 동작 방식.
1. Deferred
락을 뒤로 미룬다.
트랜잭션 시작 때 락을 잡지 않다가 읽기 작업이 있으면 공유 락을 잡고 쓰기 작업이 있다면 예약 락을 잡는다.
즉, 락이 뒤로 미뤄지기 때문에 다른 스레드에서 DB 작업이 가능.
2. Immediate
트랜잭션을 시작할 때 예약 락이 잡힌다.
다른 스레드에서 읽기는 가능하나 예약 락은 1개만 가능해 다른 Immediate 트랜잭션 시작 불가.
3. Exclusive
트랜잭션을 시작할 때 배타 락이 잡힌다.
트랜잭션 처음부터 끝까지 다른 스레드 DB 작업 불가.
※ 안드로이드에서는 Immediated, exclusive 동작 방식만 지원
Exclusive 동작 방식 보다 Immediate 권장.
기본적으로 안드로이드는 Exclusive 방식 지원.
따라서, db.beginTransaction() 보다 Immediate 동작 방식인 db.beginTransactionNonExclusive() 권장.
DB 락 문제 조금 이나마 회피 가능.
참조 : https://programmingfbf7290.tistory.com/entry/SQLite
'[ Programing ] > Interview' 카테고리의 다른 글
Interview DB Connection Pool (0) | 2021.12.16 |
---|---|
Interview MS-SQL DB 쿼리 내 락 (0) | 2021.12.16 |
Interview MS-SQL SP 장단점. (0) | 2021.12.16 |
Interview MS-SQL Clustered / Non clustered 차이. (0) | 2021.12.16 |
Interviw TCP / UDP 차이. (0) | 2021.12.15 |