Transaction์ ํน์ฑ
ํธ๋์ญ์
์ DBMS์์ ๋ฐ์ดํฐ๋ฅผ ์กฐ์ํ๋ ์ต์ํ์ ์์
(unit of work)
ํธ๋์ญ์
์ ์๋์ 4๊ฐ์ง ํน์ฑ์ธ ACID๋ฅผ ๋ณด์ฅํด์ผ ํ๋ค.
- ์์์ฑ(Atomicity)
- ์ผ๊ด์ฑ(Consistency)
- ๊ฒฉ๋ฆฌ์ฑ(Isolation)
- ์ง์์ฑ(Durability)
Transaction Isolation Level
๊ทธ๋ฐ๋ฐ ACID๋ฅผ ์๊ฒฉํ๊ฒ ์งํค๋ค ๋ณด๋ฉด ๋์์ฑ(Concurrency)๊ฐ ๋งค์ฐ ๋จ์ด์ง๋ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ๋ค.
๊ทธ๋์ DB ์์ง์ ACID๋ฅผ ํฌ์ํด์ ๋์์ฑ์ ์ป์ ์๋ ๋ฐฉ๋ฒ์ ์ ๊ณตํ๋๋ฐ ๊ทธ๊ฒ์ด ๋ฐ๋ก ํธ๋์ญ์
๊ฒฉ๋ฆฌ ๋ ๋ฒจ์ด๋ค.
๊ฒฉ๋ฆฌ์ฑ์ ๋ ์งํค๋ level์ ์ฌ์ฉํ ์๋ก ๋ฌธ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ ์ปค์ง์ง๋ง ๋์์ ๋ ๋์ ๋์์ฑ์ ์ป์ ์ ์๋ค.
์ผ๊ด์ฑ(Consistency)์ ๋์์ฑ(Concurrency)
ACID ์ค ์ผ๊ด์ฑ์ด ์์ ํ ๋ณด์ฅ๋ ๊ฒฝ์ฐ, ์ฌ๋ฌ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ๋ฐ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํน์ฑ์ ๋์์ฑ์ด ์ ํด(์๋ต์ ์ง์ฐ์ด ๋ฐ์)๋ ์ ์๋ค.
- ์ผ๊ด์ฑ๊ณผ ๋์์ฑ -> ํธ๋ ์ด๋ ์คํ ๊ด๊ณ
- ์ผ๊ด์ฑ๊ณผ ๋์์ฑ์ ๊ท ํ์ ์ค์ ํ๋ ๊ฒ์ด ์ค์ํ๋ค.
- ๋์์ฑ ์ ์ด = ๋์์ ์คํ๋๋ ํธ๋์ญ์
์ ์๋ฅผ ์ต๋ํํ๋ฉด์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๋ ๊ฒ
- ๋๊ด์ ๋์์ฑ ์ ์ด
๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋์์ ์์ ํ์ง ์์ ๊ฒ์ผ๋ก ๊ฐ์ ํ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์์ ์ ๋ฝ์ ๊ฑธ์ง ์์ง๋ง ์์ ํ๋ ์์ ์์ ๊ธฐ์กด์ ์ฝ์ด์จ ๋ฐ์ดํฐ๊ฐ ๋ค๋ฅธ ์ฌ์ฉ์์ ์ํด ๋ณ๊ฒฝ๋์๋์ง ์ฌ๊ฒ์ฌ๊ฐ ํ์ํ๋ค. - ๋น๊ด์ ๋์์ฑ ์ ์ด
๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋์์ ์์ ํ ๊ฒ์ผ๋ก ๊ฐ์ ํ๋ค. ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ์์ ์์ ๋ฝ์ ๊ฑธ๊ณ ์กฐํ, ๊ฐฑ์ ์๋ฃ ์๊น์ง ๋ฝ์ ์ ์งํ๋ค.
- ๋๊ด์ ๋์์ฑ ์ ์ด
๋ฝ(Lock)
ํธ๋์ญ์ ์ฒ๋ฆฌ์ ์์ฐจ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํ ๋ฐฉ๋ฒ
ํธ๋์ญ์ ์ ๊ฑธ๋ฆฐ Lock์ ํธ๋์ญ์ ์ด commit ๋๊ฑฐ๋ rollback ๋ ๋ ํจ๊ป unlock ๋๋ค.
- Shared Lock (Read Lock), ๊ณต์ ๋ฝ
๋ฐ์ดํฐ๋ฅผ ์ฝ์ ๋ ์ฌ์ฉ๋๋ Lock์ผ๋ก ๊ณต์ ๋ฝ์ ๊ณต์ ๋ฝ๋ผ๋ฆฌ ๋์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค. Write๋ ๋ถํํ๊ณ , Read๋ ํด๋น Critical Section์ ์ ๊ทผ์ด ํ์ฉ๋๋ค๋ ๊ฒ
(Read Lock์ Read์๋ง ์ด๋ ค์๋ ๊ฒ) - Exclusive Lock (Write Lock), ๋ฐฐํ๋ฝ
๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ๋ ์ฌ์ฉ๋๋ Lock์ผ๋ก ํธ๋์ญ์ ์ด ์๋ฃ๋ ๋๊น์ง ์ ์ง๋๋ค. Lock์ด ํด์ ๋ ๋๊น์ง ์กฐํ๋ฅผ ํฌํจํ ๋ค๋ฅธ ํธ๋์ญ์ ์ ํด๋น ๋ฆฌ์์ค์ ์ ๊ทผํ ์ ์๋ค.
๊ฒฉ๋ฆฌ ๋ ๋ฒจ๊ณผ ๋ฐ์ํ ์ ์๋ ๋ฌธ์
- Read Uncommitted
๊ฐ์ฅ ๋ฎ์ ๊ฒฉ๋ฆฌ ์์ค์ผ๋ก ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ค.
- Read Committed
์ปค๋ฐ๋ ๋ฐ์ดํฐ๋ง ์ฝ์ ์ ์์ผ๋ฉฐ, Dirty Read๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
- Repetable Read
ํ ๋ฒ ์กฐํํ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณตํด์ ์กฐํํด๋ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ์กฐํ๋๋ค. Dirty Read, Non Repeatable Read๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
- Serializable
๊ฐ์ฅ ์๊ฒฉํ ๊ฒฉ๋ฆฌ ์์ค์ผ๋ก Dirty Read, Non Repeatable Read, Phantom Read ๋ชจ๋ ๋ฐ์ํ์ง ์๋๋ค.