블로그는 나의 힘!
[ Programing ]/Interview2021. 12. 16. 11:57

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
 

 

SQLite 주의할 점 및 팁 - DB LOCK(락), SQLiteOpenHelper

※ DB 락 문제 : SQLite의 가장 큰 문제는 DB락이다. DB 작업은 메인 스레드보다는 백그라운드 스레드에서 사용되는 게 권장되 스레드간에 DB 작업 시 락을 잡는 시점이 겹치면서 문제가 발생한다. -

programmingfbf7290.tistory.com



 

'[ 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
Posted by Mister_Q