ACID
- ์์์ฑ(Atomic): ํธ๋์ญ์
์ ๊ตฌ์ฑํ๋ ๊ตฌ์ฑํ๋ ์ฐ์ฐ ์ ์ฒด๊ฐ ๋ชจ๋ ์ ์์ ์ผ๋ก ์คํ๋๊ฑฐ๋ ์ทจ์๋์ด์ผ ํ๋ ์ฑ์ง(ํธ๋์ญ์
์ฐ์ฐ ์ ์ฒด๊ฐ ์ฑ๊ณต ๋๋ ์คํจ(All or Nothing)๋์ด์ผ ํ๋ ์ฑ์ง)
- ์ผ๊ด์ฑ(Consistency): ์์คํ
์ด ๊ฐ์ง๊ณ ์๋ ๊ณ ์ ์์๋ ํธ๋์ญ์
์ํ ์ ๊ณผ ํธ๋์ญ์
์ํ ์๋ฃ ํ์ ์ํ๊ฐ ๊ฐ์์ผ ํ๋ ์ฑ์ง(๋๋ฉ์ธ์ ์ ํจ๋ฒ์, ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด ๋ฑ์ ์ ์ฝ์กฐ๊ฑด์ ์๋ฐฐํ์ง ์๋ ์ ์์ ์ธ ์ํ. e.g. ์์ก์ด 0๋ณด๋ค ์ปค์ผ ์ก๊ธ์ด ๊ฐ๋ฅํ๋ฐ, ์์ก์ด ์๋๋ฐ ์ก๊ธ์ด ๊ฐ๋ฅํ๋ฉด ์ ๋ผ~)
- ๊ฒฉ๋ฆฌ์ฑ(Isolation): ๋์์ ์คํ๋๋ ํธ๋์ญ์
๋ค์ด ์๋ก ์ํฅ์ ๋ฏธ์น์ง ์์์ผ ํ๋ค๋ ์ฑ์ง. ์๋ฅผ ๋ค์ด, ํธ๋์ญ์
1, 2, 3, 4๊ฐ ๊ฑฐ์ ๋์์ ์ํ๋๋๋ผ๋ 1 -> 2 -> 3 -> 4์ ๊ฐ์ด ์ํํ ๊ฒ์ฒ๋ผ ๋๊ฒ ํ๋ผ.
- ์์์ฑ(Durability): ์ฑ๊ณต์ด ์๋ฃ๋ ํธ๋์ญ์
์ ๊ฒฐ๊ณผ๋ ์์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ด์ผ ํจ. commit์ด ๋ ํธ๋์ญ์
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๊ตฌ์ ์ผ๋ก ๋ณด์กด๋์ด์ผ ํ๋ค. ์๋ฃ ํ์ ์ปดํจํฐ๊ฐ ๊บผ์ ธ๋ ๋ฐ์ดํฐ๋ ์ด๋ฏธ ์ ์ฅ๋์์ผ๋ฏ๋ก ๋ณด์กด๋๋ค.
Transaction Control Language
- Rollback: ์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋, ์ค๋ฅ ์ด์ ์ ํน์ ์์ (savepoint, checkpoint) ์ํ๋ก ๋๋๋ ค์ฃผ๋ ์ ์ด์ด
- Commit: ํธ๋์ญ์
๋ฉ๋ชจ๋ฆฌ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๋ ์ ์ด์ด
- Checkpoint: Rollback์ ์ํ ์์ ์ ์ง์ ํ๋ ์ ์ด์ด
๋ณํ ์ ์ด(Concurrency Control)
- ๋ณํ ์ ์ด๋ ๋ค์ค ํ๋ก๊ทธ๋จ ํ๊ฒฝ์์ ๋์์ ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์
์ ๋ณํ์ํํ ๋, ๋์์ ์คํ๋๋ ํธ๋์ญ์
๋ค์ด DB์ ์ผ๊ด์ฑ์
- ๋ณํ ์ ์ด์ ๋ชฉ์
- DB ๊ณต์ ๋ฅผ ์ต๋ํํ๋ค.
- ์์คํ
ํ์ฉ ์ต๋ํ.
- DB์ ์ผ๊ด์ฑ์ ์ ์ง
- ์ฌ์ฉ์์ ๋ํ ์๋ต์๊ฐ์ ์ต์ํ.
- ๋ณํ ์ํ ์ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์
- ๊ฐฑ์ ์์ค(Lost Update): ๋จผ์ ์คํ๋ ํธ๋์ญ์
์ ๊ฒฐ๊ณผ๋ฅผ ๋์ค์ ์ํ๋ ํธ๋์ญ์
์ด ๋ฎ์ด์ฐ๋ ๊ฒฝ์ฐ
- ํํฉ ํ์
์ค๋ฅ(Dirty Read): ํธ๋์ญ์
์ ์ค๊ฐ ์ํ ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฅธ ํธ๋์ญ์
์ด ์ฐธ์กฐํ์ฌ ๋ฐ์ํ๋ ์ค๋ฅ
- ๋ชจ์์ฑ(Inconsistency): ๋ ํธ๋์ญ์
์ด ๋์์ ์คํ๋์ด DB์ ์ผ๊ด์ฑ์ด ๊นจ์ง๋ ๊ฒฝ์ฐ
- ์ฐ์ ๋ณต๊ท(Cascading Rollback): ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์
์ด ๋ฐ์ดํฐ ๊ณต์ ์ ํน์ ํธ๋์ญ์
์ด ์ฒ๋ฆฌ๋ฅผ ์ทจ์ํ ๊ฒฝ์ฐ ํธ๋์ญ์
์ด ์ฒ๋ฆฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์ทจ์ํ์ง ๋ชปํ๋ ์ค๋ฅ
- ๋ณํ ์ ์ด ๊ธฐ๋ฒ
- ๋กํน(Locking): ๊ฐ์ ์์์ ์ก์ธ์คํ๋ ๋ค์ค ํธ๋์ญ์
ํ๊ฒฝ์์ DB์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํด ํธ๋์ญ์
์ ์์ฐจ์ ์งํ์ ๋ณด์ฅํ๋ ์ง๋ ฌํ ๊ธฐ๋ฒ.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค, ํ์ผ, ๋ ์ฝ๋ ๋ฑ์ด Locking ๋จ์๊ฐ ๋ ์ ์๋ค.
- Locking ๋จ์(ํ๊บผ๋ฒ์ Lockingํ ์ ์๋ ๊ฐ์ฒด์ ํฌ๊ธฐ)๊ฐ ์์์ง๋ฉด DB ๊ณต์ ๋๊ฐ ์ฆ๊ฐํ์ง๋ง ๊ทธ ๋งํผ Locking ์ค๋ฒํค๋ ์ฆ๊ฐ
- ๋๊ด์ ๊ฒ์ฆ(Optimistic Validation): ํธ๋์ญ์
์ด ์ด๋ ํ ๊ฒ์ฆ๋ ์ํํ์ง ์๊ณ ์ผ๋จ ํธ๋์ญ์
์ ์ํํ๊ณ ํธ๋์ญ์
์ข
๋ฃ ์, ๊ฒ์ฆ์ ์ํํ์ฌ DB์ ๋ฐ์. ๋ณํ์ํํ๊ณ ์ ํ๋ ๋๋ถ๋ถ์ ํธ๋์ญ์
์ด ํ๋
์ ์ฉ(Read Only) ํธ๋์ญ์
์ผ ๊ฒฝ์ฐ, ํธ๋์ญ์
๊ฐ์ ์ถฉ๋๋ฅ ์ด ๋งค์ฐ ๋ฎ์์ ๋ณํ์ ์ด ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ง ์๊ณ ์คํ๋์ด๋ ์ด ์ค์ ๋ง์ ํธ๋์ญ์
์ ์์คํ
์ ์ํ๋ฅผ ์ผ๊ด์ฑ ์๊ฒ ์ ์งํ๋ค๋ ์ ์ ์ด์ฉํ ๊ธฐ๋ฒ์ด๋ค.
- ํ์ ์คํฌํ ์์(Time Stamp Ordering): ํธ๋์ญ์
๊ณผ ํธ๋์ญ์
์ด ์ฝ๊ฑฐ๋ ๊ฐฑ์ ํ ๋ฐ์ดํฐ์ ๋ํด ํธ๋์ญ์
์ด ์คํ์ ํ๊ธฐ ์์ํ๊ธฐ ์ ์ ํ์ ์คํฌํ๋ฅผ ๋ถ์ฌํ์ฌ ๋ถ์ฌ๋ ์๊ฐ์ ๋ฐ๋ผ ํธ๋์ญ์
์์
์ ์ํํ๋ ๊ธฐ๋ฒ
- ๋ค์ค ๋ฒ์ ๊ธฐ๋ฒ(Multi Version Cocurrency Control): ํ์์คํฌํ๋ฅผ ์ด์ฉํด์ ๋ค์ค ํ์ ์คํฌํ ๊ธฐ๋ฒ์ด๋ผ๊ณ ๋ ํ๋ค. ํ์ ์คํฌํ ๊ธฐ๋ฒ์ ํธ๋์ญ์
๋ฐ ๋ฐ์ดํฐ๋ค์ด ์ด์ฉ๋ ๋์ ์๊ฐ์ ์๊ฐํ๋ก ๊ด๋ฆฌํ์ง๋ง, ๋ค์ค ๋ฒ์ ๊ธฐ๋ฒ์ ๊ฐฑ์ ๋ ๋๋ง๋ค ๋ฒ์ ์ ๋ถ์ฌํ์ฌ ๊ด๋ฆฌ.
๋๊ธ๋จ๊ธฐ๊ธฐ