18. Concurrency Control
Overview
Concurrency Control(๋์์ฑ ์ ์ด): ์ถฉ๋ํ๋ ๋ช ๋ น ๊ฐ์ ์คํ ์์๋ฅผ ๋ณ๊ฒฝํ์ง ์์ผ๋ฉด์, ๋์์ฑ ๋ ๋ฒจ์ ๊ฐ๋ฅํ ํ ๋๊ฒ ๋ง๋๋ ์ค์ผ์ค ์์ฑ
Lock-based Protocols
- Lock: ๋ฐ์ดํฐ ์์ดํ ์ ๋ํ ๋์ ์ ๊ทผ์ ์ ์ดํ๋ ๋ฉ์ปค๋์ฆ
- ๋ฐ์ดํฐ ์์ดํ
์ ๋ ๊ฐ์ง ๋ชจ๋๋ก ์ ๊ธธ ์ ์์.
- eXclusive (X) mode: ๋ฐ์ดํฐ ์์ดํ ์ ์ฝ๊ณ ์ธ ์ ์์.
- lock-X ๋ฐ unlock ๋ช ๋ น์ ์ฌ์ฉํ์ฌ X-lock์ ์์ฒญํ๊ณ ํด์
- Shared (S) mode: ๋ฐ์ดํฐ ์์ดํ ์ ์ฝ์ ์๋ง ์์.
- lock-S ๋ฐ unlock ๋ช ๋ น์ ์ฌ์ฉํ์ฌ S-lock์ ์์ฒญํ๊ณ ํด์
- ๋ชจ๋ transaction์ ๋ฐ์ดํฐ ์์ดํ
Q์ ๋ํด ์ํํ operation ์ ํ์ ๋ฐ๋ผ ์ ์ ํ ๋ชจ๋๋ก lock์ ์์ฒญ
- Lock ์์ฒญ์ Concurrency-Control Manager๋ก ์ ๋ฌ
- Lock ์์ฒญ์ด ์น์ธ๋ ํ์๋ง transaction์ด ์งํ ๊ฐ๋ฅ
- ์์ฒญ๋ lock์ด ํด๋น ์์ดํ ์ ๋ํด ๋ค๋ฅธ transaction์ด ์ด๋ฏธ ๋ณด์ ํ๊ณ ์๋ lock๊ณผ compatibleํ๋ฉด transaction์ lock์ ๋ถ์ฌ๋ฐ์ ์ ์์.
- S-lock: ์์์ ์์ transaction์ด ์์ดํ ์ ๋ํด ๋ณด์ ๊ฐ๋ฅ
- X-lock: ํ transaction์ด X-lock์ ๋ณด์ ํ๊ณ ์๋ค๋ฉด, ๋ค๋ฅธ transaction์ ํด๋น ์์ดํ ์ ๋ํด ์ด๋ ํ lock๋ ๋ณด์ ํ ์ ์์.
| S | X | |
|---|---|---|
| S | true | false |
| X | false | true |
Lock compatibility Matrix
Schedule with Lock Grants
- ๋๋จธ์ง ์ฅ์์๋ grant ์๋ต
- Lock ์์ฒญ ๋ฐ๋ก ๋ค์์ ์ค๋ ๋ค์ ๋ช ๋ น ์ง์ ์ grant๊ฐ ๋ฐ์ํ๋ค๊ณ ๊ฐ์
- ์ด ์ค์ผ์ค์ serializableํ์ง ์์.
- Lock์ ๋จ์ํ ํ๋/ํด์ ํ๋ ๊ฒ๋ง์ผ๋ก๋ Transaction isolation serializability์ ๋ณด์ฅํ์ง ๋ชปํจ.
| Concurrency-Control manager | ||
|---|---|---|
display() | ||
Locking Protocols
- Locking Protocol: ๋ชจ๋ transaction์ด lock์ ์์ฒญํ๊ณ ํด์ ํ ๋ ๋ฐ๋ฅด๋ ๊ท์น์ ์งํฉ
- ๊ฐ๋ฅํ ์ค์ผ์ค ์งํฉ์ ์ ํํ์ฌ ์ง๋ ฌ์ฑ์ ๊ฐ์
- ์ฃผ์ด์ง locking Protocol ํ์์,
- ์ค์ผ์ค S๋ ํด๋น Protocol์ ๋ฐ๋ฅด๋ transaction ์งํฉ์ ์ํด ์์ฑ๋ ์ ์๋ค๋ฉด ํด๋น Protocol ํ์์ legal
- Protocol์ ํด๋น Protocol ํ์ ๋ชจ๋ legal ์ค์ผ์ค์ด serialiazableํ๋ค๋ฉด ์ง๋ ฌ์ฑ์ ๋ณด์ฅ
Deadlock and Starvation
- ๋ถ๋ถ ์ค์ผ์ค(Partial Schedule)์ ๊ณ ๋ คํ์ ๋
- ์ ๋ชจ๋ ์งํํ ์ ์์.
- ์คํ์ ๊ฐ ๊ฐ B์ ๋ํ X-lock์ ํด์ ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๊ณ ,
lock-X(A)์คํ์ ๊ฐ ๊ฐ A์ ๋ํ S-lock์ ํด์ ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ํจ.
- ์ด๋ฌํ ์ํฉ์ Deadlock์ด๋ผ๊ณ ํจ.
- Deadlock์ ์ฒ๋ฆฌํ๋ ค๋ฉด ๋๋ ์ค ํ๋๊ฐ rollback๋์ด์ผ ํ๊ณ lock์ด ํด์ ๋์ด์ผ ํจ.
- Deadlock์ ์ ์ฌ์ฑ์ ๋๋ถ๋ถ์ locking protocol์ ์กด์ฌํ๋ฉฐ, ์ด๋ ํ์์
- Starvation ๋ํ concurrency control manager๊ฐ ์๋ชป ์ค๊ณ๋๋ฉด ๋ฐ์ ๊ฐ๋ฅ
- Case 1: ํ transaction์ด ์์ดํ ์ ๋ํ X-lock์ ๊ธฐ๋ค๋ฆฌ๋ ๋์, ๋ค๋ฅธ transaction๋ค์ ์ฐ์์ ์ธ S-lock ์์ฒญ์ด ์น์ธ๋๋ ๊ฒฝ์ฐ
- Case 2: ๋์ผํ transaction์ด deadlock์ผ๋ก ์ธํด ๋ฐ๋ณต์ ์ผ๋ก rollback๋๋ ๊ฒฝ์ฐ
- Concurrency control manager๋ starvation์ ๋ฐฉ์งํ๋๋ก ์ค๊ณ๋ ์ ์์.
Two-Phase Locking (2PL) Protocol
- Conflict-Serializable ์ค์ผ์ค์ ๋ณด์ฅํ๋ protocol
- ๊ฐ transaction์ lock ์์ฒญ๊ณผ ํด์ ๋ฅผ ๋ ๋จ๊ณ๋ก ๋๋์ด ์คํํด์ผ ํจ.

- ๋จ๊ณ 1: Growing ๋จ๊ณ
- Transaction์ lock์ ํ๋ํ ์ ์์.
- Transaction์ lock์ ํด์ ํ ์ ์์.
- ๋จ๊ณ 2: Shrinking ๋จ๊ณ
- Transaction์ lock์ ํด์ ํ ์ ์์.
- Transaction์ lock์ ํ๋ํ ์ ์์.
- ์ด Protocol์ ์ง๋ ฌ์ฑ์ ๋ณด์ฅ
- Transaction๋ค์ lock Point(์ต์ข lock์ ํ๋ํ ์์ ) ์์๋ก serialize๋ ์ ์์์ด ์ฆ๋ช ๊ฐ๋ฅ
- Two-Phase locking์ ์ง๋ ฌ์ฑ์ ์ํ ํ์ ์กฐ๊ฑด์ ์๋
- 2PL์ ์ฌ์ฉํ์ง ์์๋ ์ป์ ์ ์๋ conflict Serializable ์ค์ผ์ค์ด ์์.
- ๊ทธ๋ฌ๋ Data ์ ๊ทผ ์์์ ๊ฐ์ ์ถ๊ฐ ์ ๋ณด๊ฐ ์๋ ๊ฒฝ์ฐ, Two-Phase locking์ ์ถฉ๋ ์ง๋ ฌ์ฑ์ ํ์
- ์ถ๊ฐ ์ ๋ณด๊ฐ ์๋ค๋ฉด, 2PL ์ด์ธ์ ๋ค๋ฅธ locking Protocol์ ๊ณ ์ํ ์ ์์.
- Two-Phase locking์ deadlock์ผ๋ก๋ถํฐ์ ์์ ๋ฅผ ๋ณด์ฅํ์ง ์์.
- Cascading roll-back์ด ์๋ recoverability๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด ๊ธฐ๋ณธ 2PL์ ํ์ฅ์ด ํ์ํจ.
- Strict Two-Phase locking: Transaction์ commit ๋๋ abortํ ๋๊น์ง ๋ชจ๋ X-lock์ ๋ณด์ ํด์ผ ํจ.
- Recoverability๋ฅผ ๋ณด์ฅํ๊ณ cascading roll-back์ ๋ฐฉ์ง
- Rigorous Two-Phase locking: Transaction์ commit ๋๋ abortํ ๋๊น์ง ๋ชจ๋ lock์ ๋ณด์ ํด์ผ ํจ.
- Transaction์ commit ์์๋ก serialize๋ ์ ์์.
- Strict Two-Phase locking: Transaction์ commit ๋๋ abortํ ๋๊น์ง ๋ชจ๋ X-lock์ ๋ณด์ ํด์ผ ํจ.
- Lock conversions
- :
- :
- ์ ์ ๋ํ X-lock์ ํ๋ํด์ผ ํจ.
- ์ด ๋ณด๋ค ๋จผ์ ์์ํ๋ฉด, ๊ณผ ์ ๋ชจ๋ ๋์ ์คํ์ ์ง๋ ฌ ์คํ๊ณผ ๊ฐ์.
- ๊ทธ๋ฌ๋ ์ ์ต์ข ์คํ์์๋ง X-lock์ด ํ์
- ์ด ๋จผ์ S-lock์ ํ๋ํ๊ณ ๋์ค์ lock์ X-lock์ผ๋ก ๋ณ๊ฒฝํ๋ค๋ฉด, ๊ณผ ๊ฐ ๊ณผ ์ ๋์์ ์ ๊ทผํ ์ ์์ผ๋ฏ๋ก ๋ ๋์ ๋์์ฑ์ ์ป์ ์ ์์.
- Lock upgrade: S-lock์ X-lock์ผ๋ก ๋ณํ
- Lock Downgrade: X-lock์ S-lock์ผ๋ก ๋ณํ
- Lock conversion์ ํฌํจํ Two-Phase locking Protocol
- Growing Phase
- ์์ดํ ์ ๋ํ S-lock ํ๋
- ์์ดํ ์ ๋ํ X-lock ํ๋
- S-lock์ X-lock์ผ๋ก ๋ณํ (Upgrade)
- Shrinking Phase
- S-lock ํด์
- X-lock ํด์
- X-lock์ S-lock์ผ๋ก ๋ณํ (Downgrade)
- Growing Phase
- ์ด Protocol์ ์ง๋ ฌ์ฑ์ ๋ณด์ฅ
- Strict Two-Phase locking ๋ฐ rigorous Two-Phase locking (Lock conversion ํฌํจ)์ ์์ฉ Database ์์คํ ์์ ๊ด๋ฒ์ํ๊ฒ ์ฌ์ฉ๋๋ฉฐ, ๋จ์ํ Two-Phase locking์ผ๋ก ์ง์นญ๋๊ธฐ๋ ํจ.
Automatic Acquisition of Locks
- Transaction ๋ ๋ช ์์ ์ธ locking ํธ์ถ ์์ด ํ์ค read/write ๋ช ๋ น์ ์คํ
- operation
read(D)์ฒ๋ฆฌ ๋ฐฉ์
if Ti has a lock on D then read(D);
else begin
if necessary wait until no other transaction has a X-lock on D;
grant Ti a S-lock on D;
read(D);
end
- operation
write(D)์ฒ๋ฆฌ ๋ฐฉ์
if Ti has a X-lock on D then write(D);
else begin
if necessary wait until no other transaction has any lock on D;
if Ti has a S-lock on D then
upgrade lock on D to X-lock;
else grant Ti a X-lock on D;
write(D);
end
- ๋ชจ๋ lock์ commit ๋๋ abort ํ์ ํด์ (Rigorous 2PL ์ฌ์ฉ)
Implementation of Locking
- Lock manager๋ ๋ณ๋์ ํ๋ก์ธ์ค๋ก ๊ตฌํ๋ ์ ์์.
- Transaction์ lock ๋ฐ unlock ์์ฒญ์ lock Manager์๊ฒ ๋ฉ์์ง๋ก ๋ณด๋
- Lock manager๋ lock Grant ๋ฉ์์ง(๋๋ Deadlock์ ๊ฒฝ์ฐ transaction์๊ฒ rollback์ ์์ฒญํ๋ ๋ฉ์์ง)๋ฅผ ๋ณด๋ด lock ์์ฒญ์ ์๋ต
- ์์ฒญํ๋ transaction์ ์์ฒญ์ ์๋ตํ ๋๊น์ง ๋๊ธฐ
- Lock Table
- Lock manager๊ฐ ๊ด๋ฆฌํ๋ ์ธ๋ฉ๋ชจ๋ฆฌ ์๋ฃ๊ตฌ์กฐ
- ์น์ธ๋ lock๊ณผ ๋ณด๋ฅ ์ค์ธ ์์ฒญ์ ๊ธฐ๋ก
- ์ผ๋ฐ์ ์ผ๋ก lock์ด ๊ฑธ๋ฆฐ ๋ฐ์ดํฐ ์์ดํ ์ ์ด๋ฆ์ ์ธ๋ฑ์ค๋ก ํ๋ ํด์ ํ ์ด๋ธ๋ก ๊ตฌํ
- ๊ฐ ํด์๋ ๋ฐ์ดํฐ ์์ดํ ์ ๋ํด, ์์ฒญ์ด ๋์ฐฉํ ์์๋๋ก ๊ฐ ์์ฒญ์ ๋ํ ๋ ์ฝ๋์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๊ฐ ์กด์ฌ
- ์ถฉ๋ ํด๊ฒฐ์ ์ํด chaining ์ฌ์ฉ
Lock Table
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๊ฐ ๋ ์ฝ๋์ ํฌํจ๋๋ ๊ฒ๋ค
- ์์ฒญ์ ๋ณด๋ธ transaction
- ์์ฒญํ lock ๋ชจ๋
- ํ์ฌ ์์ฒญ์ด ์น์ธ๋์๋์ง์ ์ฌ๋ถ
- ์๋ก์ด lock ์์ฒญ ๋ฉ์์ง ๋์ฐฉ ์
- ๋ฐ์ดํฐ ์์ดํ ์ ๋ํ ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๋์ ๋ ์ฝ๋ ์ถ๊ฐ (๋น์ด ์์ผ๋ฉด ๋ฆฌ์คํธ ์์ฑ)
- ์ด์ ์ ๋ชจ๋ lock๊ณผ compatibleํ๋ฉด ์น์ธ
- unlock ๋ฉ์์ง ๋์ฐฉ ์
- ๋ฆฌ์คํธ์์ ํด๋น ๋ ์ฝ๋ ์ญ์
- ๋ค๋ฐ๋ฅด๋ ๋ ์ฝ๋ (์๋ ๊ฒฝ์ฐ)๋ฅผ ๊ฒ์ฌํ์ฌ ์ด์ ์น์ธ๋ ์ ์๋์ง ํ์ธ
- Transaction์ด Abortํ๋ฉด, transaction์ ๋๊ธฐ ์ค์ด๊ฑฐ๋ ์น์ธ๋ ๋ชจ๋ ์์ฒญ์ด ์ญ์ ๋จ.
- Lock manager๋ ์ด๋ฅผ ํจ์จ์ ์ผ๋ก ๊ตฌํํ๊ธฐ ์ํด ๊ฐ transaction์ด ๋ณด์ ํ lock์ ๋ฆฌ์คํธ๋ฅผ ์ ์งํ ์ ์์.

(Optional) Graph-based Protocols

- ์ถ๊ฐ ์ ๋ณด๊ฐ ์๋ค๋ฉด ์ถฉ๋ ์ง๋ ฌ์ฑ์ ๋ณด์ฅํ๋ Two-Phase locking ์ด์ธ์ ๋ค๋ฅธ locking protocol์ ๊ณ ์ํ ์ ์์.
- ๊ฐ๋จํ ์ถ๊ฐ ์ ๋ณด: Database ์์ดํ
์ ์ ๊ทผํ๋ ์์
- ๋ชจ๋ ๋ฐ์ดํฐ ์์ดํ ์ ์งํฉ ์ partial ordering (โ)๋ฅผ ๋ถ๊ณผ
- ์ด๋ฉด, ์ ๋ชจ๋์ ์ ๊ทผํ๋ ๋ชจ๋ transaction์ ๋ณด๋ค ์ ๋จผ์ ์ ๊ทผํด์ผ ํจ.
- ์ด๋ฌํ partial ordering์ Data์ ๋ ผ๋ฆฌ์ ๋๋ ๋ฌผ๋ฆฌ์ ์กฐ์ง์ ๊ฒฐ๊ณผ์ผ ์๋ ์๊ณ , ์ค๋ก์ง concurrency control ๋ชฉ์ ์ผ๋ก๋ง ๋ถ๊ณผ๋ ์๋ ์์.
- ์งํฉ D๋ ์ด์ directed Acyclic Graph(Database Graph)๋ก ๋ณผ ์ ์์.
- Tree Protocol: X-lock๋ง ์ฌ์ฉํ๋๋ก ์ ํ๋ ๊ฐ๋จํ Graph-based Protocol
- ๊ฐ transaction ๋ ๋ฐ์ดํฐ ์์ดํ
์ ์ต๋ ํ ๋ฒ lockํ ์ ์์ผ๋ฉฐ, ๋ค์ ๊ท์น์ ์ค์ํด์ผ ํจ.
- ์ ์ฒซ ๋ฒ์งธ lock์ ๋ชจ๋ ๋ฐ์ดํฐ ์์ดํ ์ ๊ฑธ๋ฆด ์ ์์.
- ๊ทธ ํ, ๋ฐ์ดํฐ ์์ดํ Q๋ ์ parent๊ฐ ํ์ฌ ์ ์ํด lock๋ ๊ฒฝ์ฐ์๋ง ์ ์ํด lock๋ ์ ์์.
- ๋ฐ์ดํฐ ์์ดํ ์ ์ธ์ ๋ ์ง unlock๋ ์ ์์.
- ์ ์ํด lock๋๊ณ unlock๋ ๋ฐ์ดํฐ ์์ดํ ์ ๊ทธ ํ์ ์ ์ํด ๋ค์ lock๋ ์ ์์.
- ๊ฐ transaction ๋ ๋ฐ์ดํฐ ์์ดํ
์ ์ต๋ ํ ๋ฒ lockํ ์ ์์ผ๋ฉฐ, ๋ค์ ๊ท์น์ ์ค์ํด์ผ ํจ.
- Tree Protocol์ ์ถฉ๋ ์ง๋ ฌ์ฑ๊ณผ deadlock์ผ๋ก๋ถํฐ์ ์์ ๋ฅผ ๋ณด์ฅ
- Tree Protocol์์๋ 2PL๋ณด๋ค unlock์ด ๋ ์ผ์ฐ ๋ฐ์ํ ์ ์์.
- ๋๊ธฐ ์๊ฐ ๋จ์ถ ๋ฐ ๋์์ฑ ์ฆ๊ฐ
- Protocol์ Deadlock-free: rollback์ด ํ์ ์์.
- ๋จ์
- ์ด ์ญ์ recoverability ๋๋ cascade freedom์ ๋ณด์ฅํ์ง ์์.
- Recoverability ๋ณด์ฅ์ ์ํด commit dependency ๋์ ํ์
- ๊ฐ uncommitted ๋ฐ์ดํฐ ์์ดํ Q๋ฅผ ์ฝ์ ๋, Q๋ฅผ ๋ง์ง๋ง์ผ๋ก writeํ uncommitted transaction์ ๋ํ ์ commit dependency๋ฅผ ๊ธฐ๋ก
- ๋ commit dependency๋ฅผ ๊ฐ์ง ๋ชจ๋ transaction์ด commit๋ ๋๊น์ง commit์ด ํ์ฉ๋์ง ์์: ์ด๋ค ์ค ํ๋๋ผ๋ abortํ๋ฉด ๋ abort๋์ด์ผ ํจ.
- Transaction์ ์ ๊ทผํ์ง ์๋ ๋ฐ์ดํฐ ์์ดํ
๋ lockํด์ผ ํ ์ ์์.
- ์: A์ J์ ์ ๊ทผํ๊ธฐ ์ํด B, D, H ์์ดํ ๋ lockํด์ผ ํจ.
- Locking overhead ์ฆ๊ฐ ๋ฐ ์ถ๊ฐ ๋๊ธฐ ์๊ฐ
- ์ ์ฌ์ ์ธ ๋์์ฑ ๊ฐ์
- ์ด ์ญ์ recoverability ๋๋ cascade freedom์ ๋ณด์ฅํ์ง ์์.
- 2PL์์๋ ๋ถ๊ฐ๋ฅํ ์ค์ผ์ค์ด tree protocol์์ ๊ฐ๋ฅํ๋ฉฐ, ๊ทธ ๋ฐ๋๋ ๊ฐ๋ฅ
Deadlock Prevention
- Deadlock: Transaction ์งํฉ์ด ์กด์ฌํ์ฌ, ์งํฉ ๋ด์ ๋ชจ๋ transaction์ด ์งํฉ ๋ด์ ๋ค๋ฅธ transaction์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ํ
- Deadlock Prevention Protocols: ์์คํ
์ด deadlock ์ํ๋ก ์ง์
ํ์ง ์๋๋ก ๋ณด์ฅํ๋ protocol. ์ผ๋ถ ์๋ฐฉ ์ ๋ต
- ๊ฐ transaction์ด ์คํ์ ์์ํ๊ธฐ ์ ์ ๋ชจ๋ ๋ฐ์ดํฐ ์์ดํ ์ lockํ๋๋ก ์๊ตฌ ('Hold-and-wait' ์กฐ๊ฑด ์ ๊ฑฐ)
- ๋ชจ๋ ๋ฐ์ดํฐ ์์ดํ ์ partial ordering๋ฅผ ๋ถ๊ณผํ๊ณ transaction์ด ๋ฐ์ดํฐ ์์ดํ ์ ์ง์ ๋ ์์๋ก๋ง lockํ ์ ์๋๋ก ์๊ตฌ ('Circular wait' ์กฐ๊ฑด ์ ๊ฑฐ)
- Transaction timestamp-based Schemes
- Wait-Die Scheme (Non-preemptive)
- older transaction์ Younger transaction์ด ๋ฐ์ดํฐ ์์ดํ ์ ํด์ ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆด ์ ์์.
- Younger transaction์ older transaction์ ์ ๋ ๊ธฐ๋ค๋ฆฌ์ง ์์ผ๋ฉฐ, ๋์ rollback๋จ.
- Wound-Wait Scheme (Preemptive)
- older transaction์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ Younger transaction์ wound(Rollback ๊ฐ์ )
- Younger transaction์ older transaction์ ๊ธฐ๋ค๋ฆด ์ ์์.
- ๋ Scheme ๋ชจ๋
- ๊ฒฝ๋ก์ฐ๋์ฌ์ ๊ธฐ๋ฐ
- Rollback๋ transaction์ ์๋ timestamp๋ก ๋ค์ ์์๋์ด starvation์ ๋ฐฉ์ง
- ๋ถํ์ํ rollback์ด ๋ฐ์ํ ์ ์์.
- Wait-Die Scheme (Non-preemptive)
- Lock Timeout-based Schemes (Deadlock ํ์ง & ๋ณต๊ตฌ์ ์ ์ฌ)
- Transaction์ lock์ ์ํด ์ง์ ๋ ์๊ฐ ๋์๋ง ๋๊ธฐ
- ๊ทธ ํ, ๋๊ธฐ ์๊ฐ์ด ์ด๊ณผ๋๋ฉด transaction์ด rollback๋จ.
- Deadlock์ด ๋ฐ์ํ๋ฉด timeout์ผ๋ก ํด๊ฒฐ๋๋๋ก ๋ณด์ฅ
- ๊ตฌํ์ ๊ฐ๋จํ์ง๋ง, deadlock์ด ์๋ ๊ฒฝ์ฐ์๋ transaction์ ๋ถํ์ํ๊ฒ rollbackํ ์ ์์.
- ์ ์ ํ timeout ๊ฐ๊ฒฉ ๊ฐ์ ๊ฒฐ์ ํ๊ธฐ ์ด๋ ค์
- Starvation ๋ํ ๋ฐ์ ๊ฐ๋ฅ
Deadlock Detection
- Wait-for Graph: Transaction์ ์ ์ ์ผ๋ก ํ๋ directed graph
- ๋ก์ Edge: ๊ฐ ๊ฐ conflicting ๋ชจ๋๋ก ๋ณด์ ํ lock์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ๊ฒฝ์ฐ
- ์์คํ ์ด deadlock ์ํ wait-for Graph์ cycle์ด ์์.
- ์ฃผ๊ธฐ์ ์ผ๋ก deadlock-Detection ์๊ณ ๋ฆฌ์ฆ์ ํธ์ถํ์ฌ cycle์ ์ฐพ์.

- Deadlock์ด ๊ฐ์ง๋๋ฉด
- Deadlock cycle์ ๊นจ๊ธฐ ์ํด ์ผ๋ถ transaction์ด rollback๋์ด์ผ ํจ (Victim)
- Victim์ผ๋ก ์ต์ ๋น์ฉ์ ์ด๋ํ๋ transaction์ ์ ํ
- Rollback: Transaction์ ์ด๋๊น์ง rollbackํ ์ง ๊ฒฐ์
- Total rollback: Transaction์ abortํ๊ณ ๋ค์ ์์
- Partial rollback: Cycle ๋ด์ ๋ค๋ฅธ transaction์ด ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ lock์ ํด์ ํ๋ ๋ฐ ํ์ํ ๋งํผ๋ง victim transaction์ rollback
- Starvation ๊ฐ๋ฅ์ฑ โ ํด๊ฒฐ์ฑ
- ๊ฐ์ฅ ์ค๋๋ transaction์ victim์ผ๋ก ์ ํํ์ง ์์.
Multiple Granularity
- ์ง๊ธ๊น์ง ๊ฐ๋ณ ๋ฐ์ดํฐ ์์ดํ ์ locking unit์ผ๋ก ์ฌ์ฉ
- ๋๋ก๋ ์ฌ๋ฌ ๋ฐ์ดํฐ ์์ดํ
์ ๊ทธ๋ฃนํํ์ฌ ํ๋์ ๊ฐ๋ณ locking unit์ผ๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ด ์ ๋ฆฌ
- ์: ์ ์ฒด relation์ ์ค์บํ ๋, Tuple-level lock์ ๋ฐํํ๋ ๋์ ์ ์ฒด relation์ lockํ๋ ๋จ์ผ lock ์์ฒญ์ ๋ฐํํ๋ ๊ฒ์ด ์ข์.
- โ ์์คํ ์ด ๋ค์ค ์์ค์ Granularity๋ฅผ ์ ์ํ ์ ์๋๋ก ํ๋ ๋ฉ์ปค๋์ฆ์ด ํ์
- ๋ฐ์ดํฐ ์์ดํ
์ด ๋ค์ํ ํฌ๊ธฐ๋ฅผ ๊ฐ๋๋ก ํ์ฉํ๊ณ , ์์ Granularity๊ฐ ๋ ํฐ Granularity ๋ด์ Nest๋๋ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ ์
- Tree ํํ๋ก ๊ทธ๋ํฝ์ ์ผ๋ก ํํ ๊ฐ๋ฅ
- Transaction์ด Tree์ ๋ ธ๋๋ฅผ ๋ช ์์ ์ผ๋ก lockํ๋ฉด, ํด๋น ๋ ธ๋์ ๋ชจ๋ Descendant๋ฅผ ๊ฐ์ ๋ชจ๋๋ก ์๋ฌต์ ์ผ๋ก lock
- Locking Granularity(Locking์ด ์ํ๋๋ Tree์ ์์ค)
- Fine Granularity (Tree์ ํ์): ๋์ ๋์์ฑ, ๋์ locking overhead
- Coarse Granularity (Tree์ ์์): ๋ฎ์ locking overhead, ๋ฎ์ ๋์์ฑ
Example of Granularity Hierarchy
- ๊ฐ์ฅ ๊ฑฐ์น(์์) ์์ค๋ถํฐ ์์ํ๋ ์์ค
- Database (DB) โ Area โ File โ record

- ๋ฌธ์ : ์ด ์ X-lock์ ๋ณด์ ํ๊ณ ์๋ค๊ณ ๊ฐ์ . ์ ์ํ๋ ๋ชจ๋ ๋ ์ฝ๋์ X-lock์ ์๋ฌต์ ์ผ๋ก ๋ณด์
- Case 1: ๊ฐ ์ ๋ํ lock ์์ฒญ์ ๋ฐํ (๋ช
์์ ์ผ๋ก lock๋์ง ์์). ๊ฐ ์ lockํ ์ ์๋์ง ์ด๋ป๊ฒ ๊ฒฐ์ ?
- Root์์ ๊น์ง Tree๋ฅผ Traverseํด์ผ ํ๋ฉฐ, ํด๋น ๊ฒฝ๋ก์ ์ด๋ค ๋ ธ๋๋ผ๋ Incompatible ๋ชจ๋๋ก lock๋์ด ์์ผ๋ฉด ๋ ๋๊ธฐํด์ผ ํจ.
- Case 2: ๊ฐ ์ ์ฒด DB์ ๋ํ lock ์์ฒญ์ ๋ฐํ. ์ด๋ ์น์ธ๋์ด์๋ ์ ๋จ. ์ด๋ป๊ฒ ๊ฒฐ์ ?
- Incompatible lock์ด ์๋์ง ์ ์ฒด Tree๋ฅผ Traverseํ์ฌ ํ์ธํด์ผ ํจ.
- Case 1: ๊ฐ ์ ๋ํ lock ์์ฒญ์ ๋ฐํ (๋ช
์์ ์ผ๋ก lock๋์ง ์์). ๊ฐ ์ lockํ ์ ์๋์ง ์ด๋ป๊ฒ ๊ฒฐ์ ?
- ํด๊ฒฐ์ฑ : Intention lock ๋ชจ๋
Intention Lock Modes
- S ๋ฐ X lock ๋ชจ๋ ์ธ์, Multiple Granularity๋ฅผ ์ํ ์ธ ๊ฐ์ง ์ถ๊ฐ lock ๋ชจ๋(Intention lock Modes)
- Intention-shared (IS): Tree์ ํ์ ์์ค์์ ๋ช ์์ locking์ด Shared ๋ชจ๋ lock์ผ๋ก๋ง ์ํ๋จ์ ๋ํ๋
- Intention-exclusive (IX): Tree์ ํ์ ์์ค์์ ๋ช ์์ locking์ด Exclusive ๋ชจ๋ ๋๋ Shared ๋ชจ๋ lock์ผ๋ก ์ํ๋จ์ ๋ํ๋
- Shared and intention-exclusive (SIX): ํด๋น ๋ ธ๋๋ฅผ root๋ก ํ๋ Subtree๊ฐ Shared ๋ชจ๋๋ก ๋ช ์์ ์ผ๋ก lock๋์ด ์์ผ๋ฉฐ, ํ์ ์์ค์์ Exclusive ๋ชจ๋ lock์ผ๋ก ๋ช ์์ locking์ด ์ํ๋๊ณ ์์์ ๋ํ๋
- ๋
ธ๋๊ฐ ๋ช
์์ ์ผ๋ก lock๋๊ธฐ ์ ์ ํด๋น ๋
ธ๋์ ๋ชจ๋ ancestor์ intention lock์ด ์ค์ ๋จ.
- Ancestor ๋ ธ๋๋ฅผ S ๋๋ X ๋ชจ๋๋ก lockํ ๋ ๋ชจ๋ descendant ๋ ธ๋๋ฅผ ํ์ธํ ํ์ ์์ด ํ์ฉ
- ๋ชจ๋ lock ๋ชจ๋์ ๋ํ compatibility Matrix
| IS | IX | S | SIX | X | |
|---|---|---|---|---|---|
| IS | true | true | true | true | false |
| IX | true | true | false | false | false |
| S | true | false | true | false | false |
| SIX | true | false | false | false | false |
| X | false | false | false | false | false |
Multiple Granularity Locking Protocol
- Transaction ๋ ๋ค์ ๊ท์น์ ์ฌ์ฉํ์ฌ Node ๋ฅผ lockํ ์ ์์.
- Lock compatibility matrix๋ฅผ ์ค์ํด์ผ ํจ.
- Tree์ root๊ฐ ๊ฐ์ฅ ๋จผ์ lock๋์ด์ผ ํ๋ฉฐ, ์ด๋ค ๋ชจ๋๋ก๋ lock๋ ์ ์์.
- Node ๋ ์ parent๊ฐ ํ์ฌ IX ๋๋ iS ๋ชจ๋๋ก lock๋ ๊ฒฝ์ฐ์๋ง S ๋๋ iS ๋ชจ๋๋ก lock๋ ์ ์์.
- Node ๋ ์ parent๊ฐ ํ์ฌ IX ๋๋ SIX ๋ชจ๋๋ก lock๋ ๊ฒฝ์ฐ์๋ง X, sIX, ๋๋ iX ๋ชจ๋๋ก lock๋ ์ ์์.
- ๋ ์ด์ ์ ์ด๋ ํ ๋ ธ๋๋ unlockํ์ง ์์ ๊ฒฝ์ฐ์๋ง ๋ ธ๋๋ฅผ lockํ ์ ์์ (์ฆ, ๋ Two-Phase)
- ๋ ์ ์์ ์ค ์ ์ํด ํ์ฌ lock๋ ๊ฒ์ด ์๋ ๊ฒฝ์ฐ์๋ง Node ๋ฅผ unlockํ ์ ์์.
- Lock์ root์์ leaf ์์๋ก ํ๋๋๋ ๋ฐ๋ฉด, leaf์์ root ์์๋ก ํด์ ๋จ์ ๊ด์ฐฐ
- Lock Granularity Escalation: ํน์ ์์ค์ lock์ด ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ, ๋ ๋์ Granularity S ๋๋ X lock์ผ๋ก ์ ํ
Insert/Delete Operations
- ์ง๊ธ๊น์ง read ๋ฐ write ์ฐ์ฐ์ ๊ตญํํ์ฌ ๋ ผ์
- ์ผ๋ถ transaction์ ์๋ก์ด ๋ฐ์ดํฐ ์์ดํ ์ ์์ฑ (Insert)ํ๊ฑฐ๋ ๊ธฐ์กด ๋ฐ์ดํฐ ์์ดํ ์ ์ ๊ฑฐ (Delete)
- Insert/Delete ์ฐ์ฐ์ ๋ํ locking ๊ท์น
- Read/write ์ถฉ๋๊ณผ delete๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด ์์ดํ ์ด Delete๋๊ธฐ ์ ์ X-lock์ ํ๋ํด์ผ ํจ.
- Transaction์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ก์ด tuple์ ์ฝ์ ํ ๋, ํด๋น Tuple์ ๋ํ X-lock์ด ์๋์ผ๋ก ๋ถ์ฌ โ Tuple์ ์ฝ์ ํ๋ transaction์ด commit๋ ๋๊น์ง ์ฝ์ ๋ Tuple์ ๋ค๋ฅธ transaction์ด ์ ๊ทผํ ์ ์์.
Timestamp-Based Protocols
- ๊ฐ transaction ๋ ์์คํ ์ ์ง์ ํ ๋ timestamp ๊ฐ ๋ถ์ฌ๋จ.
- ๊ฐ transaction์ ๊ณ ์ ํ timestamp๋ฅผ ๊ฐ์ง.
- Newer transaction์ Earlier transaction๋ณด๋ค timestamp๊ฐ ์๊ฒฉํ๊ฒ ํผ.
- Timestamp๋ ์์คํ ํด๋ญ ๋๋ ๋ ผ๋ฆฌ์ counter์ผ ์ ์์.
- Timestamp-based Protocols์ transaction์ timestamp๊ฐ serializability order๋ฅผ ๊ฒฐ์ ํ๋๋ก ๋์ ์คํ์ ๊ด๋ฆฌ
- ์ด๋ฉด, ์์คํ ์ ์์ฑ๋ ์ค์ผ์ค์ด ๊ฐ ๋ณด๋ค ๋จผ์ ๋ํ๋๋ ์ง๋ ฌ ์ค์ผ์ค๊ณผ ๋๋ฑํ๋๋ก ๋ณด์ฅํด์ผ ํจ.
- ๊ตฌํ์ ์ํด ๊ฐ ๋ฐ์ดํฐ ์์ดํ
Q์ ๋ ๊ฐ์ timestamp๋ฅผ ์ฐ๊ฒฐ
- : ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์คํํ transaction ์ค ๊ฐ์ฅ ํฐ Timestamp
- : ๋ฅผ ์ฑ๊ณต์ ์ผ๋ก ์คํํ transaction ์ค ๊ฐ์ฅ ํฐ Timestamp
- ์ด๋ฌํ Timestamp๋ ์๋ก์ด ๋๋ Instruction์ด ์คํ๋ ๋๋ง๋ค ์ ๋ฐ์ดํธ๋จ.
- Timestamp๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ๋ช ๊ฐ์ง ๋์์ ์ธ protocol ์กด์ฌ
Timestamp-Ordering Protocol
- Timestamp-Ordering (TSO) Protocol
- Read ๋ฐ write ์ฐ์ฐ์ ๊ท์น์ ๋ถ๊ณผํ์ฌ ๋ค์์ ๋ณด์ฅ
- ๋ชจ๋ conflicting ์ฐ์ฐ์ Timestamp order๋ก ์คํ
- out of order ์ฐ์ฐ์ transaction rollback ๋ฐ ์๋ก์ด TS๋ก ์ฌ์์์ ์ ๋ฐ
- Transaction ๊ฐ ๋ฅผ ๋ฐํํ๋ค๊ณ ๊ฐ์
- ์ด๋ฉด, ๋ ๋์ค transaction์ ์ํด ์ด๋ฏธ overwrite๋ ์ ๊ฐ์ ์ฝ์ผ๋ ค๊ณ ํจ.
- ๋ฐ๋ผ์ read ์ฐ์ฐ์ ๊ฑฐ๋ถ๋๊ณ ๋ rollback๋จ.
- ์ด๋ฉด, read ์ฐ์ฐ์ ์คํ๋๊ณ ๋ ๋ก ์ค์ ๋จ.
- ์ด๋ฉด, ๋ ๋์ค transaction์ ์ํด ์ด๋ฏธ overwrite๋ ์ ๊ฐ์ ์ฝ์ผ๋ ค๊ณ ํจ.
- Transaction ๊ฐ ๋ฅผ ๋ฐํํ๋ค๊ณ ๊ฐ์
- ์ด๋ฉด, ๊ฐ ์์ฑํ๋ ์ ๊ฐ์ด ์ด์ ์ ๋์ค transaction์ ์ํด ํ์ํ์ (์ฆ, ๊ทธ ๊ฐ์ ๊ฒฐ์ฝ ์์ฑ๋์ง ์์ ๊ฒ์)
- ๋ฐ๋ผ์ write ์ฐ์ฐ์ ๊ฑฐ๋ถ๋๊ณ ๋ rollback๋จ.
- ์ด๋ฉด, ๋ ์ obsolete value๋ฅผ writeํ๋ ค๊ณ ํจ.
- ๋ฐ๋ผ์ ์ด write ์ฐ์ฐ์ ๊ฑฐ๋ถ๋๊ณ ๋ rollback๋จ.
- ๊ทธ๋ ์ง ์์ผ๋ฉด, write ์ฐ์ฐ์ ์คํ๋๊ณ ๋ ๋ก ์ค์ ๋จ.
- ์ด๋ฉด, ๊ฐ ์์ฑํ๋ ์ ๊ฐ์ด ์ด์ ์ ๋์ค transaction์ ์ํด ํ์ํ์ (์ฆ, ๊ทธ ๊ฐ์ ๊ฒฐ์ฝ ์์ฑ๋์ง ์์ ๊ฒ์)
Example of Schedule under TSO
- ์ด ์ค์ผ์ค์ด TSO ํ์์ ์ ํจํ๊ฐ?
- ์ด๊ธฐ ๊ฐ์
- ์ด๊ณ ์ด๋ผ๊ณ ๊ฐ์
- ์ด๊ธฐ ๊ฐ์
- ์ด ์ค์ผ์ค์ TSO ํ์์ ์ ํจํจ.
- ์ด๊ธฐ์ ์ธ ์ด ์ค์ผ์ค์?
| Time | () | () |
|---|---|---|
- ์ ๋ ๋ฒ์งธ ์๋์์ ์ด๋ฏ๋ก, write ์ฐ์ฐ์ ๊ฑฐ๋ถ๋๊ณ ์ rollback๋จ.
Thomasโ Write Rule
- Timestamp-Ordering Protocol์ ์์ ๋ ๋ฒ์ ์ผ๋ก, obsolete write ์ฐ์ฐ์ ํน์ ์ํฉ์์ ๋ฌด์๋ ์ ์์.
- ๊ฐ ๋ฐ์ดํฐ ์์ดํ
Q๋ฅผ writeํ๋ ค๊ณ ํ ๋, (๊ท์น์ ์์ ์ค์)
- ์ด๋ฉด, write ์ฐ์ฐ์ ๊ฑฐ๋ถ๋๊ณ ๋ rollback๋จ.
- ์ด๋ฉด, ๋ ์ obsolete value๋ฅผ writeํ๋ ค๊ณ ํจ.
- ๋ฅผ rollbackํ๋ ๋์ , ์ด write ์ฐ์ฐ์ ๊ทธ๋ฅ ๋ฌด์๋ ์ ์์.
- ๊ทธ๋ ์ง ์์ผ๋ฉด, write ์ฐ์ฐ์ ์คํ๋๊ณ ๋ ๋ก ์ค์ ๋จ.
- ์ด Protocol์ ์ฒซ ๋ฒ์งธ์ ์ธ ๋ฒ์งธ ๊ท์น์ Timestamp-Ordering Protocol๊ณผ ๋์ผ
- Thomasโ write rule์ correctness
- ๊ฐ ์ฒซ ๋ฒ์งธ ๊ท์น์ ํต๊ณผ. ๋ฐ๋ผ์
- ์ด๋ฉด,
- ์ด๋ Q๋ฅผ writeํ transaction์ด Q๋ฅผ ์ฝ์ ์ ์ด ์์์ ์๋ฏธ (Blind write)
- Blind write๋ ์์ดํ ์ ์ด์ ๊ฐ์ ์์กดํ์ง ์์ โ ์ด์ write๋ ์์ ํ๊ฒ ๋ฌด์๋ ์ ์์.
- Thomasโ write rule์ ๋ ํฐ ์ ์ฌ์ ๋์์ฑ์ ํ์ฉ
- Conflict-Serializableํ์ง ์์ ์ผ๋ถ View-Serializable ์ค์ผ์ค์ ํ์ฉ
Validation-based Protocols (Optimistic Concurrency Control)
- Concurrency-Control Scheme
- Code ์คํ overhead๋ฅผ ๋ถ๊ณผ
- Transaction ์คํ์ ์ง์ฐ์ํฌ ์ ์์.
- ๋๋ค์ transaction์ด read-only์ด๊ณ transaction ๊ฐ์ ์ถฉ๋ ๋น์จ์ด ๋ฎ์ ๊ฒฝ์ฐ
- Concurrency-Control ์์ด ์คํ๋๋๋ผ๋ ๋ง์ transaction์ด ์์คํ ์ ์ผ๊ด๋ ์ํ๋ก ๋จ๊ธธ ๊ฒ
- โ ๋ ์ ์ overhead๋ฅผ ๋ถ๊ณผํ๋ ๋์์ ์ธ Concurrency-Control Scheme์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์.
- Idea: Concurrency control ์์ด (๋ก์ปฌ ๋ณ์์์) ์คํํ ๋ค์, serializability ์๋ฐ์ ์ผ์ผํค์ง ์์ผ๋ฉด DB์ write (์ ํจ์ฑ ๊ฒ์ฌ ํ
์คํธ๋ฅผ ํตํด)
- Write๋ transaction ์ข ๋ฃ ์์ ์ผ๋ก ์ฐ๊ธฐ
- Transaction์ด read/writeํ ๋ฐ์ดํฐ ์์ดํ ์ ์ถ์
- Commit ์์ ์ ์ ํจ์ฑ ๊ฒ์ฌ๋ฅผ ์ํํ์ฌ Serialization order๋ฅผ ๋ฒ์ด๋ read/write๋ฅผ ๊ฐ์ง
- Transaction์ด ์ ํจ์ฑ ๊ฒ์ฌ ๋์ ๋ชจ๋ ๊ฒ์ด ์ ๋ ๊ฒ์ด๋ผ๋ ํฌ๋ง์ผ๋ก ์์ ํ ์คํ๋๋ฏ๋ก **Optimistic Concurrency Control (OCC)**์ด๋ผ๊ณ ๋ ํจ.
- Transaction ์ ์คํ์ ์ธ ๋จ๊ณ๋ก ์ํ
- Read and Execution Phase: ์คํ. ๋ฐ์ดํฐ ์์ดํ ์ (์์) ๋ก์ปฌ ๋ณ์์ ์ฝ๊ณ ์ ์ฅ. ์ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ฐ์ดํธ ์์ด ๋ก์ปฌ ๋ณ์์ write
- Validation Phase: ๋ ์ง๋ ฌ์ฑ์ ์๋ฐํ์ง ์๊ณ ๋ก์ปฌ ๋ณ์๋ฅผ writeํ ์ ์๋์ง ๊ฒฐ์ ํ๊ธฐ ์ํ Validation test(์ ํจ์ฑ ๊ฒ์ฆ)๋ฅผ ์ํ. transaction์ด validation test์ ์คํจํ๋ฉด Abort๋จ (Rollback ํ์ ์์).
- Write Phase: ๊ฐ validate๋๋ฉด ์ ๋ฐ์ดํธ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉ๋จ (Read-only transaction์ ์ด ๋จ๊ณ๋ฅผ ์๋ต)
- ๋์์ ์คํ๋๋ transaction์ ์ธ ๋จ๊ณ๋ interleave๋ ์ ์์.
- ํ์ง๋ง ๊ฐ transaction์ ๋ฐ๋์ ๊ทธ ์์๋๋ก ์ธ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํจ.
- ๋จ์ํ๋ฅผ ์ํด validation ๋ฐ write ๋จ๊ณ๋ ์์์ ์ด๊ณ ์ง๋ ฌ์ ์ผ๋ก ํจ๊ป ๋ฐ์ํ๋ค๊ณ ๊ฐ์
- ์ฆ, ํ ๋ฒ์ ํ๋์ transaction๋ง validation/write๋ฅผ ์คํ
- ๊ฐ transaction ๋ 3๊ฐ์ timestamp๋ฅผ ๊ฐ์ง.
- : ๊ฐ ์คํ์ ์์ํ ์๊ฐ
- : ๊ฐ validation ๋จ๊ณ์ ์ง์ ํ ์๊ฐ
- : ๊ฐ write ๋จ๊ณ๋ฅผ ์๋ฃํ ์๊ฐ
- ๋ฅผ ์ฌ์ฉํ์ฌ TSO์ ์ํด serializability order๋ฅผ ๊ฒฐ์
- ์ฆ,
- ์ด๋ฉด, ์์ฑ๋ ๋ชจ๋ ์ค์ผ์ค์ ๊ฐ ๋ณด๋ค ๋จผ์ ๋ํ๋๋ ์ง๋ ฌ ์ค์ผ์ค๊ณผ ๋๋ฑํด์ผ ํจ.
- Validation test๋ ์ timestamp์ read/write Set์ ์ฌ์ฉํ์ฌ serializability order๊ฐ validation time์ ์ํด ๊ฒฐ์ ๋๋๋ก ๋ณด์ฅ
- Read Set of : ๊ฐ readํ ๋ฐ์ดํฐ ์์ดํ ์ ์งํฉ
- Write Set of : ๊ฐ writeํ ๋ฐ์ดํฐ ์์ดํ ์ ์งํฉ
- Validation-based protocol์ ์ถฉ๋ ํ๋ฅ ์ด ๋ฎ์ ๊ฒฝ์ฐ locking/TSO๋ณด๋ค ๋ ๋์ ๋์์ฑ์ ์ ๊ณตํ๋ ๊ฒ์ผ๋ก ๋ฐํ์ง.
Validation Test
- Transaction ์ ๋ํ validation test๋ ์ธ ๋ชจ๋ ์ ๋ํด ๋ค์ ์กฐ๊ฑด ์ค ํ๋๊ฐ holdํด์ผ ํจ์ ์๊ตฌ
- ๊ฐ ๊ฐ ์์ํ๊ธฐ ์ ์ ์คํ์ ์๋ฃํ์ผ๋ฏ๋ก, serializability order๋ ์ค์ ๋ก ์ ์ง๋จ.
- Write Set of read Set of , AND ๊ฐ ๊ฐ validation ๋จ๊ณ๋ฅผ ์์ํ๊ธฐ ์ ์ write ๋จ๊ณ๋ฅผ ์๋ฃ
- ์ ์กฐ๊ฑด ์ค ํ๋๊ฐ holdํ๋ฉด validation์ ์ฑ๊ณตํ๊ณ ๋ write ๋จ๊ณ๋ก ์งํํ ์ ์์. ๊ทธ๋ ์ง ์์ผ๋ฉด validation์ ์คํจํ๊ณ ๋ abort๋จ.
- Justification
- ์ฒซ ๋ฒ์งธ ์กฐ๊ฑด: Transaction์ ์คํ์ด concurrentํ์ง ์์ ๋ ์ ์ฉ
- Serializability order๋ ์์ฐ์ค๋ฝ๊ฒ ์ ์ง๋จ.
- ๋ ๋ฒ์งธ ์กฐ๊ฑด: ์คํ์ด concurrentํ์ง๋ง, ๋ ๊ฐ writeํ ์ด๋ค ์์ดํ
๋ readํ์ง ์์๊ณ , ๋ ์ read์ ์ํฅ์ ๋ฏธ์น ์ ์์.
- ๋ ์ ์ํ write๊ฐ ์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ write๋์ง ์์๊ธฐ ๋๋ฌธ์ ๊ฐ ์ ์ํ ์ด๋ค write๋ ๋ณด์ง ์์์์ ๋ณด์ฅ
- ์ฒซ ๋ฒ์งธ ์กฐ๊ฑด: Transaction์ ์คํ์ด concurrentํ์ง ์์ ๋ ์ ์ฉ
Schedule Produced by Validation
- Validation์ ์ฌ์ฉํ์ฌ ์์ฑ๋ ์ค์ผ์ค์ ์
Read set of
Write set of
Read set of
Write set of
- ์ ์ค์ผ์ค์ ์ง๋ ฌ ์ค์ผ์ค (Validation timestamp order)๊ณผ ๋๋ฑ


