Search

12 : Transaction

course
last review
mastery
rookie
progress
not started
date
2023/05/11
4 more properties
Previous chapter

Transaction Concept

๐Ÿค”
Transaction์€ ๋ฐ์ดํ„ฐ์— ์•ก์„ธ์Šคํ•˜๊ฑฐ๋‚˜ ์ƒˆ๋กœ์šด ๊ฐ’์„ ๊ฐฑ์‹ ํ• ๋•Œ ์‹คํ–‰ํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰๋‹จ์œ„๋‹ค
//transfer $50 from A to B Ti: read(A); A := A-50; write(A); read(B); B:= B + 50; write(B);
C
๋ณต์‚ฌ
๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์ œ.
A์˜ ๋ˆ์ด ๋น ์ ธ๋‚˜๊ฐ€๋Š” ๊ฒƒ๊ณผ B์˜ ๋ˆ์ด ์ถ”๊ฐ€๋˜๋Š” ๊ฒƒ์ด ๋ฐ˜๋“œ์‹œ ๊ฐ™์€ ๋‹จ๊ณ„ ์•ˆ์—์„œ ์ผ์–ด๋‚˜์•ผ ํ•œ๋‹ค.
์ฆ‰, A์™€ B์˜ sum์ด ๊ฐ™๋„๋ก ๋งŒ๋“ค์–ด์•ผ ํ•œ๋‹ค.
์ฆ‰, Ti๋Š” ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ์„œ ๋ˆ์ด ๋ณด๋‚ด์ง€์ง€ ์•Š๊ฑฐ๋‚˜ ์—ฐ์‚ฐ์ด ์™„๋ฃŒ๋˜์–ด ์†ก๊ธˆ์ด ์™„๋ฃŒ๋˜๊ฑฐ๋‚˜ ๋‘˜ ์ค‘์˜ ํ•˜๋‚˜์˜ ์ƒํƒœ๋งŒ ๊ฐ€์ ธ์•ผํ•œ๋‹ค. ๋‹ค๋ฅธ ์ƒํƒœ๋Š” ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค.
์ด๋•Œ Transaction์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ์œผ๋กœ ๋ฌถ์–ด์ค˜์•ผํ•œ๋‹ค.
Hardware Failure : ํ•˜๋“œ์›จ์–ด์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ,
System Crashes : ์‹œ์Šคํ…œ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ
์ด๋Ÿฐ ์—๋Ÿฌ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ง๊ฐ€๋œจ๋ฆฌ์ง€ ์•Š๊ณ  ์ž˜ ๋ณด์กดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๋˜ํ•œ ์—ฌ๋Ÿฌ๊ฐœ์˜ Transaction๋ฅผ ๋™์‹œ์— ์‹คํ–‰์‹œํ‚ฌ ๋•Œ์˜ ์ฒ˜๋ฆฌ ์ˆœ์„œ๋ฅผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฃฐ์ง€๋„ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค.
๐Ÿค”
DB์•ˆ์—์„œ transaction์€ ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ๋‹จ์œ„์ด๋‹ค.

Example of Fund Transaction

//transfer $50 from A to B Ti: read(A); A := A-50; write(A); read(B); B:= B + 50; write(B);
C
๋ณต์‚ฌ
transaction์ด ์•„๋‹ ๊ฒฝ์šฐ
์ด๋•Œ Transaction์€ Atomicity๋ฅผ ๋ณด์žฅํ•ด์•ผํ•œ๋‹ค.
โ€ข
Transaction์ด ์Šคํ…3๊นŒ์ง€๋งŒ ์‹คํ–‰๋˜๊ณ  ์—ฐ์‚ฐ ์‹คํŒจ๊ฐ€ ์ผ์–ด๋‚  ๊ฒฝ์šฐ, A์˜ ๋ˆ๋งŒ ์ฆ๋ฐœํ•œ๋‹ค.
โ€ข
์ฆ‰, A์™€ B๊ฐ€ ๋ชจ๋‘ ๊ฐ’์ด ๋ณ€ํ™”ํ•˜๊ฑฐ๋‚˜ ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ๋งŒ ์›ํ•ด์•ผ ํ•œ๋‹ค.
๋˜ํ•œ Durability๋ฅผ ๋ณด์žฅํ•ด์•ผํ•œ๋‹ค.
โ€ข
Transaction ์—ฐ์‚ฐ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, ์˜์†์ ์ธ ์ €์žฅ์žฅ์น˜์— ๋ฐ˜๋“œ์‹œ ์ €์žฅํ•ด์•ผํ•œ๋‹ค.(ํ•˜๋“œ๋””์Šคํฌ ๊ฐ™์€ ์ €์žฅ์žฅ์น˜)
Transaction์€ Consistency๋ฅผ ์œ ์ง€ํ•ด์•ผํ•œ๋‹ค.
A์— 500, B์— 800์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ž.
โ€ข
integrity Constraints
Isolation requirement
T1์™€ T2 ๋‘˜๋‹ค A์™€ B์˜ ๊ฐ’์„ ๋ณด๊ณ  ์‹ถ์„ ๋•Œ, Isolation์€ Transaction์„ (Serialization)

ACID Principles

Atomicity

Transaction์ด ๋ชจ๋‘ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰๋˜๊ฑฐ๋‚˜, ๊ทธ๋ ‡์ง€ ์•Š๊ฑฐ๋‚˜ ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ์ƒํƒœ๋งŒ ๊ฐ€

Consistency

๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์กดํ•ด์•ผํ•œ๋‹ค.

Isolation

Tranasaction ์ค‘๊ฐ„์— ์ˆ˜ํ–‰๋˜๋Š” ์—ฐ์‚ฐ์€ ๋‹ค๋ฅธ Transaction์ด ๋ณผ ์ˆ˜ ์—†์–ด์•ผ ํ•œ๋‹ค.

Durability

Transaction ํ›„์— ๋ฐ˜๋“œ์‹œ ๋ฌผ๋ฆฌ ์ €์žฅ์žฅ์น˜์— ์ €์žฅํ•ด์•ผํ•œ๋‹ค.

Transaction State

โ€ข
Active : ์ตœ์ดˆ์˜ ์ƒํƒœ, Transaction์ด ์ˆ˜ํ–‰๋  ๋•Œ ์ƒํƒœ.
โ€ข
Partially Commited : ์ตœ์ข… ์—ฐ์‚ฐ์ด ๋๋‚˜๊ณ  ๋‚œ ํ›„์˜ ์ƒํƒœ
โ€ข
Failed : Transaction์ด ์ˆ˜ํ–‰๋  ๋•Œ
โ€ข
Aborted : Transaction์ด ๋กค๋ฐฑ ๋œ ์ดํ›„์˜ ์ƒํƒœ
โ—ฆ
Transaction ์žฌ์‹œ์ž‘
โ—ฆ
Kill Transaction
โ€ข
Committed : Completion์ดํ›„ ?

Concurrent Execution

๋ณต์ˆ˜์˜ Transaction์ด ๋™์‹œ์— ์‹คํ–‰๋  ๋•Œ์˜ ์žฅ์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
โ€ข
ํ”„๋กœ์„ธ์„œ์˜ ์ฝ”์–ด์™€ ๋””์Šคํฌ์˜ ํšจ์œจ์ด ๋Š˜์–ด๋‚œ Transaction์˜ Throughput์„ ๋‚ซ๊ฒŒ ๋งŒ๋“ค์–ด์ค€๋‹ค.
โ€ข
์‘๋‹ต์‹œ๊ฐ„์ด ์ค„์–ด๋“ ๋‹ค.
Concurrency Control Schemes : Isolation์„ ๋งŒ์กฑํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์ปค๋‹ˆ์ฆ˜

Schedules

์Šค์ผ€์ฅด๋ง์€ ๋งŽ์€ transaction์„ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋ฉด์„œ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋ฐฉ๋ฒ•์ด๋‹ค.
๊ฐ€์žฅ ์ค‘์š”ํ•œ ์ „์ œ์กฐ๊ฑด์€ ์—ฐ์‚ฐ๋“ค๋ผ๋ฆฌ ๋ฐ˜๋“œ์‹œ ์ˆ˜ํ–‰์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•ด์•ผํ•œ๋‹ค.
Transaction์—์„œ ์—๋Ÿฌ๋ฅผ ํƒ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ์กฐ๊ฑด๋ฌด

Serial Schedules

T1์ด ์ •์ƒ์ ์œผ๋กœ ๋๋‚œ ์ดํ›„, T2๊ฐ€ ๋’ค๋”ฐ๋ผ์„œ ์‹คํ–‰๋˜๋Š” ์ง๋ ฌ ๊ตฌ์กฐ์ด๋‹ค.
๋˜๋Š” T2์ดํ›„, T1์ด ์‹คํ–‰๋œ๋‹ค.
์ด์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ ์—ฐ์‚ฐ์ด ๋ชจ๋‘ ๋๋‚œ ์ดํ›„, ๋‹ค๋ฅธ ์—ฐ์‚ฐ์ด ์‹คํ–‰๋˜๋Š” ๊ตฌ์กฐ๋ฅผ ์ง๋ ฌ ์Šค์ผ€์ฅด์ด๋ผ๊ณ  ํ•œ๋‹ค.(Serial Schedules)
T1์™€ T2๋ชจ๋‘ ์œ„ 3์ค„์€ A, ๋ฐ‘ 3์ค„์€ B์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ด์— ๋Œ€ํ•ด ๋ถ„๋ฆฌ๊ฐ€ ์ผ๋ถ€๋ถ„ ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋‹ค.
์ฆ‰, T1์˜ A์—ฐ์‚ฐ ์ดํ›„ T2์˜ A์—ฐ์‚ฐ์ด ์‹คํ–‰๋œ๋‹ค๊ณ  ํ•ด๋„ ์ด๋Š” ์ฒซ๋ฒˆ์งธ ์ง๋ ฌ ์—ฐ์‚ฐ๊ณผ Equivalentํ•œ ์—ฐ์‚ฐ์ด ๋  ๊ฒƒ์ด๋‹ค.
์ฆ‰ ํ•ด๋‹น ์—ฐ์‚ฐ์€ ์ง๋ ฌ(ํ•˜๋“œํ•œ)์€ ์•„๋‹ˆ๋‚˜ ์ง๋ ฌ์˜ ์„ฑ์งˆ์„ ๋„๊ณ  ์žˆ๋‹ค.
๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” Serializableํ•˜์ง€ ์•Š๋‹ค.

Serializability

๐Ÿ‘‰
Transaction์˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ๋”๋ผ๋„ ๊ธฐ์กด Serial Schedule๊ณผ ๊ฒฐ๊ณผ๊ฐ’์ด ๊ฐ™๋‹ค๋ฉด Serializable Schedule์ด๋ผ๊ณ  ํ•œ๋‹ค.
โ€ข
conflict Schedule : ์—„๊ฒฉํ•œ Serializable
โ€ข
View Schedule : ์กฐ๊ธˆ ์œ ์—ฐํ•œ Serializable

Simplified View of Transaction

๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” read์™€ write์ธ์ŠคํŠธ๋Ÿญ์…˜์ด ๊ฐ€์žฅ ์ค‘์š”ํ•จ.
๋‚ด๋ถ€์ ์œผ๋กœ ์ผ์–ด๋‚˜๋Š” Computation์€ ๋กœ์ปฌ ๋ฒ„ํผ์—์„œ cjflehlsek.

Conflicting Instruction

๊ธฐ๋ณธ์ ์œผ๋กœ Conflict์ด ๋ฐœ์ƒํ•˜๋Š” ์กฐ๊ฑด์€ write๊ฐ€ ํ•˜๋‚˜๋ผ๋„ ๋“ค์–ด๊ฐ„ ๊ฒฝ์šฐ์ด๋‹ค.
write๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ์ˆœ๊ฐ„ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ์‹œ์ ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
๋”ฐ๋ผ์„œ conflict๋Š” Transaction๊ฐ„์˜ ์ˆœ์„œ๋ฅผ ๊ฐ•์ œํ•œ๋‹ค.
๋งŒ์•ฝ ๋‘ Transaction์ด conflictํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ˆœ์„œ๋ฅผ ๋ฐ”๊ฟ”๋„ ๋ฌด๋ฐฉํ•  ๊ฒƒ์ด๋‹ค.
Conflict๋Š” Transaction๊ฐ„์˜ ์ˆœ์„œ๋ฅผ ๊ฐ•์ œํ•œ๋‹ค. ์ด๋“ค๊ฐ„์˜ order์ด ๊นจ์ง€๋Š” ์ˆœ๊ฐ„ ๋ฐ์ดํ„ฐ์˜ Consistency๊ฐ€ ๋ณด์žฅ๋˜์ง€ ์•Š๋Š”๋‹ค.

Conflict Serializability

์Šค์ผ€์ฅด S๊ฐ€ Sโ€™์œผ๋กœ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•  ๋•Œ, ์ด๋ฅผ Conflict Serializablitiy(์ถฉ๋Œ ๋™๋“ฑ)์ด๋ผ๊ณ  ํ•œ๋‹ค.
์Šค์ผ€์ฅด3๊ณผ ์Šค์ผ€์ฅด6์€ ์ถฉ๋Œ ๋™๋“ฑ(conflict Serializable)ํ•˜๋‹ค.
์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” Conflict Serializable ํ•˜์ง€ ์•Š๋‹ค.
conflict Serializableํ•œ์ง€๋ฅผ ํ™•์ธํ•˜๋ ค๋ฉด?

View Serializability

์•„๋ž˜์˜ ์„ธ๊ฐ€์ง€ ์กฐ๊ฑด๋งŒ ๋งŒ์กฑํ•˜์ž.
S์™€ Sโ€™
โ€ข
์Šค์ผ€์ฅด S์—์„œ Transaction Ti๊ฐ€ ์žˆ์„ ๋•Œ, Q์˜ ์‹œ์ž‘๊ฐ’์„ ์ฝ์œผ๋ฉด, Sโ€™์˜ Transaction Ti๋˜ํ•œ ์‹œ์ž‘๊ฐ’ Q๋ฅผ ์ฝ์–ด์•ผ ํ•œ๋‹ค.
โ€ข
S์—์„œ Ti๊ฐ€ read(Q)๋ฅผ ์‹คํ–‰ํ•˜๊ณ  ๊ทธ ๊ฐ’์ด Transaction Tj์— ์˜ํ•ด ์ƒ์„ฑ๋˜์—ˆ์„ ๊ฒฝ์šฐ, Sโ€™๋˜ํ•œ ๊ทธ ์ˆœ์„œ๋ฅผ ์ง€์ผœ์•ผ ํ•œ๋‹ค.
โ€ข
final Write(Q)๋Š” ๋ฐ˜๋“œ์‹œ ๊ฐ™์€ Transaction์ด ์ˆ˜ํ–‰ํ•ด์•ผํ•œ๋‹ค.

Example

์ฒ˜์Œ read๋ฅผ ์‹คํ–‰ํ•œ ๊ฑด T27์ด๊ณ , ๋งˆ์ง€๋ง‰ write๋Š” T29์ด๋‹ค
write ๋’ค์— read๊ฐ€ ์—†์œผ๋ฏ€๋กœ 2๋ฒˆ์งธ ์กฐ๊ฑด์€ ์ž๋™์œผ๋กœ ์ถฉ์กฑ.
View Serializableํ•˜๋‹ค. โ†’ ๋‹ค๋งŒ, conflict Serializableํ•˜์ง€๋Š” ์•Š์Œ!!!
์ด์ฒ˜๋Ÿผ view serializableํ•˜์ง€๋งŒ conflict serializableํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ blind writes๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ์ด๋‹ค.
blind write๋Š” ์“ฐ๊ธฐ ์—ฐ์‚ฐ์„ ํ–ˆ์ง€๋งŒ ์ „ํ˜€ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์ด๋‹ค.
๋‹ค์Œ ์˜ˆ์‹œ๋ฅผ ๋ณด์ž.
Serial Schedule์€ T1โ†’T2โ†’T3 || R(Q)W(Q)โ†’ W(Q)R(Q) ->R(Q)W(Q)์ด๋‹ค.
๋‹ค์Œ ๋Œ€์ฒด ์Šค์ผ€์ฅด์€ 1,3๋ฒˆ์€ ๋งŒ์กฑํ•˜๋‚˜ 2๋ฒˆ์„ ๋งŒ์กฑํ•˜์ง€ ์•Š๋Š”๋‹ค.
T1์˜ W(Q) ์ดํ›„ R()

Testing for Serializability

์ •์ ์—๋Š” Transaction์„, ์—ฃ์ง€๋Š” ๋‹ค์Œ ์ˆœ์„œ๋ฅผ ํ–ฅํ•œ๋‹ค.
์‚ฌ์ดํด์„

Recoverable Schedules

Cascading Rollbacks

T10์ด ์‹คํŒจํ•  ๊ฒฝ์šฐ, T11์™€ T12๊ฐ€ ๋ชจ๋‘ rollbackํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ. ์ด๋ฅผ cascading Rollback์ด๋ผ๊ณ  ํ•œ๋‹ค.
์ด๋Š” ์‹ฌ๊ฐํ•œ ์„ฑ๋Šฅ์ €ํ•˜๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Œ.

Cascadeless schedule

โ€ข
Tj๊ฐ€ Ti๊ฐ€ ์“ด ๊ฐ’์„ ์ฝ์„ ๋•Œ, Ti๋Š” commit๋œ ์ƒํƒœ์—ฌ์•ผ ํ•œ๋‹ค.

Concurrency Control

๐Ÿ’พ
DBMS๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ์˜ Transaction์ด ์žˆ์„ ๋•Œ ์Šค์ผ€์ฅด๋ง์„ ๊ฒฐ์ •ํ•ด์•ผํ•œ๋‹ค.
โ€ข
conflict or view serializable
โ€ข
recoverable and preferably cascadeless

Weak Levels of Consistency

Next chapter