Transaction Concepts
Concurrent Executions
Transaction Schedule
Serializability
Recoverability
Single-User vs Multiuser Systems
๊ต๋ ์ํ : interleaved concurrency
Transaction : an executing program that forms a logical unit of db processing
Begin transaction - end transaction;
includes DB access operations
read-only / read-write transaction
read-item(X) : ๋์คํฌ๋ธ๋ก ์ฃผ์์ฐพ๊ธฐ-๋ฒํผ์ ๋ณต์ฌ-ํ๋ก๊ทธ๋จ ๋ณ์๋ก ๋ณต์ฌ
write-item(X) : ๋์คํฌ ์ฃผ์์ฐพ๊ธฐ-๋ฒํผ์ ๋ณต์ฌ-์์ ํ ํ๋ก๊ทธ๋จ ๋ณ์๋ฅผ ๋ค์ ๋ฒํผ์ ๋ณต์ฌ-๋์คํฌ์ ์ ์ฅ
read-set : ์ฝ์๊ฑฐ ์งํฉ {X, Y, …}
write-set : ์ด๊ฑฐ ์งํฉ
๐ก Why concurrency control is needed (๋ฌธ์ ๋ค)
- Lost update : ๊ฐ์ ๋ณ์์ ๋ํด ์ฌ๋ฌ๋ฒ writeํด์ ๋ฎ์ด์ฐ๊ธฐ๋จ
- Dirty Read(Temporary update) : cascading rollback : ์ปค๋ฐํ์ง์์ ์์ ์ฌํญ์ ์ฝ์
- Incorrect summary(Inconsistency) : ํฉ๊ณ๋ฅผ ๊ตฌํ๋ ๋์ค์ ๋ด๋ถ๊ฐ์ด ๋ณ๊ฒฝ๋จ
- Unrepeatable read : ๋๊ฐ์ read ์ฌ์ด์ ๋ค๋ฅธ T’๊ฐ ๊ฐ์ ๋ณ๊ฒฝ์์ผ์ ๋๋ฒ์ read ๊ฐ์ด ๋ค๋ฆ
๐ก Why Recovery is needed
- committed : DB์ ์๊ตฌ๊ธฐ๋ก์ํด
- aborted : ํด๋น ํธ๋์ ์ ์ด ๋ค๋ฅธ T๋ DB์ ์ํฅ์ ๋ผ์น์ง ์๊ฒ ํจ
if) ํธ๋์ ์ ์คํจ ์ ๋ชจ๋ ์คํ์ทจ์ → all or nothing
Transaction states and additional operations
The system log
log(DBMS journal) : ๋ชจ๋ ํธ๋์ ์ ์ฐ์ฐ์ ์ถ์ ํ๊ธฐ ์ํด
log records
- [start_transaction, T]
- [write_item, T, X, old_value, new_value]
- [read_item, T, X]
- [commit, T]
- [abort, T]
< Desirable Properties of Transactions : ํธ๋์ ์ ์ด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ๊ฐ์ ธ์ผํ ํน์ง >
ACID : ์์์ฑ, ์ผ๊ด์ฑ, ๊ณ ๋ฆฝ์ฑ, ์ง์์ฑ
- Atomicity : all or nothing
- Consistency preservation : transformations preserve DB consistency
- Isolation : ๋ค๋ฅธ๊ฑฐ์ ์ํฅ์ ๋ฐ์ผ๋ฉด ์๋จ, ๋์์ฑ ์ ์ด
- Durability / permanency : ํ๋ฒ ์ปค๋ฐ๋๋ฉด ์๊ตฌ์ ์ฅ
Schedules (Histories) of Transactions
- ์ค์ผ์ค S๋ ํธ๋์ ์ ์ ์์์ด๋ค
Conflicting Operations in Schedule : ์ถฉ๋
- belong to different transactions
- access the same DB item
- one of the 2 operations is a write operation : ์ฐ๊ธฐ ์ฐ์ฐ์ด ์์๋๋ง ์ถฉ๋ ๋ฐ์
Characterizing schedules based on recoverability : ๋ณต๊ตฌ๊ฐ๋ฅ์ฑ ๊ธฐ๋ฐ ์ค์ผ์ค ํน์ฑํ
- Recoverable : durability (๋ด๊ตฌ์ฑ)
- Nonrecoverable : commt๋ ํธ๋์ ์ ์ด ๋ณต๊ตฌ ์ ์ทจ์๋์ด์ผํ ๋
(T’๊ฐ ์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ T๊ฐ ๋จผ์ ์ปค๋ฐ๋๋ฉด ์๋จ!)
Characterizing schedules based on Serializability : ์ง๋ ฌํ๊ฐ๋ฅ์ฑ
- ์ง๋ ฌํ๊ฐ๋ฅํ ์ค์ผ์ค : ๋์ ์คํ์ ํญ์ ์ฌ๋ฐ๋ฅธ ๊ฒ์ผ๋ก ๊ฐ์ฃผ๋จ
- Serial schedules : if no interleaving is permitted → correct
- Nonserial : if interleavign is allowed → correct or wrong
์ธํฐ๋ฆฌ๋น ์์๋ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ ๋
(๋ณ๋ ฌ์ํ ๊ฒฐ๊ณผ๊ฐ ๋ฐ๋ก T1→T2 ํน์ T2→T1 ์ง๋ ฌ์ํํ์๋์ ๊ฒฐ๊ณผ์ ๊ฐ์๋)
์ด ์ค์ผ์ค์ด ์ง๋ ฌํ๊ฐ๋ฅํ๋ค = ์ด ์ค์ผ์ค์ด correct ํ๋ค
Equivalence of schedules
result equivalence : ์ด๋ค ๊ฐ์ด ๋ค์ด์๋ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์๋ ๋ ์ค์ผ์ค์ ๊ฒฐ๊ณผ ๋๋ฑ
๋๋ฑ์ฑ : ํธ๋์ ์ ์์ ์ ํ์ ๋ฐ๋ฅธ ๊ฐ์ ์์. ๊ฐ์ ์์๋ก ์ ์ฉ๋์ด์ผํจ
- Conflict Equivalence : ์ถฉ๋ ๋๋ฑ์ฑ
- View Equivalence : ๋ทฐ ๋๋ฑ์ฑ
Conflict Equivalence : ์ถฉ๋ ๋๋ฑ์ฑ
์ถฉ๋ํ๋ ๋ ์์ ์ ์์๊ฐ ๋ ์ค์ผ์ค์์ ๋์ผํจ
Conflict Serializability : ์ถฉ๋ ์ง๋ ฌํ๊ฐ๋ฅ์ฑ
: ์ด๋ค ์ค์ผ์ค S๊ฐ serial ์ค์ผ์ค S’์ conflict equivalentํ๋ฉด S๋ conflict serializableํ๋ค
Testing for conflict serializability : Precedence graph (์ฐ์ ์์ ๊ทธ๋ํ)
Testing for Conflict Serializability
- no cycles
- finding a cycle from a graph is harder : ์ฌ์ดํด ์ฐพ๊ธฐ ์ด๋ ค์
- many possible linear orders : ์ ํ์์๊ฐ ๋๋ฌด ๋ง์
- ๊ทธ๋์ ๋๋ถ๋ถ์ ์์ฉ DBMS๋ ๋ชจ๋ ์ผ์ ์ ์ง๋ ฌํ๋ฅผ ๋ณด์ฅํ๋ ํ๋กํ ์ฝ์ ์งํค๋๋ก ์ค๊ณ
→ Concurrency Control protocol
- Locking
- TimeStamps
- Multiversion CC protocols
- Optimistic protocols
View Equivalence : ๋ทฐ ๋๋ฑ์ฑ → ์ถฉ๋ ๋๋ฑ์ฑ๋ณด๋ค ๋ general
- read ์ฐ์ฐ๋ง ๊ณ ๋ คํจ
- ๊ฐ์ ๊ฐ์ readํ๋ฉด ๋๋ฑํ๋ค๊ณ ํ๋ค
- S์ S’์ ๋์ผํ ๊ฑฐ๋์งํฉ์ด ์ฐธ์ฌ
- ์ด๋ค ์ฝ๊ธฐ์ฐ์ฐ๋ ์๋ก ๋์ผํ ๊ฐ์ ์ฝ์
- ํ ๊ฐ์ ๋ํ ๋ง์ง๋ง ์ฐ๊ธฐ์ฐ์ฐ์ด ๋์ผํด์ผํจ
View Equivalance and View Serializability
the read operations can see the same ciew in both schedules
DB state should be the same at the end of both schedules
๋ทฐ ๋๋ฑ์ฑ์ด ์ถฉ๋ ๋๋ฑ์ฑ๋ณด๋ค ๋ ์ ํ์ ์.
→ ํ ์ค์ผ์ค S๊ฐ ์๋ฆฌ์ผ ์ค์ผ์ค S’์ ๋ทฐ ๋๋ฑํ๋ค๋ฉด View serializable ์ค์ผ์ค์ด๋ค.
์ถฉ๋์๋ ์์ ์ ์ฌ์ ๋ ฌ ๊ฐ๋ฅ
Constrained Write Assumption : ์ ํ๋ ์ฐ๊ธฐ
View ์ง๋ ฌ๊ฐ๋ฅ์ฑ vs ์ถฉ๋ ์ง๋ ฌ๊ฐ๋ฅ์ฑ
์ ํ๋ ์ฐ๊ธฐ → view = conflict
์ ํ๋์ง ์์ ์ฐ๊ธฐ(blind write ์กด์ฌ) → view ≥ conflict
Testing for View serializability → NP-complete problem
Transaction Support in sql
- a transaction begins implicitly : no Begin_Transaction statement (์๋ฌต์ ์คํ)
- ends by Commit / Rollback
- ๋ชจ๋ ํธ๋์ ์
์
- SET TRANSACTION
- access mode, diagnostic area size, the isolation level
SET TRRANSACTION statemetn in sql
- access mode : READ ONLY or READ WRITE
- diagnostic area size : diagnostic size n
- Isolation level
level of consistency
- Read uncommitted
- Read committed
- Repeatable read
- Serializable
'๐ ์ ๊ณต ๊ณต๋ถ > DB๊ธฐ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต๊ตฌ (0) | 2022.12.30 |
---|---|
[DB] ๋์์ฑ ์ ์ด (0) | 2022.12.30 |
[DB] Indexing structures for files / ๋ฌผ๋ฆฌ์ DB์ค๊ณ (0) | 2022.12.30 |
[DB] Disk, ํ์ผ๊ตฌ์กฐ, Hashing, ์ ์ฅ์ ์ค๊ณ (1) | 2022.12.30 |
[DB] SQL programmingโจ๏ธ (2) (0) | 2022.12.30 |