1.Transaction, ACID에 대해서 설명해 보세요.
2.Transaction의 Isolation Level에 대해서 설명해 보세요.
1.Transaction, ACID
트랜잭션은 읽기와 쓰기를 하나의 논리적 단위로 수행하는 작업이다.
Ex) A -> B로 송금할때 A에서 출금이 되고 B로 송금되기 전에 시스템이 멈추면?
이런것을 방지하기 위해 하나의 논리단위로 수행하는 것.
ACID는 이러한 일관된 트랜잭션 처리를 보장하는 속성을 말한다.
Atomicity: 트랜잭션이 분리할 수 없는 단일 작업 단위로 처리되도록 합니다. 트랜잭션의 일부가 실패하면 전체 트랜잭션이 롤백되고 데이터베이스가 이전 상태로 돌아갑니다.
Consistency:데이터는 미리 정의된 규칙에서만 수정이 가능한 특성을 의미합니다. 숫자컬럼에 문자열값을 저장이 안되도록 보장해줍니다.
Isolation: 이 속성은 각 트랜잭션이 다른 트랜잭션과 격리되어 실행되도록 합니다 A와 B 두개의 트랜젝션이 실행되고 있을 때, A의 작업들이 B에게 보여지는 정도를 의미합니다.
Durability:한번 반영(커밋)된 트랜젝션의 내용은 영원히 적용되는 특성을 의미합니다.이는 데이터베이스가 모든 장애로부터 복구할 수 있고 여전히 데이터의 무결성을 유지할 수 있음을 의미합니다.
2.트랜잭션의 격리수준
데이터베이스 시스템에서 트랜잭션의 격리 수준은 트랜잭션이 커밋되기 전에 다른 트랜잭션이 변경한 내용을 볼 수 있는 정도를 결정합니다. 격리 수준은 ANSI SQL 표준에 의해 정의되며 데이터 일관성과 동시성 간에 서로 다른 장단점을 제공합니다.
READ UNCOMMITTE:
각 트랜잭션에서의 변경 내용이 COMMIT이나 ROLLBACK 여부에 상관 없이 다른 트랜잭션에서 값을 읽을 수 있다.
*DIRTY READ현상 발생: 트랜잭션이 작업이 완료되지 않았는데도 다른 트랜잭션에서 볼 수 있게 되는 현상
READ COMMITTED:
RDB에서 대부분 기본적으로 사용되고 있는 격리 수준이다.
Dirty Read와 같은 현상은 발생하지 않는다.
REPEATABLE READ:
MySQL에서는 트랜잭션마다 트랜잭션 ID를 부여하여 트랜잭션 ID보다 작은 트랜잭션 번호에서 변경한 것만 읽게 된.
Undo 공간에 백업해두고 실제 레코드 값을 변경한다.
SERIALIZABLE:
트랜잭션이 완료될 때까지 SELECT 문장이 사용되는 모든 데이터에 Shared Lock이 걸리는 계층 가장 엄격한 격리 수준으로 완벽한 읽기 일관성 모드를 제공함
애플리케이션의 요구 사항에 따라 각 트랜잭션에 적합한 격리 수준을 선택하는 것이 중요합니다. 격리 수준이 높을수록 동시성은 낮아지고 일관성은 높아집니다. 반대의 경우도 마찬가지입니다.
'Computer Science' 카테고리의 다른 글
[인공지능] Normalization과 Regularization (0) | 2023.03.23 |
---|---|
[인공지능] 하이퍼 파라미터 튜닝은 어떻게 할 수 있을까? (0) | 2023.03.22 |
[운영체제] Deadlock이란? (0) | 2023.03.16 |
0309_1 context switching란? (0) | 2023.03.09 |