ํธ๋์ญ์
- ํ๋์ ์์
์ ์ํํ๋ ๋ฐ ํ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ์ฐ๋ค์ ๋ชจ์๋์ ๊ฒ = ์์
์ํ์ ํ์ํ SQL ๋ฌธ์ ๋ชจ์
- ํนํ, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณ๊ฒฝํ๋ INSERT, DELETE, UPDATE ๋ฌธ์ ์คํ ๊ด๋ฆฌ
- ๋ ผ๋ฆฌ์ ์์ ์ ๋จ์
- ์ฅ์ ๋ฐ์ ์ ๋ณต๊ตฌ ์์ ์ด๋ ๋ณํ ์ ์ด ์์ ์ ์ํ ์ค์ํ ๋จ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ์์
์ํ์ ํ์ํ ์ฐ์ฐ๋ค์ ํ๋์ ํธ๋์ญ์
์ผ๋ก ์ ๋๋ก ์ ์ํ๊ณ ๊ด๋ฆฌํด์ผ ํจ
ํธ๋์ญ์ ์ ํน์ฑ (ACID)
์์์ฑ (Atomicity) | - ํธ๋์ญ์
์ฐ์ฐ๋ค์ด ๋ชจ๋ ์ ์์ ์ผ๋ก ์คํ๋๊ฑฐ๋ ํ๋๋ ์คํ๋์ง ์์์ผ ํจ (= all-or-nothing) - ๋ง์ฝ ํธ๋์ญ์ ์ํ ๋์ค ์ฅ์ ๋ฐ์ํ๋ฉด ์ง๊ธ๊น์ง ์คํํ ์ฐ์ฐ ์ฒ๋ฆฌ ๋ชจ๋ ์ทจ์ํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ํธ๋์ญ์ ์์ ์ ์ํ๋ก ๋๋๋ ค์ผ ํจ - ์์์ฑ ๋ณด์ฅ ์ํด ์ฅ์ ๋ฐ์ ์ ํ๋ณต ๊ธฐ๋ฅ ํ์ |
์ผ๊ด์ฑ (Consistency) | - ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋ ํ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ผ๊ด๋ ์ํ๋ฅผ ์ ์งํด์ผ ํจ |
๊ฒฉ๋ฆฌ์ฑ (Isolation) | - ์ํ ์ค์ธ ํธ๋์ญ์
์ด ์๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ํธ๋์ญ์
๋ค์ด ์ค๊ฐ ์ฐ์ฐ ๊ฒฐ๊ณผ์ ์ ๊ทผํ ์ ์์ - ๊ฒฉ๋ฆฌ์ฑ ๋ณด์ฅ ์ํด ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์ํ๋๋๋ผ๋ ๋ง์น ์์๋๋ก ํ๋์ฉ ์ํ๋๋ ๊ฒ์ฒ๋ผ ์ ํํ๊ณ ์ผ๊ด๋ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋๋ก ์ ์ดํ๋ ๊ธฐ๋ฅ ํ์ |
์ง์์ฑ (Durability) | - ํธ๋์ญ์
์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํ ์ํ ๊ฒฐ๊ณผ๋ ์๊ตฌ์ ์ด์ด์ผ ํจ - ์ฅ์ ๋ฐ์ ์ ํ๋ณต ๊ธฐ๋ฅ ํ์ |
ํธ๋์ญ์ ์ ์ฃผ์ ์ฐ์ฐ
- commit ์ฐ์ฐ
- ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋์์์ ์ ์ธ (์ํ ์๋ฃ)
- commit ์ฐ์ฐ์ด ์คํ๋๋ฉด ํธ๋์ญ์ ์ ์ํ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋๊ณ ์ผ๊ด๋ ์ํ๋ฅผ ์ง์์ ์ผ๋ก ์ ์ง
- rollback ์ฐ์ฐ
- ํธ๋์ญ์ ์ ์ํํ๋ ๋ฐ ์คํจํ์์ ์ ์ธ (์์ ์ทจ์)
- rollback ์ฐ์ฐ์ด ์คํ๋๋ฉด ํธ๋์ญ์ ์ด ์ง๊ธ๊น์ง ์คํํ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๊ฐ ์ทจ์๋๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ํธ๋์ญ์ ์ํ ์ ์ ์ผ๊ด๋ ์ํ๋ก ๋๋์๊ฐ
ํธ๋์ญ์ ์ ์ํ
- ํ๋ (active) ์ํ: ํธ๋์ญ์ ์ด ์ํ๋๊ธฐ ์์ํ์ฌ ํ์ฌ ์ํ ์ค์ธ ์ํ
- ๋ถ๋ถ ์๋ฃ (partially committed) ์ํ: ํธ๋์ญ์ ์ ๋ง์ง๋ง ์ฐ์ฐ์ด ์คํ์ ๋๋ธ ์งํ์ ์ํ
- ์๋ฃ (committed) ์ํ: ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์ด commit ์ฐ์ฐ ์คํํ ์ํ, ํธ๋์ญ์ ์ด ์ํํ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์๋ก์ด ์ผ๊ด๋ ์ํ๊ฐ ๋๋ฉด์ ํธ๋์ญ์ ์ด ์ข ๋ฃ
- ์คํจ (failed) ์ํ: ์ฅ์ ๊ฐ ๋ฐ์ํ์ฌ ํธ๋์ญ์ ์ ์ํ์ด ์ค๋จ๋ ์ํ
- ์ฒ ํ (aborted) ์ํ: ํธ๋์ญ์
์ ์ํ ์คํจ๋ก rollback ์ฐ์ฐ์ ์คํํ ์ํ, ์ง๊ธ๊น์ง ์คํํ ํธ๋์ญ์
์ ์ฐ์ฐ์ ๋ชจ๋ ์ทจ์ํ๊ณ ํธ๋์ญ์
์ด ์ํ๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๋ก ๋๋๋ฆฌ๋ฉด์ ํธ๋์ญ์
์ข
๋ฃ, ์ฒ ํ ์ํ๋ก ์ข
๋ฃ๋ ์ํฉ์ ๋ฐ๋ผ ๋ค์ ์ํ๋๊ฑฐ๋ ํ๊ธฐ๋จ
์ฅ์ ์ ํ๋ณต
์ฅ์ (failure): ์์คํ ์ด ์ ๋๋ก ๋์ํ์ง ์๋ ์ํ
ํธ๋์ญ์ ์ฅ์ | ์๋ฏธ | ํธ๋์ญ์ ์ํ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํด ์ ์์ ์ผ๋ก ์ํ์ ๊ณ์ํ ์ ์๋ ์ํ |
์์ธ | ํธ๋์ญ์ ์ ๋ ผ๋ฆฌ์ ์ค๋ฅ. ์๋ชป๋ ๋ฐ์ดํฐ ์ ๋ ฅ, ์์คํ ์์์ ๊ณผ๋ ์ฌ์ฉ ์๊ตฌ, ์ฒ๋ฆฌ ๋์ ๋ฐ์ดํฐ์ ๋ถ์ฌ ๋ฑ | |
์์คํ ์ฅ์ | ์๋ฏธ | ํ๋์จ์ด์ ๊ฒฐํจ์ผ๋ก ์ ์์ ์ผ๋ก ์ํ์ ๊ณ์ํ ์ ์๋ ์ํ |
์์ธ | ํ๋์จ์ด ์ด์์ผ๋ก ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ์ ๋ณด๊ฐ ์์ค๋๊ฑฐ๋ ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ ๋ฑ | |
๋ฏธ๋์ด ์ฅ์ | ์๋ฏธ | ๋์คํฌ ์ฅ์น์ ๊ฒฐํจ์ผ๋ก ๋์คํฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๋ถ ํน์ ์ ์ฒด๊ฐ ์์๋ ์ํ |
์์ธ | ๋์คํฌ ํค๋์ ์์์ด๋ ๊ณ ์ฅ ๋ฑ |
ํธ๋์ญ์ ์ ์ํ์ ์ํด ํ์ํ ๋ฐ์ดํฐ ์ด๋ ์ฐ์ฐ
- (input/output) ๋์คํฌ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ๋ฐ์ดํฐ ์ด๋ ์ฐ์ฐ
- ์ผ๋ฐ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๋นํ๋ฐ์ฑ ์ ์ฅ ์ฅ์น์ธ ๋์คํฌ์ ์์ฃผ, ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด์๋ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ๋ก ๊ฐ์ ธ์ ์ฒ๋ฆฌํ ๋ค์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋์คํฌ๋ก ๋ณด๋ด๋ ์์ ์ด ํ์ํจ
- ๋ธ๋ก ๋จ์๋ก ์ํ๋จ (๋์คํฌ ๋ธ๋ก: ๋์คํฌ์ ์๋ ๋ธ๋ก / ๋ฒํผ ๋ธ๋ก: ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ๋ธ๋ก)
- input(X): ๋์คํฌ ๋ธ๋ก์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ X๋ฅผ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ๋ธ๋ก์ผ๋ก ์ด๋์ํค๋ ์ฐ์ฐ
- output(X): ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ๋ธ๋ก์ ์๋ ๋ฐ์ดํฐ X๋ฅผ ๋์คํฌ ๋ธ๋ก์ผ๋ก ์ด๋์ํค๋ ์ฐ์ฐ
- (read/write) ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ํ๋ก๊ทธ๋จ ๋ณ์ ๊ฐ ๋ฐ์ดํฐ ์ด๋ ์ฐ์ฐ
- ์์ฉ ํ๋ก๊ทธ๋จ์์ ํธ๋์ญ์ ์ ์ํ์ ์ง์ํ๋ฉด ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ๋ธ๋ก์ ์๋ ๋ฐ์ดํฐ๋ฅผ ํ๋ก๊ทธ๋จ์ ๋ณ์๋ก ๊ฐ์ ธ์ค๊ณ , ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ๋ณ์ ๊ฐ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ๋ธ๋ก์ผ๋ก ์ฎ๊ธฐ๋ ์์ ์ด ํ์
- read(X): ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ๋ธ๋ก์ ์ ์ฅ๋์ด ์๋ ๋ฐ์ดํฐ X๋ฅผ ํ๋ก๊ทธ๋จ์ ๋ณ์๋ก ์ฝ์ด์ค๋ ์ฐ์ฐ
- write(X): ํ๋ก๊ทธ๋จ์ ๋ณ์ ๊ฐ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ ๋ธ๋ก์ ์๋ ๋ฐ์ดํฐ X์ ๊ธฐ๋กํ๋ ์ฐ์ฐ
ํ๋ณต
- ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ์ผ๊ด๋ ์ํ๋ก ๋ณต๊ตฌ์ํค๋ ๊ฒ
- ํธ๋์ญ์ ์ ํน์ฑ ๋ณด์ฅ + ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ผ๊ด๋ ์ํ๋ก ์ ์งํ๊ธฐ ์ํด ํ์
- ํ๋ณต ๊ด๋ฆฌ์๊ฐ ๋ด๋น: ์ฅ์ ๋ฐ์์ ํ์งํ๊ณ , ์ฅ์ ๊ฐ ํ์ง๋๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต๊ตฌ ๊ธฐ๋ฅ ์ ๊ณต
ํ๋ณต์ ์ํ ๊ธฐ๋ณธ ์ฐ์ฐ
redo(์ฌ์คํ) | ๊ฐ์ฅ ์ต๊ทผ์ ์ ์ฅํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต์ฌ๋ณธ์ ๊ฐ์ ธ์จ ํ ๋ก๊ทธ๋ฅผ ์ด์ฉํด ๋ณต์ฌ๋ณธ์ด ๋ง๋ค์ด์ง ์ดํ์ ์คํ๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ฐ์ฐ์ ์ฌ์คํํ์ฌ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์ง์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๋ก ๋ณต๊ตฌ (์ ๋ฐ์ ์ผ๋ก ์์๋ ๊ฒฝ์ฐ์ ์ฃผ๋ก ์ฌ์ฉ) |
undo(์ทจ์) | ๋ก๊ทธ๋ฅผ ์ด์ฉํด ์ง๊ธ๊น์ง ์คํ๋ ๋ชจ๋ ๋ณ๊ฒฝ ์ฐ์ฐ์ ์ทจ์ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๋์ ์ํ๋ก ๋ณต๊ตฌ (๋ณ๊ฒฝ ์ค์ด์๊ฑฐ๋ ์ด๋ฏธ ๋ณ๊ฒฝ๋ ๋ด์ฉ๋ง ์ ๋ขฐ์ฑ์ ์์ ๊ฒฝ์ฐ์ ์ฃผ๋ก ์ฌ์ฉ) |
ํ๋ณต์ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต์ฌ๋ณธ์ ๋ง๋๋ ๋ฐฉ๋ฒ →→→ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ๋ณต์ ํต์ฌ์๋ฆฌ๋ ๋ฐ์ดํฐ ์ค๋ณต
- ๋คํ(dump): ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์ฒด๋ฅผ ๋ค๋ฅธ ์ ์ฅ ์ฅ์น์ ์ฃผ๊ธฐ์ ์ผ๋ก ๋ณต์ฌํ๋ ๋ฐฉ๋ฒ
- ๋ก๊ทธ(log)
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ณ๊ฒฝ ์ฐ์ฐ์ด ์คํ๋ ๋๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ ์ด์ ๊ฐ๊ณผ ๋ณ๊ฒฝํ ์ดํ์ ๊ฐ์ ๋ณ๋์ ํ์ผ์ ๊ธฐ๋กํ๋ ๋ฐฉ๋ฒ
- ๋ ์ฝ๋ ๋จ์๋ก ํธ๋์ญ์ ์ํ๊ณผ ํจ๊ป ๊ธฐ๋ก๋จ
ํ๋ณต ๊ธฐ๋ฒ
๋ก๊ทธ ํ๋ณต ๊ธฐ๋ฒ - ์ฆ์ ๊ฐฑ์ ํ๋ณต ๊ธฐ๋ฒ
- ํธ๋์ญ์ ์ํ ์ค์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฆ์ ๋ฐ์
- ์ฅ์ ๋ฐ์์ ๋๋นํ๊ธฐ ์ํด ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ๋ํ ๋ด์ฉ์ ๋ก๊ทธ ํ์ผ์ ๊ธฐ๋ก, ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฐ์ฐ์ด ์คํ๋๋ฉด ๋ก๊ทธ ํ์ผ์ ๋ก๊ทธ ๋ ์ฝ๋๋ฅผ ๋จผ์ ๊ธฐ๋กํ ๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ ์ฐ์ฐ ๋ฐ์
- ์ฅ์ ๋ฐ์ ์์ ์ ๋ฐ๋ผ redo๋ undo ์ฐ์ฐ ์คํํด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต๊ตฌ
๋ก๊ทธ ํ๋ณต ๊ธฐ๋ฒ - ์ง์ฐ ๊ฐฑ์ ํ๋ณต ๊ธฐ๋ฒ
- ํธ๋์ญ์ ์ํ ์ค์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ก๊ทธ์๋ง ๊ธฐ๋กํด๋๊ณ , ํธ๋์ญ์ ์ด ๋ถ๋ถ ์๋ฃ๋ ํ์ ๋ก๊ทธ์ ๊ธฐ๋ก๋ ๋ด์ฉ์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ ๋ฒ์ ๋ฐ์
- undo ์ฐ์ฐ ํ์ ์๊ณ redo ์ฐ์ฐ๋ง ์ฌ์ฉ
- ๋ก๊ทธ ๋ ์ฝ๋์๋ ๋ณ๊ฒฝ ์ดํ ๊ฐ๋ง ๊ธฐ๋กํ๋ฉด ๋จ : <T1, X, new_value> ํ์
๊ฒ์ฌ ์์ ํ๋ณต ๊ธฐ๋ฒ
- ๋ก๊ทธ ๊ธฐ๋ก ์ด์ฉํ๋, ์ผ์ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ๊ฒ์ฌ ์์ (checkpoint)๋ฅผ ๋ง๋ฆ
- ์ฅ์ ๋ฐ์ ์ ๊ฐ์ฅ ์ต๊ทผ ๊ฒ์ฌ ์์ ์ดํ์ ํธ๋์ญ์ ์๋ง ํ๋ณต ์์ ์ํ
- ๋ก๊ทธ ์ ์ฒด๋ฅผ ๋์์ผ๋ก ํ๋ณต ๊ธฐ๋ฒ์ ์ ์ฉํ ๋ ๋ฐ์ํ ์ ์๋ ๋นํจ์จ์ฑ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐ
๋ฏธ๋์ด ํ๋ณต ๊ธฐ๋ฒ
- ๋์คํฌ์ ๋ฐ์ํ ์ ์๋ ์ฅ์ ์ ๋๋นํ ํ๋ณต ๊ธฐ๋ฒ
- ๋คํ(๋ณต์ฌ๋ณธ) ์ด์ฉ: ์ ์ฒด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ ์ผ์ ์ฃผ๊ธฐ๋ง๋ค ๋ค๋ฅธ ์์ ํ ์ ์ฅ ์ฅ์น์ ๋ณต์ฌ
- ๋์คํฌ ์ฅ์ ๋ฐ์ํ๋ฉด, ๊ฐ์ฅ ์ต๊ทผ์ ๋ณต์ฌํด๋ ๋คํ๋ฅผ ์ด์ฉํด ์ฅ์ ๋ฐ์ ์ด์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๋ก ๋ณต๊ตฌํ๊ณ ํ์์ ๋ฐ๋ผ redo ์ฐ์ฐ ์ํ
728x90
'DB(Database) > Basic Concept' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทํ (1) | 2021.11.05 |
---|---|
[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ (0) | 2021.11.04 |
[DB] ๋ทฐ(VIEW) (0) | 2021.11.04 |
[DB] ๊ด๊ณ ๋ฐ์ดํฐ ๋ชจ๋ธ (0) | 2021.04.25 |
[DB] ๋ฐ์ดํฐ ๋ชจ๋ธ๋ง (๋ฐ์ดํฐ๋ฒ ์ด์ค) (0) | 2021.04.17 |