Concurrency Control Techniques
Concurrency Control Protocols : guarantee serializability (์ง๋ ฌํ ๋ณด์ฅ)
- Locking
- Timestamps
- multiversion CC protocols
- Optimistic protocols
- Multiple granularity concurrency control protocol
Two-phase Locking Techniques : ์ด์ค ๋ผํน
lock ์ํ 1, unlock ์ํ๋ 0
Lock table : lock ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ์๋ธ์์คํ
- plus a queue for transactions that are waiting to access item
Shared/Exclusive (or Read/Write) Locks : ๊ณต์ (read lock), ๋ฐฐํ(write lock)
- Multiple-mode lock
Shared locking protocol
- ์ด๋ค ์์ดํ ์ ์ฝ๊ธฐ ์ ์ read lock ๋๋ write lock์ ํ๋ค
- ์ด๋ค ์์ดํ ์ ์ฐ๊ธฐ์ ์๋ Write lock ํ์
- ์ฝ๊ฑฐ๋ ์ด ์ดํ unlock
- ๋ค๋ฅธ ํธ๋์ ์ ์ ์ํด unlock๋ ์ ์์
Locking ๋ง์ผ๋ก๋ ์ง๋ ฌํ ๋ณด์ฅ์ด ๋ถ๊ฐ๋ฅ
Lock table
<์์ดํ ์ด๋ฆ, LOCK, no_of_reads, Locking_transaction>
LOCK(X) = write-locked : ๋ฐฐํ lock์ ์ ์งํ๋ ๋จ์ผ ํธ๋์ ์
LOCK(X) = read-locked : ๊ณต์ lock์ ์ ์งํ๋ ํ๋ ์ด์์ ํธ๋์ ์
2๋จ๊ณ ๋ผํน ํ๋กํ ์ฝ
two phase locking protocol (2PLP)
- growing phase : lock ๊ฑธ๊ธฐ ์์ํ๋ฉด ๊ณ์ ๊ฑธ์ด์ผํจ
- shrinking phase : unlock ์์ ํ lock ์์ฑ๋ถ๊ฐ
์ง๋ ฌ๊ฐ๋ฅํ ์ค์ผ์ค์ ์ถฉ๋ถ์กฐ๊ฑด์ด์ง๋ง ํ์์กฐ๊ฑด์ ์๋
< Basic 2PL >
- Conservative 2PL (= static 2PL) : ๋ณด์์ /์ ์ 2PL
- ๋ชจ๋ lock์ ์์๋ถ๋ถ์ ๋ฏธ๋ฆฌ ์ ์ธํ๊ธฐ
- deadlock-free!
- Strict 2PL : ์๊ฒฉํ 2PL
- ์ปค๋ฐ๋ ๋๊น์ง ์ฐ๊ธฐ์ฐ์ฐ unlock ๋ถ๊ฐ๋ฅ
- recoverablity → dirty read ์์
- not deadlock-free
- Rigorous 2PL : ์ฒ ์ ํ 2PL
- strict ์ค์ผ์ค ๋ณด์ฅ
- ์ปค๋ฐ๋ ๋๊น์ง ์ฐ๊ธฐ & ์ฝ๊ธฐ์ฐ์ฐ unlock ๋ถ๊ฐ๋ฅ
- ๊ตฌํ์ ๋ ์ฝ์ง๋ง ์ตํต์ฑ์ด ๋จ์ด์ง
Dealing with Deadlock and Starvation
- deadlock : ์ ๊ธด ํญ๋ชฉ์ ๋ฌดํ๋๊ธฐ์ค์ธ ์ํ
- starvation : abort, restart ๋ฐ๋ณตํ๋ ๊ธฐ์ ์ํ
Deadlock prevention protocols : ๋ฐ๋๋ฝ ์๋ฐฉ
- Conservative 2PL (๋ณด์์ 2pl, ๋ชจ๋ lock ๋ฏธ๋ฆฌ ์ ์ธ)
- Ordering all the items
- Transaction timestamp TS(T) : ์์ ์์์ ๋ฐ๋ผ ์ ๋ ฌ
- Deadlock preventoin schemes ⇒ wait-die / wound-wait
wait-die : ์์ดํ ๋บ์ผ๋ ค๋ ์ ๊ฐ older → ๊ธฐ๋ค๋ฆผ
- younger → abort
wound-wait : ์์ดํ ๊ฐ๊ณ ์๋ ์ ๊ฐ younger → ๊ธฐ๋ค๋ฆผ
- ์์ดํ ๊ฐ๊ณ ์๋ ์ ๊ฐ older → ๊ฐ๊ณ ์๋ ์ ๊ฐ abort (๋บ๊น)
Deadlock prevention protocol without timestamps
- no waiting algorithm
- if ํธ๋์ ์ ์ด lock์ ์ ๊ทผํ ์ ์์ผ๋ฉด ๋ฐ๋ก abort&restart
- no checking on deadlock
- ๊ทผ๋ฐ ๋ถํ์ํ abort๊ฐ ๋ง์์ ธ์ ๋นํจ์จ์
- Cautious waiting algorithm
- ๋ถํ์ํ abort๋ฅผ ๊ฐ์
- if ํธ๋์ ์
์ด lock์ ์ ๊ทผํ ๋, lockํ ํธ๋์ ์
์ด ๋ค๋ฅธ ์์ดํ
์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค๋ฉด (blocked ์ํ) : abort
- lockํ ๋์ด not blocked : wait
- deadlock-free
- ๋ ๋ค ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ, block ์๊ฐ์ผ๋ก ์ ๋ ฌ๋๋ฏ๋ก ์์ฐจ์คํ ๊ฐ๋ฅ
Deadlock Detection : ๋ฐ๋๋ฝ ํ์ง
- victim selection : abortํ ํฌ์์์ ๊ณ ๋ฅด๊ธฐ
- wait-for graph : if has cycle → deadlock
- Timeout
- ์ผ์ ์๊ฐ์ด ์ง๋๋ฉด abort&restart
- no deadlock check
- Recovery
- minimum cost๋ฅผ ํฌ์์์ผ๋ก.
- rollback : abort & restart. ๋ถ๋ถ ๋กค๋ฐฑ์ ๋ถ๊ฐ๋ฅ
- starvation (livelock)
- ๊ฐ์ ํฌ์์์ด ๊ณ์๋๋ค๋ฉด ๊ทธ๊ฒ never completes
- first come first served
Granularity of data items and multiple granularity locking : ์์ดํ ์ธ๋ถํ์ ๋ค์ค์ธ๋ถํ ๋ผํน
- locking ๋จ์๊ฐ ์์์๋ก ์ค๋ฒํค๋ ํ๋ฅ ์ด ๋๋ค.
- locking ๋จ์๊ฐ ํด์๋ก ๋์์ฑ ์์ค์ ๋ฎ๋ค.
Multiple Granularity level locking
์์ ๋ฐ์ดํฐ lock ์๋ ์, ๋ฐ์ดํฐ ์ ์ฒด๋ฅผ ๋ค์ ธ์ sub item ์ค์ lock์ด ์๋ค๋ฉด ํ์ฉ ๊ฐ๋ฅ.
Timestamp Mechanism : ํ์์คํฌํ ๋ฉ์ปค๋์ฆ
- deadlock-free
- cascading rollback
- cyclic restart (starvation)
Multiversion Scheme
- ์๋ณธ๊ณผ ์ฌ๋ฌ ๋ฒ์ ์ ๋ง๋ ๋ค.
- deadlock-free
- ๋์ ๋ฒ์ ๊ด๋ฆฌ๊ฐ ํ์ํจ
'๐ ์ ๊ณต ๊ณต๋ถ > DB๊ธฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณด์ (0) | 2022.12.30 |
---|---|
[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต๊ตฌ (0) | 2022.12.30 |
[DB] Transaction processing (0) | 2022.12.30 |
[DB] Indexing structures for files / ๋ฌผ๋ฆฌ์ DB์ค๊ณ (0) | 2022.12.30 |
[DB] Disk, ํ์ผ๊ตฌ์กฐ, Hashing, ์ ์ฅ์ ์ค๊ณ (1) | 2022.12.30 |