※ 데이터베이스의 트랜잭션의 개념 중 하나로 내용이 많아 별도로 작성하였습니다.
데이터베이스의 고립화
데이터베이스는 데이터의 무결성을 보장하는 것이 중요합니다.
무결성을 보장하기 위한 특징으로는 Atomicity(원자성), Consistency(일관성), Isolation(고립성), Durability(영속성) 이 있습니다.
데이터베이스는 Transaction이 원자적이면서 독립적으로 수행을 하도록 해야합니다.
원자적이면서 독립적인 수행을 위해 Locking 이 등장합니다.
Locking은 Transaction 이 데이터를 다루는 동안 다른 Transaction이 관여하지 못하게 막습니다.
무조건 Locking을 수행하게되면 많은 Transaction 이 대기하게 되어 데이터베이스의 성능은 현저하게 떨어지게 됩니다.
무조건 Locking의 범위를 줄인다면 잘못된 처리가 될 여지가 있습니다.
최대한 효율적인 Locking 방법이 Isolation Level 입니다.
데이터베이스의 고립화 수준(Isolation Level)
Read Uncommitted
한 트랜잭션에서 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용합니다.
연산 중인 데이터에 대한 연산은 불허합니다.
Read Committed
한 트랜잭션에서 연산을 수행할 때 연산이 완료될 때까지 연산대상 데이터에 대한 읽기를 제한합니다.
연산이 완료되어 커밋된 데이터는 다른 트랜잭션이 읽는 것을 허용합니다.
Repeatable Read
선행 트랜잭션이 특정 데이터를 읽을 때, 트랜잭션 종료 시까지 해당 데이터에 대한 갱신/삭제를 제한합니다.
Serializable Read
선행 트랜잭션이 특정 데이터 영역을 순차적으로 읽을 때. 해당 데이터 영역 전체에 대한 접근을 제한합니다.
'개발 > DB' 카테고리의 다른 글
[DB] 트리거(Trigger) (0) | 2021.02.16 |
---|---|
[DB] 사용자 정의함수(User-Defined Function) (0) | 2021.02.16 |
[DB] 프로시저(Procedure) (0) | 2021.02.15 |
[MySQL] MySQL Workbench 에서 Schema 및 Table 추가 (0) | 2021.01.15 |
[MySQL] MySQL Workbench 사용자 계정 등록 (0) | 2021.01.15 |
댓글