2022. 11. 14. 19:46ㆍDB/MongoDB
- 몽고 디비에서 트랜잭션을 수행할 때의 제한 사항
버전의 제한 : 4.2 버전 이상에서만 지원.
트랜잭션으로 사용할 수 있는 명령어에 제한.
- 트랜잭션의 특성 4가지
Atomicity
Consistency
Isolation
Durability
- 몽고디비에서는 트랜잭션을 수행할 때 "세션"을 할당받아야 한다.
- 트랜잭션 예
- 트랜잭션 실행
- 몽고디비에서 API를 사용한 트랜잭션을 사용하는 두 가지 방법
코어 API : 관계형 데이터베이스와 유사한 구문 사용
콜백 API : 트랜잭션 사용에 권장되는 접근 방식.
두 API에서 개발자는 트랜잭션에서 사용할 논리 세션을 시작해야 하며, 트랜잭션의 작업이 특정 논리 세션과 연결되어야 한다.
- 트랜잭션 실행에 대한 시간 제한
트랜잭션이 잠금을 획득하기 위한 대기 시간, 모든 트랜잭션의 실행될 최대 길이를 제어하는 것과 관련
트랜잭션의 최대 실행 시간은 기본적으로 1분 이하
-Op log
마스터 노드에 요청되는 연산들이 로그로 기록되는 파일.
크기 제한은 16mb이하여야 함
-몽고 디비에서 잠금을 사용하는 목적
동시성 제어, 원자성 보장
- 몽고디비 잠금 레벨(granule)
Global : 모든 데이터베이스가 잠기는 MongoDB 인스턴스 수준 잠금
Database : 언급된 데이터베이스가 잠기는 데이터베이스 수준 잠금
Collection : 여기서 잠금은 컬렉션 수준에서 처리
Document : 특정 도큐먼트만 잠기는 도큐먼트 수준 잠금
- Lock의 종류
S (Shared Lock) : 공유 잠금
X (Exclusive Lock) : 독점 잠금
IS (Intent Shared Lock) : 내부에 공유 잠금 설정시 사용
IX (Intent Shared Lock) : 내부에 독점 잠금 설정시 사용
- Lock의 양립성 테이블
보유/ 요청 | X | IX | S | IS |
X | X | X | X | X |
IX | X | O | X | O |
S | X | X | O | O |
IS | X | O | O | O |
인텐션 lock일 때 독점 잠금은 허용되지 않음
공유 lock과 인텐션 lock은 허용됨
인텐션 lock들은 호환 가능
'DB > MongoDB' 카테고리의 다른 글
데이터 모델링과 인덱스 (1) (0) | 2022.11.14 |
---|---|
집계 명령어(3) (0) | 2022.11.14 |
집계 명령어(2) (0) | 2022.11.01 |
집계 명령어(1) (0) | 2022.11.01 |
쿼리 작성하기(2) (0) | 2022.10.31 |