일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 라인플러스
- DP
- 스타벅스
- 딥러닝
- BFS
- Spring Framework
- leetcode
- 머신러닝
- jvm
- 시애틀
- 프로그래밍언어론
- STL
- 프로그래머스
- 백트래킹
- 벤쿠버
- binary search
- Python
- 파이썬
- 백준
- C++
- 스프링 프레임워크
- spring
- 다이나믹프로그래밍
- C/C++
- 라인
- 모두를 위한 딥러닝
- dfs
- Java
- 릿코드
- 알고리즘
- Today
- Total
케이스윔의 개발 블로그
[DB] transaction의 Level of isolation 본문
<Level of isolation>
데이터베이스에서는 각 transaction 의 속성을 정의하여 수행할 수 있는데 SET TRANSACTION ~ 으로 시작하는 명령어를 통해 새로운 트랜잭션을 시작할 수 있다.
기본적으로 4가지가 있다.
1. READ UNCOMMITED : 말 그대로 커밋하지 않은 트랜잭션까지도 읽는다. 현재 트랜잭션이 읽으려고 하는 시점에 다른 트랜잭션에서 해당 데이터를 수정하면 그 수정된 데이터를 읽을 수 있다. - read lock 이 필요없음
2. READ COMMITED : 커밋된 트랜잭션까지 읽겠다! 현재 트랜잭션이 읽으려고 하는데 다른 트랜잭션이 해당 데이터를 수정해도 해당 트랜잭션이 커밋을 안했다면 수정되지 않은 데이터를 읽어온다. statement level 의 read consistency를 가지고 있고 read, write가능 - read lock 이 필요하고 해당 lock 을 포함하는 트랜잭션이 끝나기 전에 푼다.
3. REPEATABLE READ: 현재 커밋된 데이터까지 읽어오고, 동일한 데이터는 여러번 접근해도 같음을 보장한다. 이름에서 유추할 수 있다.
- read lock 이 필요하고 트랜잭션이 끝날 때 푼다(그때까지는 수정할 수 없음!)
4. SERIALIZABLE: repeatable read 이자 범위질의에 대해서도 동일함을 보장한다. 해당하는 레코드가 아니지만 범위에 있는 데이터도 건들 수 없다! - 읽고 쓸 때 lock 이 걸리는데 직렬화를 할 수 없을 경우에는 오류가 난다.
4가지를 모두 지원하는 데이터베이스도 있고 일부만을 제공하는 데이터베이스도 있다.
'Study' 카테고리의 다른 글
Webhook 이란 무엇인가? (0) | 2018.11.21 |
---|---|
웹 서버(Web Server)와 WAS (2) | 2018.11.19 |
[Jupyter] ipynb 파일 html 로 변환하기 (0) | 2018.08.08 |
[Django] Elasticsearch, Kibana와 연동하기 (2) | 2018.07.29 |
[Django] https 설정(openssl, stunnel) (0) | 2018.07.24 |