์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- ๋ฐ์ดํฐ ์ ์ก
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- ์ค๋ฅ๊ฒ์ถ
- ํ๋ก์ด๋์์
- i-type
- ํ๋ ์ ๊ตฌ์กฐ
- ํญํด99
- ์ฝ๋ฉํ ์คํธ์ค๋น
- xv6
- 99ํด๋ฝ
- well known ํฌํธ
- git merge
- ์๋น์ค ํ๋ฆฌ๋ฏธํฐ๋ธ
- ์ค๋ธ์
- IEEE 802
- ์ค๋ฅ์ ์ด
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- leetcode
- tcp ํ๋กํ ์ฝ
- ํ ํฐ ๋ฒ์ค
- til
- tcp ์ธ๊ทธ๋จผํธ
- reducible
- ์์๋ฒํธ
- ๊ฐ๋ฐ์์ทจ์
- ๋น์ฃผ๊ธฐ์ ํธ
- ์ฃผ๊ธฐ์ ํธ
- ์ฐ๋ถํฌdb
- mariadb
- ์ค๋ ๋
- Today
- Total
Unfazedโ๏ธ๐ฏ
ํธ๋์ญ์ (ACID, commit/rollback, ์ํ, ์ ์ฅ์ฅ์น, ์ ์ฅ์ฐ์ฐ) ๋ณธ๋ฌธ
ํธ๋์ญ์ (ACID, commit/rollback, ์ํ, ์ ์ฅ์ฅ์น, ์ ์ฅ์ฐ์ฐ)
9taetae9 2024. 4. 21. 11:501) ํธ๋์ญ์
1-1) ํ๊บผ๋ฒ์ ๋ชจ๋ ์ํ๋์ด์ผ ํ ์ผ๋ จ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ์ฐ๋ค
- ์์ฉ ํ๋ก๊ทธ๋จ <- ํ๋ ์ด์์ ํธ๋์ญ์
- ํธ๋์ญ์ <- ํ๋ ์ด์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ์ฐ๋ค(SQL ๋ช ๋ น)
1-2) ๋ณํ ์ ์ด ๋ฐ ํ๋ณต ์์ ์ ๋ ผ๋ฆฌ์ ๋จ์(LUW : Logical Unit of Work)
2) ํธ๋์ญ์ ์ ACID ์ฑ์ง
2-1) ์์์ฑ (Atomicity)
- ํธ๋์ญ์ ๋ด์ ๋ชจ๋ ์ฐ์ฐ์ ๋ฐ๋์ ํ๊บผ๋ฒ์ ์๋ฃ๋์ด์ผ ํ๋ฉฐ, ๊ทธ๋ ์ง ๋ชปํ ๊ฒฝ์ฐ๋ ํ๊บผ๋ฒ์ ์ทจ์(all or nothing)
- ํธ๋์ญ์ ์ ์์์ฑ์ ์ํ ์ฐ์ฐ : Commit(์๋ฃ)์ Rollback(๋ณต๊ท)
- ์์์ฑ์ ํธ๋์ญ์ ๊ด๋ฆฌ ์ปดํฌ๋ํธ ์ฑ ์
2-2) ์ผ๊ด์ฑ (Consistency)
- ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃํ๋ฉด ์ผ๊ด์ฑ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๋ก ๋ณํ
- ํ๋ก๊ทธ๋จ ์คํ ์ค์ ์ผ๊ด์ฑ ์๋ฐ์ ๋ฌด์, ์คํ ์ค์๋ ๋ถ์ผ์น ์ํ ํ์ฉ
- ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ ์์ฉํ๋ก๊ทธ๋จ ์์ฑ์ ์ฑ ์
2-3) ๊ฒฉ๋ฆฌ์ฑ/๊ณ ๋ฆฝ์ฑ (Isolation)
- ํธ๋์ญ์ ์ด ์คํ ์ค์ ์๋ ์ฐ์ฐ์ ์ค๊ฐ ๊ฒฐ๊ณผ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ ๊ทผ ๋ถ๊ฐ
- ํธ๋์ญ์ ์ ๋ถ๋ถ์ ์ธ ์ํ๋ฅผ ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ ๊ณต ๋ถ๊ฐ
- cascading abort๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํจ
- ๊ฒฉ๋ฆฌ์ฑ์ ๋์์ฑ ์ ์ด ์ปดํฌ๋ํธ ์ฑ ์
2-4) ์์์ฑ (Durability)
- ํธ๋์ญ์ ์ด ๊ทธ ์คํ์ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃํ๋ฉด ์์คํ ์ ์๋ฃ๋ ๊ฒฐ๊ณผ์ ์์์ฑ์ ๋ณด์ฅ
- ์์์ฑ์ ํ๋ณต ๊ด๋ฆฌ ์ปดํฌ๋ํธ ์ฑ ์
Q) ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์ํ๋๋๋ผ๋ ๊ฐ๊ธฐ ๊ฐ๋ณ๋ก ์ํ๋๋ ๊ฒ๊ณผ ๋์ผํด์ผ ํ๋ค๋ ์ฑ์ง์ ( a ) ์ด๋ผ ํ๋ฉฐ, ํธ๋์ญ์ ๋ด์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ์ฐ๋ค์ด ์ํ ์๋ฃ๋๊ฑฐ๋, ์๋๋ฉด ์๋ฌด ์ฐ์ฐ๋ ์ํ๋์ง ์์์ ๋ณด์ฅํด์ผ ํ๋ ํน์ฑ์ ( b ) ์ด๋ผ ํ๋ค.
A) a : ๊ฒฉ๋ฆฌ์ฑ/๊ณ ๋ฆฝ์ฑ(isolation), b : ์์์ฑ(atomicity)
3) ํธ๋์ญ์ ์ ์์์ฑ์ ์ ๊ณตํ๊ธฐ ์ํ ์ฐ์ฐ(commit, rollback)
3-1) COMMIT : ํธ๋์ญ์ ์ ์ฑ๊ณต์ ์ธ ์ข ๋ฃ
- ํ ์์ ์ ๋ ผ๋ฆฌ์ ๋จ์๊ฐ ์ฑ๊ณต์ ์ธ ์ข ๋ฃ
- ์๋ก์ด ํธ๋์ญ์ ์ commit๋ฌธ ๋ค์์ ๋ฐ๋ก ์์ ๊ฐ๋ฅ
- ํธ๋์ญ์ ์ด ์คํจํ ์ํ์์ commit์ํ๋ก๋ ์ ์ด ๋ถ๊ฐ๋ฅ
3-2) ROLLBACK : ํธ๋์ญ์ ์ ๋น์ ์์ ์ธ ์ข ๋ฃ
- ํธ๋์ญ์ ์ ๋น์ฑ๊ณต์ ์ธ ์ข ๋ฃ
- ํ ์์ ์ ๋ ผ๋ฆฌ์ ๋จ์๊ฐ ์ํ์ด ์๋ชป๋์์์ ์๋ ค์ค
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ผ๊ด์ ์ด์ง ์์ ์ํ์ ์์ผ๋ฉฐ, ์ด ํธ๋์ญ์ ์ด ์ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฐ์ฐ์ ๋ณต๊ท์ํค๊ฑฐ๋ ์ทจ์(Undo)ํด์ผ ํ๋ค๋ ๊ฒ์ ํธ๋์ญ์ ๊ด๋ฆฌ๊ธฐ์ ์๋ ค์ค
- DBMS๋ ํด๋น ํธ๋์ญ์ ์ด์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๋ก ๋ณต๊ท
4) ํธ๋์ญ์ ์ํ
4-1) ์ํ ํ๋ฆ
- ํ๋(active) : ํธ๋์ญ์ ์ด begin_trans์์๋ถํฐ ์คํ์ ์์ํ์๊ฑฐ๋ ์คํ์ค์ธ ์ํ
- ๋ถ๋ถ์๋ฃ(partially committed) : ํธ๋์ญ์ ์ด ๋ง์ง๋ง ๋ช ๋ น๋ฌธ์ ์คํํ ์งํ์ ์ํ
- ์คํจ(failed) : ์ ์์ ์คํ์ ๋ ์ด์ ๊ณ์ํ ์ ์์ด์ ์ค๋จํ ์ํ
- ์ฒ ํ(aborted/failed) : ํธ๋์ญ์ ์ด ์คํ์ ์คํจํ์ฌ RollBack ์ฐ์ฐ์ ์ํํ ์ํ
- ์๋ฃ(committed) : ํธ๋์ญ์ ์ด ์คํ์ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃํ์ฌ commit ์ฐ์ฐ์ ์ํํ ์ํ
ํธ๋์ญ์ ์ ์ข ๋ฃ (committed, aborted)
ํธ๋์ญ์ ์ํ์ด ์ข ๋ฃ๋๋ ์ํ๋ ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํํ ํ์ ์ง์ ํ๋ ์๋ฃ(committed)์ํ์ ์คํจํ ํ์ ์ง์ ํ๋ ์ฒ ํ(aborted)์ํ๊ฐ ์๋ค.
๋ถ๋ถ ์๋ฃ(partially committed)
ํธ๋์ญ์ ์ ์คํ์ ๋ถ๋ถ์๋ฃ ์ํ์์ ๋์ด ๋์ง๋ง ์ค์ ๋ณ๊ฒฝ๋ ๋ฒํผ ๋ธ๋ก์ด ์์ง ๋์คํฌ์ ์ถ๋ ฅ๋์ง ์์๊ธฐ(no disk output yet) ๋๋ฌธ์ ์ด ์ถ๋ ฅ์ ํ๋ ๋์ ํ๋์จ์ด ์ฅ์ ๊ฐ ์ผ์ด๋ ์ฑ๊ณต์ ์ธ ์ข ๋ฃ๋ฅผ ๋ชปํ ์๋ ์๋ค.
4-2) ์ฒ ํ(aborted) ํธ๋์ญ์ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ (์ฌ์์, ํ๊ธฐ)
- ํธ๋์ญ์ ์ฌ ์์ : ํ๋์จ์ด๋ ์์คํ ์ํํธ์จ์ด ์ค๋ฅ๋ก ์ธํด ์ฒ ํ๋ ํธ๋์ญ์ ์ ๋ค์ ์๋ก์ด ํธ๋์ญ์ ์ผ๋ก ์ทจ๊ธ๋์ด ์ฌ ์์
- ํธ๋์ญ์ ํ๊ธฐ : ํธ๋์ญ์ ์ ๋ด๋ถ์ ์ค๋ฅ๋ก ์ฌ ์์ฑ์ ํด์ผ ํ๋ ์ง ์ํ๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ๊ฒฝ์ฐ์ ์ทจํ๋ ์กฐ์น
Q) ํธ๋์ญ์ ์ ๋์์ ๋ํ ์ค๋ช ์ผ๋ก ์ณ์ง ์์ ๊ฒ์?
a. ํธ๋์ญ์ ์ด ์๋ฃ(committed)๋์๋ค๋ ์ฌ์ค์ DBMS๋ก๋ถํฐ ์์ฉํ๋ก๊ทธ๋จ์ด ํ์ธํ ๊ฒฝ์ฐ๋ผ๋ ํ๋๋์คํฌ์ ์์นํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์๋ ํด๋น ํธ๋์ญ์ ์ ์ํด ๋ณ๊ฒฝ๋ ๋ด์ฉ์ด ๋ฐ์๋์ด ์์ง ์์ ์ ์๋ค.
b. ํธ๋์ญ์ ์ด ๋ง์ง๋ง ๋ช ๋ น๋ฌธ์ ์ํํ์ฌ ๋ถ๋ถ์๋ฃ(partially committed)๋ ์ํ์์๋ ์ฒ ํ(aborted) ์ํ๋ก ์ฎ๊ฒจ๊ฐ ์ ์๋ค.
c. DBMS๋ ์์ง ์๋ฃ๋์ง ์์ ํธ๋์ญ์ ์ด ๋ณ๊ฒฝํ ๋ด์ฉ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฒํผ ๊ณต๊ฐ์ ์ ์ฝ์ผ๋ก ์ธํ์ฌ ํ๋ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์ ๊ธฐ๋กํ ์ ์๋ค.
d. ์์คํ ๊ณ ์ฅ์ผ๋ก ํธ๋์ญ์ ์ด ์ฒ ํ๋ ๊ฒฝ์ฐ, ํ๋ณต ๊ด๋ฆฌ์์ ์ํด ๋ณต๊ตฌ๊ฐ ์ํ๋ ๊ฒฝ์ฐ๋ผ๋ ํ๋๋์คํฌ์ ์์นํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์๋ ํด๋น ํธ๋์ญ์ ์ ์ํด ๋ณ๊ฒฝ๋ ๋ด์ฉ์ด ๋ฐ์๋ ์ ์๋ค.
A) d : ์์คํ ๊ณ ์ฅ์ผ๋ก ํธ๋์ญ์ ์ด ์ฒ ํ๋ ๊ฒฝ์ฐ, ํ๋๋์คํฌ์ ์์นํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ์ผ์๋ ํด๋น ํธ๋์ญ์ ์ ์ํด ๋ณ๊ฒฝ๋ ๋ด์ฉ์ด ๋ฐ์ ๋ ์ ์์
5) ๋ฐ์ดํฐ ์ ์ฅ์ฅ์น
5-1) ์ข ๋ฅ (volatile, nonvolatiile, stable)
- ์๋ฉธ์ฑ(volatile) ์ ์ฅ์ฅ์น : ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ด ์์คํ ์ ๋ถ๊ดด์ ํจ๊ป ์ ์ฅ๋ ์ ๋ณด๋ฅผ ์์คํ๊ฒ ๋๋ ์ฅ์น
- ๋น์๋ฉธ์ฑ(nonvolatile) ์ ์ฅ์ฅ์น : ๋์คํฌ๋ ํ ์ดํ์ ๊ฐ์ด ์์คํ ๋ถ๊ดด ์์๋ ์ ์ฅ๋ ์ ๋ณด๋ ์์ค๋์ง ์๋ ๊ฒ
- ์์ ์ฑ(stable) ์ ์ฅ์ฅ์น : ์ ๋ณด์ ์์ค์ด ๋ฐ์ํ์ง ์๊ฒ ์ฌ๋ฌ ๊ฐ์ ๋น์๋ฉธ์ฑ ์ ์ฅ์ฅ์น๋ก ๊ตฌ์ฑ๋ ์ ์ฅ์ฅ์น
5-2) ์ ์๋ฆฌ ๊ฐฑ์ ๊ณผ ๊ฐ์ ๊ฐฑ์
- ์ ์๋ฆฌ ๊ฐฑ์ (update in place, ์์์น ๊ฐฑ์ ) : ๊ฐฑ์ ๋ ๋ฒํผ ๋ธ๋ก์ ์๋์ ๋์คํฌ ๋ธ๋ก์ ๋ค์ ๊ธฐ๋กํ๋ ๊ฒ
- ๊ฐ์ ๊ฐฑ์ (indirect update) : ๊ฐฑ์ ๋ ๋ฒํผ ๋ธ๋ก์ ๋ค๋ฅธ ๊ณต๊ฐ์ ๊ธฐ๋กํ๋ ๊ฒ
5-3) ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฅ์ฐ์ฐ
- ๋์คํฌ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ด์ ๋ธ๋ก ์ด๋ ์ฐ์ฐ
Input(X) : ๋ฐ์ดํฐ ํญ๋ชฉ X๊ฐ ํฌํจ๋์ด ์๋ ๋์คํฌ ๋ธ๋ก์ ๋ฉ๋ชจ๋ฆฌ๋ก ์ด๋
Output(Y) : ๋ฐ์ดํฐ ํญ๋ชฉ Y๊ฐ ํฌํจ๋์ด ์๋ ๋ฒํผ ๋ธ๋ก์ ๋์คํฌ๋ก ์ด๋
- ํ๋ก๊ทธ๋จ ๋ณ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ด์ ๋ฐ์ดํฐ ์ด๋ ์ฐ์ฐ
Read(X,x) : ๋ฐ์ดํฐ์์ดํ X์ ๊ฐ์ ๋ณ์ x๊ฐ์ผ๋ก ์ง์
๋ง์ผ ๋ฐ์ดํฐ ์์ดํ X๊ฐ ๋ฒํผ ๋ธ๋ก์ ์์ผ๋ฉด Input(X)๋ฅผ ์คํ
๋ฒํผ ๋ธ๋ก์ ์๋ ๋ฐ์ดํฐ ์์ดํ X์ ๊ฐ์ ๋ณ์ x์ ์ง์
Write(X, x) : ๋ณ์ x์ ๊ฐ์ ๋ฒํผ ๋ธ๋ก์ ์๋ ๋ฐ์ดํฐ ์์ดํ X์ ์ง์
๋ง์ผ ๋ฐ์ดํฐ ์์ดํ X๊ฐ ๋ฒํผ ๋ธ๋ก์ ์์ผ๋ฉด Input(X)๋ฅผ ์คํ
๋ณ์ x์ ๊ฐ์ ๋ฒํผ ๋ธ๋ก์ ์๋ ๋ฐ์ดํฐ ์์ดํ X์ ์ง์
์ ์ฅ์ฐ์ฐ
Write(X,x)๋ฅผ ์ํํ์ด๋ Output(X) ์ํ ์ ๊น์ง๋ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์ ๋ฐ์๋์ง ์์ผ๋ฉฐ, ๊ทธ ์ด์ ์ ์์คํ ์ด ๋ถ๊ดด๋๋ฉด ๋ณ๊ฒฝ๋ ๊ฐ์ ์์ค๋๋ค. output ์ฐ์ฐ์ ์ฃผ์ฒด๋ O/S์ด๋ฏ๋ก commit์ ์ค์ ๋ฐ์ดํฐ ์ ์ฅ๊น์ง๋ ๋ณด์ฅ๋๋ ๋ฐ๋์ ๊ทธ๋ ๊ฒ ๋์ง ์์ ์ ์๋ค.
'Database (๋ฐ์ดํฐ๋ฒ ์ด์ค)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DB ๋ฐ์ดํฐ๋ฒ ์ด์ค - Buffer Management ๋ฒํผ ๊ด๋ฆฌ, ๋ฒํผ ๊ต์ฒด ์ ์ฑ (0) | 2024.04.21 |
---|---|
DB ๋ฐ์ดํฐ๋ฒ ์ด์ค - ์ฅ์ ์ ํ๋ณต(๊ทธ๋ฆผ์ ํ์ด์ง, ๋ก๊ทธ ๊ธฐ๋ฐ ๋ณต๊ตฌ) (0) | 2024.04.21 |
1.3 How to Test Serializability (0) | 2024.03.15 |
1.2 Serializability ์ง๋ ฌ ๊ฐ๋ฅ (0) | 2024.03.12 |
DDL์ ํตํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ณ์ ๊ถํ ์ค์ (grant all privileges on) (0) | 2024.02.05 |