기초공부 - (4) isolation(고립,독립,격리)

2024. 2. 5. 23:16MySQL/Class

반응형

# 트랜잭션이 동시에 발생하였을 경우, 동일 데이터에 대해서 세션별 결과값이 다르게 보여질 수가 있습니다.

이것은 isolation 레벨에 따라서 데이터의 정합성 또는 일관성이 달라질 수가 있다는 것입니다.(동시성)

transaction_isolation의 default는 repeatable-read 입니다

 

# isolation 설정에 따라 데이터의 변화가 어떻게 되는지 아래 예시 데이터를 통하여 테스트를 진행해 보려고 합니다.

sample

 

1. Read-Uncommitted

 - 다른 세션에서 변경된 정보를 바로 확인이 가능 합니다. 즉, 다른 세션에서 commit 되지 않은 정보를 바로 확인 할 수가 있습니다.

Read-Uncommitted


2. Read-Committed

 - 변경된 정보는 commit이 발생되기 전까지는 다른 세션에서 변경된 값을 볼 수가 없습니다.

Read-Committed

 

3.Repeatable Read

 - 스냅샷을 생성하고 데이터를 조회 하기 때문에 다른 세션에서 데이터 변화를 준다고 하여도 아무런 영향을 받지 않습니다.

Repeatable-Read

 

4.Serializable

 - 트랜잭션이 종료가 될 때까지 모든 데이터에 Lock이 걸릴 수 있습니다.

 - 처음 시작한 트랜잭션의 작업이 완료되기 전까지는 나중에 시작한 트랜잭션이 어떠한 작업도 할 수가 없습니다.

serializable

 

# transaction_isolation 에서 설정 할 수 있는 4가지 값들에 대해서 간략하게 알아 보았습니다. 난해하고 이해 하기 힘든 부분도 있겠지만, 조금이나마 도움이 되었으면 하는 바람입니다.

다음에는 isolation 설정 값에 따라 발생되는 현상에 대한 용어(?)를 공부해보도록 하겠습니다.

반응형