17. Transactions
- Transaction
- System's view: ๋ค์ํ ๋ฐ์ดํฐ ํญ๋ชฉ(Data items)์ ์ ๊ทผํ๊ณ ๊ฐฑ์ ํ ์ ์๋ ํ๋ก๊ทธ๋จ ์คํ ๋จ์
- User's view: ๋ ผ๋ฆฌ์ ์ธ ์์ ๋จ์(Logical unit of work)
- ์์
- ์ํ: ๊ณ์ข
A์์B๋ก $50 ์ด์ฒด - ํ๊ต: ํ์
#4321์ ๋ํด ๊ฐ์ข#409.433๋ฑ๋ก - ํ์ฌ: ๋ชจ๋ ์ง์์ ๊ธ์ฌ๋ฅผ 5% ์ธ์
- ์ํ: ๊ณ์ข
- Transaction ์์: "๊ณ์ข
A์์ ๊ณ์ขB๋ก $50 ์ด์ฒด"read(A) A := A - 50 write(A) read(B) B := B + 50 write(B) - ๋ค๋ฃจ์ด์ผ ํ ๋ ๊ฐ์ง ์ฃผ์ ์ด์
- Hardware failure ๋ฐ system crash์ ๊ฐ์ ๋ค์ํ ์ข ๋ฅ์ Failures
- ๋ค์ transaction์ concurrent execution(๋์ ์คํ)
Transaction concept
- ๊ณ์ข
A์์ ๊ณ์ขB๋ก $50๋ฅผ ์ด์ฒดํ๋ transactionread(A) A := A - 50 write(A) read(B) B := B + 50 write(B) - Atomicity requirement (์์์ฑ ์๊ตฌ์ฌํญ)
- ๋ง์ฝ transaction์ด 3๋จ๊ณ ์ดํ, 6๋จ๊ณ ์ด์ ์ ์คํจํ ๊ฒฝ์ฐ, ๋์ด "์์ค"๋์ด Inconsistent ํ database ์ํ๊ฐ ๋จ
- Failure๋ software ๋๋ Hardware๋ก ์ธํด ๋ฐ์ ๊ฐ๋ฅ
- System์ ๋ถ๋ถ์ ์ผ๋ก ์คํ๋ transaction์ ์ ๋ฐ์ดํธ๊ฐ database์ ๋ฐ์๋์ง ์๋๋ก ๋ณด์ฅํด์ผ ํจ (Transaction roll back)
- Durability requirement (์ง์์ฑ ์๊ตฌ์ฌํญ)
- ์ฌ์ฉ์๊ฐ transaction์ด ์๋ฃ๋์๋ค๋ ํต์ง(์ฆ, $50 ์ด์ฒด ๋ฐ์)๋ฅผ ๋ฐ์ ํ์๋, software ๋๋ Hardware failure๊ฐ ๋ฐ์ํ๋๋ผ๋ transaction์ ์ํ database ์ ๋ฐ์ดํธ๊ฐ ์ง์(Persist)๋์ด์ผ ํจ.
Example of Fund transfer
- Consistency requirement (์ผ๊ด์ฑ ์๊ตฌ์ฌํญ)
- Transaction ์คํ์ ์ํด
A์B์ ํฉ๊ณ๊ฐ ๋ณํ์ง ์์์ผ ํจ. - ์ผ๋ฐ์ ์ธ consistency requirement ํฌํจ ์ฌํญ
- Primary keys ๋ฐ Foreign keys์ ๊ฐ์ด ๋ช ์์ ์ผ๋ก ์ง์ ๋ Integrity constraints
- ์๋ฌต์ ์ธ Integrity constraints
- ์: ๋ชจ๋ ๊ณ์ข ์์ก์ ํฉ์์ ๋์ถ ๊ธ์ก์ ํฉ์ ๋บ ๊ฐ์ ๋ณด์ ํ๊ธ ๊ฐ์น์ ๊ฐ์์ผ ํจ.
- Transaction์ consistent ํ database๋ฅผ ํ์ธํด์ผ ํจ (Transaction ์คํ ์ค์๋ database๊ฐ ์ผ์์ ์ผ๋ก Inconsistent ํ ์ ์์)
- Transaction์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด database๋ consistent ํด์ผ ํจ.
- ์๋ชป๋ transaction ๋ก์ง์ Inconsistency๋ฅผ ์ด๋ํ ์ ์์.
- ๊ฐ๋ณ transaction์ ๋ํ consistency ๋ณด์ฅ์ transaction์ ์์ฑํ๋ ์ดํ๋ฆฌ์ผ์ด์ ํ๋ก๊ทธ๋๋จธ์ ์ฑ ์
- Integrity constraints์ ๋ํ ์๋ ํ ์คํธ(4.4์ )๊ฐ ์ด ์์ ์ ์ฉ์ดํ๊ฒ ํจ.
- Transaction ์คํ์ ์ํด
- Isolation requirement (๊ณ ๋ฆฝ์ฑ ์๊ตฌ์ฌํญ)
- ๋ง์ฝ 3๋จ๊ณ์ 6๋จ๊ณ ์ฌ์ด์, ๋ค๋ฅธ transaction ๊ฐ ๋ถ๋ถ์ ์ผ๋ก ์
๋ฐ์ดํธ๋ database์ ์ ๊ทผํ๋๋ก ํ์ฉ๋๋ค๋ฉด, ๋ Inconsistent ํ database๋ฅผ ๋ณด๊ฒ ๋จ (
A + B์ ํฉ์ด ์๋๋ณด๋ค ์ ๊ฒ ๋จ) - ์์ ํ๋ฆ
- :
read(A)โA := a โ 50โwrite(A) - :
read(A)โread(B)โprint(A + B)(์ด ์์ ์ ๋ฌธ์ ) - :
read(B)โB := B + 50โwrite(B)
- :
- Isolation์ transaction์ ์์ฐจ์ ์ผ๋ก(Serially, ํ๋์ฉ ์ฐจ๋ก๋ก) ์คํํจ์ผ๋ก์จ ๊ฐ๋จํ ๋ณด์ฅ ๊ฐ๋ฅ
- ๊ทธ๋ฌ๋ ๋ค์์ transaction์ concurrent ํ๊ฒ(๋์์) ์คํํ๋ ๊ฒ์ ์๋นํ ์ด์ ์ด ์์(๋์ค์ ํ์ธ)
- ๋ง์ฝ 3๋จ๊ณ์ 6๋จ๊ณ ์ฌ์ด์, ๋ค๋ฅธ transaction ๊ฐ ๋ถ๋ถ์ ์ผ๋ก ์
๋ฐ์ดํธ๋ database์ ์ ๊ทผํ๋๋ก ํ์ฉ๋๋ค๋ฉด, ๋ Inconsistent ํ database๋ฅผ ๋ณด๊ฒ ๋จ (
ACID properties
- ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ(Integrity)์ ๋ณด์กดํ๊ธฐ ์ํด, database system์ transaction์ ๋ค์ ์์ฑ๋ค์ ๋ณด์ฅํด์ผ ํจ.
- Atomicity: transaction์ ๋ชจ๋ ์ฐ์ฐ์ด database์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐ์๋๊ฑฐ๋, ์ ํ ๋ฐ์๋์ง ์์ (All-or-nothing)
- Consistency: ๊ณ ๋ฆฝ๋ ์ํ(์ฆ, ๋์์ ์คํ๋๋ ๋ค๋ฅธ transaction ์์ด)์์์ transaction ์คํ์ database์ consistency๋ฅผ ๋ณด์กดํจ (Correctness)
- Isolation: ๋ค์์ transaction์ด concurrent ํ๊ฒ ์คํ๋ ์ ์์ง๋ง, ๊ฐ transaction์ ๋์์ ์คํ๋๋ ๋ค๋ฅธ transaction์ ์ธ์งํ์ง ๋ชปํด์ผ ํจ.
- ์ค๊ฐ ๋จ๊ณ์ transaction ๊ฒฐ๊ณผ๋ ๋์์ ์คํ๋๋ ๋ค๋ฅธ transaction์๊ฒ ์จ๊ฒจ์ ธ์ผ ํจ.
- ์ฆ, ๋ชจ๋ transaction ์ ์ ์ ๋ํด, ์๊ฒ๋ ๊ฐ ์์ ์ ์ ์คํ์ ๋ง์ณค๊ฑฐ๋, ๊ฐ ๋๋ ํ์ ์คํ์ ์์ํ ๊ฒ์ฒ๋ผ ๋ณด์ฌ์ผ ํจ.
- Durability: transaction์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ํ์๋, system failure๊ฐ ์๋๋ผ๋ database์ ์ํํ ๋ณ๊ฒฝ ์ฌํญ์ด ์ง์๋จ
Transaction state
- Transaction์ ๋ค์ ์ํ ์ค ํ๋์ฌ์ผ ํจ.
- Active: ์ด๊ธฐ ์ํ; transaction์ด ์คํ๋๋ ๋์ ์ด ์ํ ์ ์ง
- Partially committed: ๋ง์ง๋ง ๋ช ๋ น๋ฌธ์ด ์คํ๋ ์งํ
- Failed: ์ ์์ ์ธ ์คํ์ด ๋ ์ด์ ์งํ๋ ์ ์๋ค๋ ๊ฒ์ด ๋ฐ๊ฒฌ๋ ํ
- Aborted: transaction์ด roll back ๋๊ณ database๊ฐ transaction ์์ ์ ์ํ๋ก ๋ณต์๋ ํ. aborted ๋ ํ ๋ ๊ฐ์ง ์ต์
์กด์ฌ:
- Transaction ์ฌ์์(Restart): ๋ด๋ถ์ ์ธ ๋ ผ๋ฆฌ ์ค๋ฅ๊ฐ ์๋ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅ
- Transaction ๊ฐ์ ์ข ๋ฃ(Kill)
- Committed: ์ฑ๊ณต์ ์ธ ์๋ฃ ํ
Transaction atomicity and durability
- Transaction์ด committed ๋๋ aborted ๋๋ฉด ์ข ๋ฃ(Terminated)๋ ๊ฒ์ผ๋ก ๊ฐ์ฃผ
- Committed ๋ ๊ฒฝ์ฐ, durability๊ฐ ์ค์
- Database์ ๋ํ transaction์ ํจ๊ณผ๋ durableํ๊ณ ๊ณต๊ฐ์ ์ด์ด์ผ ํจ.
- ์ด๋ฅผ ์ํด
Partially committed์ํ ๋์ ํ์ - ๋ง์ง๋ง ๋ช ๋ น๋ฌธ์ ์คํํ ํ์๋, ์ค์ ์ถ๋ ฅ์ Main memory(์ฆ, Buffer)์ ๋จ์ ์์ ์ ์์ผ๋ฉฐ, Hardware failure ์ ์์ค๋ ์ ์์.
- (Recovery๋ฅผ ์ํ) ์ถฉ๋ถํ ์ ๋ณด๋ฅผ disk์ ๊ธฐ๋กํ ํ์์ผ transaction์
Committed์ํ๋ก ์ง์ . ๊ทธ๋ ์ง ์์ผ๋ฉดFailedํAbort์ํ๋ก ์ง์ - Failure๊ฐ ๋ฐ์ํ๋๋ผ๋, system์ด ์ฌ์์๋ ๋ ํด๋น ์ ๋ณด๋ฅผ ์ฌ์ฉํ์ฌ transaction์ด ์ํํ ์ ๋ฐ์ดํธ๋ฅผ ์ฌ์์ฑ ๊ฐ๋ฅ
- Aborted ๋ ๊ฒฝ์ฐ, atomicity๊ฐ ์ค์
- Aborted transaction์ database ์ํ์ ์๋ฌด๋ฐ ์ํฅ์ ์ฃผ์ง ์์์ผ ํจ.
- Transaction์ ์ํด ์ํ๋ database์ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ทจ์(Undone)๋์ด์ผ ํจ.
- ์ทจ์(Undone)๊ฐ ์๋ฃ๋๋ฉด, aborted transaction์ roll back ๋์๋ค๊ณ ํจ.
- Transaction abort๋ฅผ ๊ด๋ฆฌํ๋ ๊ฒ์ recovery scheme์ ์ฑ ์
- ์ผ๋ฐ์ ์ผ๋ก Log๋ฅผ ์ ์งํจ์ผ๋ก์จ ์ํ
- ์์ธํ ๋ด์ฉ์ chapter 19 (Recovery systems) ์ฐธ์กฐ
Transaction Isolation
- System์์ ๋ค์์ transaction์ด concurrent ํ๊ฒ ์คํ๋๋ ๊ฒ์ด ํ์ฉ๋จ. ์ฅ์ ์ ๋ค์๊ณผ ๊ฐ์:
- CPU ๋ฐ disk ํ์ฉ๋(Utilization) ์ฆ๊ฐ๋ก ๋ ๋์ transaction throughput ๋์ถ
- ์: ํ transaction์ด cPU๋ฅผ ์ฌ์ฉํ๋ ๋์ ๋ค๋ฅธ transaction์ disk์์ ์ฝ๊ฑฐ๋ ์ธ ์ ์์.
- Transaction์ ํ๊ท ์๋ต ์๊ฐ(Response time) ๋จ์ถ: ์งง์ transaction์ด ๊ธด transaction ๋ค์์ ๊ธฐ๋ค๋ฆด ํ์ ์์.
- CPU ๋ฐ disk ํ์ฉ๋(Utilization) ์ฆ๊ฐ๋ก ๋ ๋์ transaction throughput ๋์ถ
- Concurrency control schemes: Isolation์ ๋ฌ์ฑํ๊ธฐ ์ํ ๋ฉ์ปค๋์ฆ
- ์ฆ, concurrent transaction๋ค์ด database์ consistency๋ฅผ ํ๊ดดํ๋ ๊ฒ์ ๋ฐฉ์งํ๊ธฐ ์ํด ๊ทธ๋ค ๊ฐ์ ์ํธ์์ฉ์ ์ ์ดํจ.
- ์ด๋ฒ chapter์์ concurrent execution์ correctness ๊ฐ๋ ์ ํ์ตํ ํ, chapter 18 (Concurrency control)์์ ํ์ต ์์
Schedules
- Schedule
- Concurrent transaction๋ค์ ๋ช ๋ น์ด๋ค์ด ์คํ๋๋ ์๊ฐ์ ์์๋ฅผ ๋ช ์ํ๋ ๋ช ๋ น์ด ์ํ์ค
- ์ผ๋ จ์ transaction๋ค์ ๋ํ schedule์ ํด๋น transaction๋ค์ ๋ชจ๋ ๋ช ๋ น์ด๋ก ๊ตฌ์ฑ๋์ด์ผ ํจ.
- ๊ฐ ๊ฐ๋ณ transaction ๋ด์ ๋ํ๋๋ ๋ช ๋ น์ด๋ค์ ์์๋ ๋ณด์กด๋์ด์ผ ํจ.
- ์ฑ๊ณต์ ์ผ๋ก ์คํ์ ์๋ฃํ transaction์ ๋ง์ง๋ง ๋ฌธ์ฅ์ผ๋ก
commit๋ช ๋ น์ด๋ฅผ ๊ฐ์ง- ๊ธฐ๋ณธ์ ์ผ๋ก, transaction์ ๋ง์ง๋ง ๋จ๊ณ๋ก
commit๋ช ๋ น์ด๋ฅผ ์คํํ๋ค๊ณ ๊ฐ์
- ๊ธฐ๋ณธ์ ์ผ๋ก, transaction์ ๋ง์ง๋ง ๋จ๊ณ๋ก
- ์คํ ์๋ฃ์ ์คํจํ transaction์ ๋ง์ง๋ง ๋ฌธ์ฅ์ผ๋ก
abort๋ช ๋ น์ด๋ฅผ ๊ฐ์ง - ์ด
A์์B๋ก $50 ์ด์ฒด, ๊ฐA์์B๋ก ์์ก์ 10%๋ฅผ ์ด์ฒดํ๋ค๊ณ ๊ฐ์ - Schedule 1: ๋ค์ ๊ฐ ๋ฐ๋ฅด๋ serial schedule
- Schedule 2: ๋ค์ ์ด ๋ฐ๋ฅด๋ serial schedule
- Schedule 3: schedule 1๊ณผ ๋์ผํ ํจ๊ณผ๋ฅผ ๊ฐ๋(Equivalent) concurrent schedule
- Schedule 4: Inconsistent state๋ฅผ ์ด๋ํ๋ concurrent schedule
- Schedule 1, ~2, ~3์์๋ ํฉ๊ณ
A + B๊ฐ ๋ณด์กด๋์ง๋ง, schedule 4์์๋ ๋ณด์กด๋์ง ์์.
- Schedule 1, ~2, ~3์์๋ ํฉ๊ณ
Serializability
- ๊ธฐ๋ณธ ๊ฐ์ (Basic assumption): ๊ฐ transaction์ database consistency๋ฅผ ๋ณด์กดํจ.
- ๋ฐ๋ผ์, ์ผ๋ จ์ transaction๋ค์ serial execution(์์ฐจ ์คํ)์ database consistency๋ฅผ ๋ณด์กดํจ.
- Concurrent execution ํ์์๋ database์ consistency ๋ณด์ฅ ๊ฐ๋ฅ
- ์คํ๋๋ ๋ชจ๋ schedule์ด concurrent execution ์์ด ๋ฐ์ํ ์ ์๋ schedule๊ณผ ๋์ผํ ํจ๊ณผ๋ฅผ ๊ฐ๋๋ก ํจ์ผ๋ก์จ ๋ฌ์ฑ
- ์ฆ, schedule์ serial schedule๊ณผ ๋ฑ๊ฐ(Equivalent)์ฌ์ผ ํจ.
- (Concurrent ํ ์ ์๋) ์ด๋ค schedule์ด serial schedule๊ณผ Equivalent ํ๋ค๋ฉด, ์ด๋ฅผ serializableํ๋ค๊ณ ํจ.
- Schedule์ serializability๋ฅผ ์ด๋ป๊ฒ ๊ฒฐ์ ํ๋๊ฐ?
- Schedule equivalence์ ๋ค์ํ ํํ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฐ๋
๋ค์ ๋ฐ์์ํด
- Conflict serializability
- View serializability (๋์ ๋ณต์ก๋๋ก ์ธํด ์ค์ ๋ก๋ ์ฌ์ฉ๋์ง ์์)
- Schedule equivalence์ ๋ค์ํ ํํ๊ฐ ๋ค์๊ณผ ๊ฐ์ ๊ฐ๋
๋ค์ ๋ฐ์์ํด
- Transaction์ ๋จ์ํ๋ ๊ด์
- ๋จ์ํ๋ schedule์
read์write๋ช ๋ น์ด๋ค๋ก๋ง ๊ตฌ์ฑ๋จ - ๋จ, transaction์
read์write์ฌ์ด์ Local buffer์ ์๋ ๋ฐ์ดํฐ์ ๋ํด ์์์ ์ฐ์ฐ์ ์ํํ ์ ์๋ค๊ณ ๊ฐ์
- ๋จ์ํ๋ schedule์
Conflicting Instructions
- Transaction ์ ์ ๋ช
๋ น์ด ์ ๋ ๋ค์ ์กฐ๊ฑด์์ ์ถฉ๋(Conflict)ํจ.
- ์ ๊ฐ ๋ชจ๋ ์ ๊ทผํ๋ ์ด๋ค ํญ๋ชฉ
Q๊ฐ ์กด์ฌํ๊ณ , - ์ด ๋ช
๋ น์ด๋ค ์ค ์ ์ด๋ ํ๋๋
write์ฐ์ฐ์- : ์ ๋ conflict ํ์ง ์์.
- : conflict ํจ.
- : conflict ํจ.
- : conflict ํจ.
- ์ ๊ฐ ๋ชจ๋ ์ ๊ทผํ๋ ์ด๋ค ํญ๋ชฉ
- ์ ์ฌ์ด์ conflict๋ ๊ทธ๋ค ์ฌ์ด์ (๋
ผ๋ฆฌ์ ์ธ) ์๊ฐ์ ์์๋ฅผ ๊ฐ์ ํจ.
- ์ฆ, ์คํ ์์๊ฐ ์ค์ํ๋ฉฐ ์์๋ฅผ ๋ฐ๊พธ๋(Swapping) ๊ฒ์ด ํ์ฉ๋์ง ์์.
- ๋ง์ฝ ์ ๊ฐ schedule ๋ด์์ ์ฐ์์ ์ด๊ณ ์๋ก conflict ํ์ง ์๋๋ค๋ฉด, schedule ๋ด์์ ์์น๋ฅผ ์๋ก ๋ฐ๊พธ๋๋ผ๋ ๊ฒฐ๊ณผ๋ ๋์ผํ๊ฒ ์ ์ง๋จ
Conflict serializability
- ๋ง์ฝ schedule
S๊ฐ non-conflicting ๋ช ๋ น์ด๋ค์ ์ผ๋ จ์ swap์ ํตํด scheduleS'๋ก ๋ณํ๋ ์ ์๋ค๋ฉด,S์S'๋ conflict equivalent ํ๋ค๊ณ ํจ. - ์ด๋ค schedule
S๊ฐ serial schedule๊ณผ conflict equivalent ํ๋ค๋ฉด, ๊ทธ scheduleS๋ conflict serializableํ๋ค๊ณ ํจ.- Schedule 3์ non-conflicting ๋ช ๋ น์ด๋ค์ ์ผ๋ จ์ swap์ ํตํด ๋ค์ ๊ฐ ๋ฐ๋ฅด๋ serial schedule์ธ schedule 6๋ก ๋ณํ๋ ์ ์์.
- ๋ฐ๋ผ์ schedule 3์ conflict serializable ํจ.
- Conflict serializableํ์ง ์์ schedule์ ์์:
- ์ schedule์์๋ ๋ช ๋ น์ด๋ฅผ swap ํ์ฌ serial schedule ๋๋ serial schedule ๋ฅผ ์ป์ ์ ์์.
Testing for conflict serializability
- ์ผ๋ จ์ transaction ์ ๋ํ schedule ๊ณ ๋ ค
- Precedence graph (์ฐ์ ์์ ๊ทธ๋ํ)
- ์ ์ (Vertices)์ด transaction์ธ ๋ฐฉํฅ์ฑ ๊ทธ๋ํ(Directed graph)
- ์์ ๋ก์ arc(ํ์ดํ)๋ฅผ ๊ทธ๋ฆฌ๋ ์กฐ๊ฑด:
- ๋ transaction์ด conflict ํ๊ณ , ๊ฐ conflict๊ฐ ๋ฐ์ํ ๋ฐ์ดํฐ ํญ๋ชฉ์ ๋ณด๋ค ๋จผ์ ์ ๊ทผํ ๊ฒฝ์ฐ
- ์ฆ, ๋ค์ ์ธ ๊ฐ์ง ์กฐ๊ฑด ์ค ํ๋๊ฐ ์ฑ๋ฆฝํ ๋:
- ๊ฐ ์
read(Q)์คํ ์ ์write(Q)์คํ - ๊ฐ ์
write(Q)์คํ ์ ์read(Q)์คํ - ๊ฐ ์
write(Q)์คํ ์ ์write(Q)์คํ
- ๊ฐ ์
- ์ ๊ทผ๋ ํญ๋ชฉ์ผ๋ก arc์ ๋ผ๋ฒจ์ ๋ถ์ผ ์ ์์.
- Precedence graph์ Edge๊ฐ ์กด์ฌํ๋ฉด,
S์ Equivalent ํ ์ด๋ค serial scheduleS'์์๋ ๋ ๋ฐ๋์ ๋ณด๋ค ๋จผ์ ๋ํ๋์ผ ํจ. - Schedule์ precedence graph๊ฐ acyclic(์ฌ์ดํด์ด ์์)์ธ ๊ฒฝ์ฐ์๋ง conflict serializable ํจ.
- Cycle-detection ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ์ด ์์๋จ (์ ๊ทธ๋ํ์ ์ ์ ์)
- ๋ ๋์ ์๊ณ ๋ฆฌ์ฆ์ ์์ (๋ Edge์ ์)
- Precedence graph๊ฐ acyclic ์ด๋ฉด, serializability order๋ ๊ทธ๋ํ์ topological sorting(์์ ์ ๋ ฌ)์ ํตํด ์ป์ ์ ์์.
- ์ด๋ ๊ทธ๋ํ์ partial order(๋ถ๋ถ ์์)์ ์ผ์นํ๋ Linear order(์ ํ ์์)์
- Topological sorting์ ํตํด ์ฌ๋ฌ ๊ฐ์ Linear order๋ฅผ ์ป์ ์ ์์.
- (b)์ (c)๋ (a)์ topological sorting์ผ๋ก ์ป์ ์ ์๋ ๋ ๊ฐ์ง Linear order
Example schedule (Schedule A)

Recoverable schedules
- Concurrently ์คํ๋๋ transaction๋ค์ ๋ํ transaction failure์ ์ํฅ
- Transaction ๊ฐ ์คํจํ ๋:
- Serial execution๋ง ํ์ฉ๋ ๊ฒฝ์ฐ: ์ ์ํ ๋ณ๊ฒฝ ์ฌํญ์ ์ทจ์(Undoing)ํ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถ
- Concurrent execution์ด ํ์ฉ๋ ๊ฒฝ์ฐ: atomicity ์์ฑ์ ์ ์์กด์ ์ธ(์: ๊ฐ ์์ฑํ ๋ฐ์ดํฐ๋ฅผ ์ฝ์) ๋ชจ๋ transaction ๋ํ abort ๋ ๊ฒ์ ์๊ตฌํจ.
- Concurrent system์์ ํ์ฉ๋๋ schedule ์ ํ์ ์ ํ์ ๋ ํ์๊ฐ ์์.
- Transaction ๊ฐ ์คํจํ ๋:
- Recoverable schedule
- ๋ง์ฝ transaction ๊ฐ transaction ์ ์ํด ์ด์ ์ ์ฐ์ฌ์ง ๋ฐ์ดํฐ ํญ๋ชฉ์ ์ฝ๋๋ค๋ฉด, ์
commit์ฐ์ฐ์ด ์commit์ฐ์ฐ๋ณด๋ค ๋จผ์ ๋ํ๋์ผ ํจ. - Schedule 11์ recoverableํ์ง ์์:
- ๋ง์ฝ ์ด abort ํด์ผ ํ๋ค๋ฉด, ๋ ์ด๋ฏธ Inconsistent ํ database ์ํ๋ฅผ ์ฝ์์(๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์์๊ฒ ๋ณด์ฌ์ฃผ์์ ๊ฐ๋ฅ์ฑ ์์)
- ๋ฐ๋ผ์, database๋ schedule์ด recoverableํ๋๋ก ๋ณด์ฅํด์ผ ํจ.
- ๋ง์ฝ transaction ๊ฐ transaction ์ ์ํด ์ด์ ์ ์ฐ์ฌ์ง ๋ฐ์ดํฐ ํญ๋ชฉ์ ์ฝ๋๋ค๋ฉด, ์
Cascadeless schedules
- Cascading rollback
- ๋จ์ผ transaction failure๊ฐ ์ผ๋ จ์ transaction rollback์ ์ ๋ฐํ๋ ํ์
- Schedule 10์ ๊ณ ๋ คํ ๋, ์์ง ์ด๋ค transaction๋ commit ํ์ง ์์ (๋ฐ๋ผ์ recoverable ํจ)
- ๋ง์ฝ ์ด ์คํจํ๋ฉด, ๊ณผ ๋ ๋ฐ๋์ roll back ๋์ด์ผ ํจ.
- Schedule 10์ partial schedule๋ก, schedule ๋ด์ ์ ์ด๋ ํ๋์ transaction์ด
commit๋๋abort์ฐ์ฐ์ ๊ฐ์ง ์์.
- Schedule 10์ partial schedule๋ก, schedule ๋ด์ ์ ์ด๋ ํ๋์ transaction์ด
- Cascading rollback์ ์๋นํ ์์ ์์ ์ ์ทจ์(Undoing)ํ๊ฒ ๋ง๋ค ์ ์์ผ๋ฏ๋ก ๋ฐ๋์งํ์ง ์์.
- Cascadeless schedules
- ์ ์ํด ์ด์ ์ ์ฐ์ฌ์ง ๋ฐ์ดํฐ ํญ๋ชฉ์ ์ฝ๋ ๋ชจ๋ transaction ์ ์ ์ ๋ํด, ์
commit์ฐ์ฐ์ด ์read์ฐ์ฐ๋ณด๋ค ๋จผ์ ๋ํ๋์ผ ํจ. - Cascading rollback์ด ๋ฐ์ํ ์ ์์.
- ๋ชจ๋ cascadeless schedule์ ๋ํ recoverable ํจ.
- Schedule์ cascadeless ํ ๊ฒ๋ค๋ก ์ ํํ๋ ๊ฒ์ด ๋ฐ๋์งํจ.
- ์ ์ํด ์ด์ ์ ์ฐ์ฌ์ง ๋ฐ์ดํฐ ํญ๋ชฉ์ ์ฝ๋ ๋ชจ๋ transaction ์ ์ ์ ๋ํด, ์
Concurrency control
- Database system์ ๋ชจ๋ schedule์ด ๋ค์์ ๋ง์กฑํ๋๋ก ๋ณด์ฅํ๋ ๋ฉ์ปค๋์ฆ์ ์ ๊ณตํด์ผ ํจ.
- Database consistency๋ฅผ ์ํด conflict ๋๋ View serializableํ๊ณ recoverable ํด์ผ ํจ.
- ์ฑ๋ฅ์ ์ํด ๊ฐ๊ธ์ cascadeless ํด์ผ ํจ.
- ํ ๋ฒ์ ํ๋์ transaction๋ง ์คํํ๋ ์ ์ฑ
- Serial schedule์ ์์ฑํ์ง๋ง, concurrency ์ ๋(Degree)๊ฐ ๋ฎ์.
- ๋ชฉํ: concurrent schedule์ ํ์ฉํ๋ concurrency control protocol ๊ฐ๋ฐ
- Schedule์ด conflict ๋๋ View serializableํ๋๋ก ๋ณด์ฅ
- ๊ทธ๋ฆฌ๊ณ recoverableํ๋ฉฐ cascadeless ํ๋๋ก ๋ณด์ฅ
- Concurrency ์ ๋(Degree)์ ์ค๋ฒํค๋(Overhead) ๊ฐ์ tradeoff
- ์๋ก ๋ค๋ฅธ concurrency control protocol์ ์๋ก ๋ค๋ฅธ tradeoff ์ ๊ณต:
- ์ด๋ค ๊ธฐ๋ฒ์ conflict-serializable schedule๋ง ์์ฑ๋๋๋ก ํ์ฉํ๋ ๋ฐ๋ฉด, ๋ค๋ฅธ ๊ธฐ๋ฒ์ conflict-serializableํ์ง ์์ View-serializable schedule๋ ํ์ฉ
- ์๋ก ๋ค๋ฅธ concurrency control protocol์ ์๋ก ๋ค๋ฅธ tradeoff ์ ๊ณต:
- ์ผ๋ฐ์ ์ผ๋ก concurrency control protocol์
- Precedence graph๊ฐ ์์ฑ๋๋ ๋์์๋ ์ด๋ฅผ ๊ฒ์ฌํ์ง ์์.
- ๋์ , protocol์ non-serializable schedule์ ํํผํ๋ ๊ท์จ(Discipline)์ ๋ถ๊ณผํจ (์ธ๋ถ ์ฌํญ์ chapter 18 ์ฐธ์กฐ)
Weak Levels of consistency
- ์ผ๋ถ ์ดํ๋ฆฌ์ผ์ด์ ์ serializableํ์ง ์์ schedule์ ํ์ฉํ๋ฉด์ ์ฝํ ์์ค์ consistency๋ฅผ ๊ฐ์ํจ.
- ๋ฎ์ ์์ค์ consistency๋ database์ ๋ํ ๋๋ต์ ์ธ ์ ๋ณด๋ฅผ ์์งํ๋ ๋ฐ ์ ์ฉ
- ์: ๋ชจ๋ ๊ณ์ข์ ๋๋ต์ ์ธ ์ด ์์ก์ ๊ตฌํ๋ read-only transaction
- ์: query optimization์ ์ํด ๊ณ์ฐ๋ database ํต๊ณ๋ ๋๋ต์ ์ผ ์ ์์.
- ์ด๋ฌํ transaction์ ๋ค๋ฅธ transaction์ ๋ํด serializable ํ ํ์๊ฐ ์์.
- ์ ํ์ฑ(Accuracy)๊ณผ ์ฑ๋ฅ(Performance)์ tradeoff
- ์ผ๋ถ database system์ ๊ธฐ๋ณธ์ ์ผ๋ก serializable schedule์ ๋ณด์ฅํ์ง ์์.
- ์: Oracle(๋ฐ ๋ฒ์ 9 ์ด์ ์ postgreSQL)์ ๊ธฐ๋ณธ์ ์ผ๋ก snapshot isolation์ด๋ผ๋ consistency level ์ง์ (SQL ํ์ค์ ์ผ๋ถ๋ ์๋)
Levels of consistency in SQL-92
- SQL ํ์ค์ transaction์ด ๋ค๋ฅธ transaction์ ๋ํด nonserializableํ๊ฒ ์คํ๋ ์ ์์์ ๋ช ์ํ๋๋ก ํ์ฉ
- SQL-92 ํ์ค์ ๋ช
์๋ Isolation levels:
- SERIALIZABLE
- ๋ณดํต serializable execution ๋ณด์ฅ
- ์ผ๋ถ system์ ํน์ ๊ฒฝ์ฐ์ nonseriablizable execution์ ํ์ฉํ๋๋ก ๊ตฌํํ๊ธฐ๋ ํจ.
- REPEATABLE rEAD
- Committed data๋ง ์ฝ์ ์ ์๋๋ก ํ์ฉํ๋ฉฐ, ์ถ๊ฐ์ ์ผ๋ก transaction ๋ด์์ ๋ฐ์ดํฐ ํญ๋ชฉ์ ๋ ๋ฒ ์ฝ์ ๋, ๋ค๋ฅธ transaction์ด ๊ทธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ ์ ์๋๋ก ์๊ตฌํจ.
- ์ฆ, ๋์ผํ ๋ ์ฝ๋์ ๋ฐ๋ณต ์ฝ๊ธฐ๋ ๋ฐ๋์ ๊ฐ์ ๊ฐ์ ๋ฐํํด์ผ ํจ.
- ๊ทธ๋ฌ๋ transaction์ ๋ค๋ฅธ transaction์ ๋ํด serializableํ์ง ์์ ์ ์์.
- READ cOMMITTED: committed data๋ง ์ฝ์ ์ ์๋๋ก ํ์ฉํ์ง๋ง, repeatable read๋ ์๊ตฌํ์ง ์์ ์ฐ์์ ์ธ ์ฝ๊ธฐ๊ฐ ์๋ก ๋ค๋ฅธ(ํ์ง๋ง committed ๋) ๊ฐ์ ๋ฐํํ ์ ์์.
- READ UNCOMMITTED: Uncommitted data๊น์ง ์ฝ์ ์ ์์ (๊ฐ์ฅ ๋ฎ์ Isolation level)
- SERIALIZABLE
(Optional) transaction definition in SQL
- SQL์์ transaction์ ์์์ ์ผ๋ก ์์๋จ
- SQL์์ transaction์ ๋ค์์ ํตํด ์ข
๋ฃ๋จ:
Commit work: ํ์ฌ transaction์ commit ํ๊ณ ์๋ก์ด transaction ์์Rollback work: ํ์ฌ transaction์ abort ์ํด
- ๊ฑฐ์ ๋ชจ๋ database system์์, ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ SQL ๋ฌธ์ ์ฑ๊ณต์ ์ผ๋ก ์คํ๋๋ฉด ์์์ ์ผ๋ก commit ๋จ (Automatic commit)
- ์ฌ๋ฌ ๋ฌธ์ฅ์ ํ๋์ transaction์ผ๋ก ์คํํ๋ ค๋ฉด ์ด๋ฅผ ๊บผ์ผ(Turn off) ํจ.
- Automatic commit์ด ๋นํ์ฑํ๋ ๊ฒฝ์ฐ, start transaction ๋ถํฐ commit(๋๋ rollback)๊น์ง๊ฐ ํ๋์ ๋จ์ผ transaction์ผ๋ก ์๋ณ๋จ (๋ช ๋ น์ด ์ด๋ฆ์ system๋ง๋ค ๋ค๋ฅผ ์ ์์)
- Isolation level์ database ์์ค์์ ์ค์ ๊ฐ๋ฅ
- Isolation level์ transaction ์์ ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ์: SQL์์
set transaction isolation level serializable
- ์: SQL์์
(Optional) transactions as SQL statements
- ์์
- :
select ID, name from instructor where salary > 90000; - :
insert into instructor values ('11111', 'James', 'Marketing', 100000);
- :
- ๊ฐ์
- ์ด ์์๋์ด Index๋ฅผ ์ฌ์ฉํด
(salary > 90000)์ธ tuple์ ์ฐพ์ Lock์ ๊ฒ - ๊ฑฐ์ ๊ฐ์ ์๊ฐ์, ๊ฐ ์๋ก์ด tuple์ ์ฝ์
(
salary > 90000์กฐ๊ฑด ๋ง์กฑ)
- ์ด ์์๋์ด Index๋ฅผ ์ฌ์ฉํด
- ์ด๋ ๊ณผ ๋ conflict ํ๋๊ฐ?
- ์ง๊ด์ ์ผ๋ก๋ conflict ํจ์ด ๋ช ํํ์ง๋ง, ์ฐ๋ฆฌ์ ๋จ์ํ ๋ชจ๋ธ์์๋ ํฌ์ฐฉ๋์ง ์์ ์ ์์.
- Phantom phenomenon์ ์ฌ๋ก: "Phantom" ๋ฐ์ดํฐ์ ๋ํ conflict ์กด์ฌ
- ๋ง์ฝ ๊ฐ ๋จผ์ ์ค๋ฉด, Edge๊ฐ ์กด์ฌํ๊ณ ์ง๋ ฌํ๋จ(Serialized)
- ํ์ง๋ง ์ด ๋จผ์ ์ค๋ฉด, ์ด ์ด์ ์ ์ง๋ ฌํ๋๋๋ก ๊ฐ์ ํ๋ phantom data์ ๋ํ ์ค์ conflict๊ฐ ์์์๋ ๋ถ๊ตฌํ๊ณ precedence graph์ Edge๊ฐ ์์.
- ์ ์์ ๋ concurrency control์ด transaction์ ์ํด ์ ๊ทผ๋๋ tuple ๋ง์ ๊ณ ๋ คํ๋ ๊ฒ์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์์ ๋ณด์ฌ์ค
- Tuple์ ์ฐพ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ ๋ณด(์: Index)๊ฐ Insert, delete ๋๋ Update์ ์ํด ๊ฐฑ์ ๋ ์ ์์.
- ์๋ฅผ ๋ค์ด Locking์ด concurrency control์ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ, relation์ tuple์ ์ถ์ ํ๋ ์๋ฃ ๊ตฌ์กฐ์ Index ๊ตฌ์กฐ ๋ํ ์ ์ ํ๊ฒ Lock ๋์ด์ผ ํจ.

