2024. 2. 5. 23:16ㆍMySQL/Class
# 트랜잭션이 동시에 발생하였을 경우, 동일 데이터에 대해서 세션별 결과값이 다르게 보여질 수가 있습니다.
이것은 isolation 레벨에 따라서 데이터의 정합성 또는 일관성이 달라질 수가 있다는 것입니다.(동시성)
# isolation 설정에 따라 데이터의 변화가 어떻게 되는지 아래 예시 데이터를 통하여 테스트를 진행해 보려고 합니다.
1. Read-Uncommitted
- 다른 세션에서 변경된 정보를 바로 확인이 가능 합니다. 즉, 다른 세션에서 commit 되지 않은 정보를 바로 확인 할 수가 있습니다.
2. Read-Committed
- 변경된 정보는 commit이 발생되기 전까지는 다른 세션에서 변경된 값을 볼 수가 없습니다.
3.Repeatable Read
- 스냅샷을 생성하고 데이터를 조회 하기 때문에 다른 세션에서 데이터 변화를 준다고 하여도 아무런 영향을 받지 않습니다.
4.Serializable
- 트랜잭션이 종료가 될 때까지 모든 데이터에 Lock이 걸릴 수 있습니다.
- 처음 시작한 트랜잭션의 작업이 완료되기 전까지는 나중에 시작한 트랜잭션이 어떠한 작업도 할 수가 없습니다.
# transaction_isolation 에서 설정 할 수 있는 4가지 값들에 대해서 간략하게 알아 보았습니다. 난해하고 이해 하기 힘든 부분도 있겠지만, 조금이나마 도움이 되었으면 하는 바람입니다.
다음에는 isolation 설정 값에 따라 발생되는 현상에 대한 용어(?)를 공부해보도록 하겠습니다.
'MySQL > Class' 카테고리의 다른 글
기초공부 - (6) limit & offset (0) | 2024.02.19 |
---|---|
기초공부 - (5) 더미 데이터 넣기 (0) | 2024.02.12 |
기초공부 - (3) sleep 세션 정리 하기(interactive_timeout, wait_timeout) (0) | 2024.01.30 |
기초공부 - (2) process & thread (0) | 2024.01.26 |
기초공부 - (1) sql_mode (0) | 2024.01.23 |