Skip to content

Commit a90b32d

Browse files
committed
ADD Transaction.md
1 parent 7df9e3f commit a90b32d

5 files changed

Lines changed: 58 additions & 4 deletions

File tree

‎_data/pageMap.yml‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ DBMS:
125125
parent: index
126126
url: /wiki/DBMS
127127
updated: '2018-12-06 18:54:36 +0900'
128-
children: [Hbase, MS-SQL]
128+
children: [Hbase, MS-SQL, Transaction]
129129
DevOps:
130130
type: wiki
131131
title: DevOps
@@ -212,7 +212,7 @@ index:
212212
summary: 'anyjava wiki index'
213213
parent: null
214214
url: /wiki/index
215-
updated: '2020-09-07 10:46:08 +0900'
215+
updated: '2020-10-06 02:03:47 +0900'
216216
children: []
217217
Infra:
218218
type: wiki
@@ -356,7 +356,7 @@ MSA:
356356
summary: 'Microservice Architecture'
357357
parent: index
358358
url: /wiki/MSA
359-
updated: '2019-10-29 18:40:41 +0900'
359+
updated: '2020-09-15 03:04:13 +0900'
360360
children: []
361361
NoSQL:
362362
type: wiki
@@ -494,6 +494,14 @@ Test_Framework:
494494
url: /wiki/Test_Framework
495495
updated: '2018-11-28 08:25:51 +0900'
496496
children: [spock]
497+
Transaction:
498+
type: wiki
499+
title: 트랜잭션
500+
summary: 트랜잭션
501+
parent: DBMS
502+
url: /wiki/Transaction
503+
updated: '2020-10-06 02:07:35 +0900'
504+
children: []
497505
Web:
498506
type: wiki
499507
title: Web

‎_data/tagList.yml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@
8181
- thread
8282
- tip
8383
- tools
84+
- transaction
8485
- validation
8586
- webflux
8687
- xss

‎_data/tagMap.yml‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,7 @@ logstash:
121121
- {fileName: logstash}
122122
'db,':
123123
- {fileName: MS-SQL}
124+
- {fileName: Transaction}
124125
'ms-sql,':
125126
- {fileName: MS-SQL}
126127
dbms:
@@ -182,6 +183,8 @@ synology:
182183
- {fileName: Test_Framework}
183184
junit:
184185
- {fileName: Test_Framework}
186+
transaction:
187+
- {fileName: Transaction}
185188
webflux:
186189
- {fileName: WebFlux}
187190
'secure,':

‎_wiki/Transaction.md‎

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
---
2+
layout : wiki
3+
title : 트랜잭션
4+
summary : 트랜잭션
5+
date : 2020-10-06 02:04:00 +0900
6+
updated : 2020-10-06 02:22:36 +0900
7+
tags : db, transaction
8+
toc : true
9+
public : true
10+
parent : DBMS
11+
latex : false
12+
adsense : true
13+
---
14+
* TOC
15+
{:toc}
16+
17+
## 주요개념
18+
19+
20+
> 아래 내용들은 '데이터 중심 애플리케이션 설계 07장 트랜잭션'을 참고하였습니다.
21+
22+
23+
* [Dirty Reads](https://en.wikipedia.org/wiki/Isolation_(database_systems)#Dirty_reads)
24+
* 한 클라이언트가 다른 클라이언트가 썼지만 아직 커밋되지 않은 데이터를 읽는다. 커밋 후 읽기 또는 그보다 강한 격리 수준은 더티 읽기를 방지한다.
25+
26+
* [Dirty Write](https://en.wikipedia.org/wiki/Write%E2%80%93read_conflict)
27+
* 한 클라이언트가 다른 클라이언트가 썻지만 아직 커밋되지 않은 데이터를 덮어쓴다. 거의 모든 트랜잭션 구현은 더티 쓰기를 방지한다.
28+
29+
* 읽기 스큐 (비반복 읽기)
30+
* 클라이언트는 다른 시점에 데이터베이스의 다른 부분을 본다. 이 문제를 막기 위한 해결책으로 트랜잭션이 어느 시점의 일관된 스냅숏으로부터 읽는 스냅숏 격리를 가장 흔히 사용한다. (REPEATABLE READ) 스냅숏 격리는 보통 다중 버전 동시성 제어(MVCC) 를 써서 구현 한다.
31+
32+
* 갱신 손실
33+
* 두 클라이언트가 동시에 read-modify-write 주기를 실행한다. 서로 다른 트랜잭션이 수정내용을 후행하는 버젼이 덮으쓰는 경우. 스냅숏 격리 구현 중 어떤 것은 이런 이상 현상을 자동으로 막아주지만 그렇지 않은 것은 수동 잠금(SELECT FOR UPDATE)이 필요하다.
34+
35+
* 쓰기 스큐
36+
* 트랜잭션이 무엇인가를 읽고 읽은 값을 기반으로 어떤 결정을 하고 그 결정을 데이터베이스에 쓴다. 그러나 쓰기를 실행하는 시점에는 결의 전제가 더 이상 참이 아니다. 직렬성 격리만 이런 이상 현상을 막을 수 있다.
37+
* 보통 INSERT 할때 발생하는데, Table 의 UNIQUE INDEX 을 해결하거나 id 기반의 직렬성 격리, 혹의 범위기반의 서술 잠금(predicate lock)이 필요함.
38+
39+
40+
* [팬텀 읽기(Phantom Reads)](https://en.wikipedia.org/wiki/Isolation_(database_systems)#Phantom_reads)
41+
* 트랜잭션이 어떤 검색 조건에 부합하는 객체를 읽는다. 다른 클라이언트가 그 검색 결과에 영향을 주느 ㄴ쓰기를 실행한다. 스냅쇼 ㅅ격리는 간단한 팬텀읽기는 막아주지만 쓰기 스큐 맥락에서 발생하는 팬텀은 색인 범위 잠금처럼 특별한 처리가 필요하다.

‎_wiki/index.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ layout : wiki
33
title : index
44
summary : anyjava wiki index
55
date : 2018-08-15 19:41:36 +0900
6-
updated : 2020-09-07 10:46:08 +0900
6+
updated : 2020-10-06 02:03:47 +0900
77
tags :
88
toc : true
99
public : true
@@ -43,6 +43,7 @@ latex : false
4343
* [[spock]]
4444
* [[JUnit5]]
4545
* [[DBMS]]
46+
* [[Transaction]]
4647
* [[MS-SQL]]
4748
* [[NoSQL]]
4849
* [[Hbase]]

0 commit comments

Comments
 (0)