๐ผ ํธ๋์ญ์
(Transaction)์ด๋?
ํธ๋์ญ์
์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํด ์ํ๋๋ ์์
๋จ์์
๋๋ค. ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด, ์ฌ๋ฌ SQL ๋ช
๋ น๋ฌธ์ ํ๋์ ์์
๋จ์๋ก ๋ฌถ์ด์ ์ฒ๋ฆฌํ๋ ๊ฒ์ด์ฃ .
๐ก ํธ๋์ญ์
์ ํต์ฌ ๊ฐ๋
ํธ๋์ญ์
์์ "์ํ๋ฅผ ๋ณํ์ํจ๋ค"๋ ๊ฒ์ SQL ์ง์๋ฅผ ํตํด DB์ ์ ๊ทผํ์ฌ ๋ฐ์ดํฐ์ ์ํ๋ฅผ ๋ณํ์ํค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ํธ๋์ญ์
์ ์ฌ์ฉ๋๋ ์ฃผ์ SQL ๋ช
๋ น์ด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- SELECT: ๋ฐ์ดํฐ๋ฅผ ์กฐํ
- INSERT: ๋ฐ์ดํฐ๋ฅผ ์ฝ์
- DELETE: ๋ฐ์ดํฐ๋ฅผ ์ญ์
- UPDATE: ๋ฐ์ดํฐ๋ฅผ ์์
๐ ํธ๋์ญ์
์ ์์
๋จ์๋?
์ฌ๋ฌ SQL ๋ช
๋ น๋ฌธ์ ๋
ผ๋ฆฌ์ ์ผ๋ก ๋ฌถ์ด์ ํ๋์ ๋จ์๋ก ์ฒ๋ฆฌํ๋ ๊ฒ์ ํธ๋์ญ์
์ด๋ผ๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฌ์ฉ์๊ฐ ๋์ ์ก๊ธํ๋ ๊ณผ์ ์์๋ ๋ค์ ๋ ๊ฐ์ง ์์
์ด ์ด๋ฃจ์ด์ง๋๋ค:
- ์ฌ์ฉ์ A์ ๊ณ์ข์์ ๋ง์์ ์ฐจ๊ฐ:
UPDATE ๋ช
๋ น์ด๋ก A์ ์๊ณ ๋ฅผ ๋ณ๊ฒฝ
- ์ฌ์ฉ์ B์ ๊ณ์ข์ ๋ง์์ ์ถ๊ฐ:
UPDATE ๋ช
๋ น์ด๋ก B์ ์๊ณ ๋ฅผ ๋ณ๊ฒฝ
์ด ๋ ์์
์ ํ๋์ ํธ๋์ญ์
์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ์์
์ค ํ๋๋ผ๋ ์คํจํ๋ฉด Rollback(๋กค๋ฐฑ)์ ํตํด ์๋ ์ํ๋ก ๋๋๋ฆฌ๊ฒ ๋๊ณ , ๋ชจ๋ ์์
์ด ์ฑ๊ณตํ๋ฉด Commit(์ปค๋ฐ)์ ํตํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ต์ข
๋ฐ์๋ฉ๋๋ค.
โจ ํธ๋์ญ์
์ ์์
์์: ์ก๊ธ ํ๋ก์ธ์ค
-
์ฌ์ฉ์ A๊ฐ ์ฌ์ฉ์ B์๊ฒ ๋ง์์ ์ก๊ธํ๋ค๊ณ ๊ฐ์ ํ ๋, ํธ๋์ญ์
์ ๋ค์ ๋ ๊ฐ์ง ์์
์ ํฌํจํฉ๋๋ค:
- ์ฌ์ฉ์ A์ ์๊ณ ์์ 1๋ง ์ ์ฐจ๊ฐ (
UPDATE)
- ์ฌ์ฉ์ B์ ์๊ณ ์ 1๋ง ์ ์ถ๊ฐ (
UPDATE)
-
์ด ๋ ์์
์ด ์ฑ๊ณตํ๋ฉด Commit์ ํตํด ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํฉ๋๋ค.
-
๋ง์ฝ ์ค๊ฐ์ ์์
์ด ์คํจํ๋ค๋ฉด, Rollback์ ํตํด ์ฌ์ฉ์ A์ ์๊ณ ๋ฅผ ์๋ ์ํ๋ก ๋ณต๊ตฌํฉ๋๋ค.
โ
๊ฒฐ๋ก : ํธ๋์ญ์
์ค๊ณ์ ์ค์์ฑ
ํธ๋์ญ์
์ค๊ณ๋ฅผ ์ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ผ๊ด์ฑ์ ์ ์งํ ์ ์์ต๋๋ค. ๋ฐ๋๋ก ํธ๋์ญ์
์ ์๋ชป ์ค๊ณํ๋ฉด ๋ฐ์ดํฐ์ ์ฌ๊ฐํ ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์, ์ ์คํ ์ค๊ณ๊ฐ ํ์ํฉ๋๋ค.
ํธ๋์ญ์
ํน์ง (ACID)
ํธ๋์ญ์
์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ๋ ค๋ฉด ๋ค ๊ฐ์ง ์ฃผ์ ํน์ฑ์ ๋ง์กฑํด์ผ ํฉ๋๋ค. ์ด ํน์ฑ๋ค์ ํํ ACID๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ์ด๋ ๋ค์๊ณผ ๊ฐ์ ์์๋ค๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
1. ์์์ฑ(Atomicity) โ๏ธ
- ์ ์: ํธ๋์ญ์
๋ด์์ ์ํ๋๋ ์์
๋ค์ ๋ชจ๋ ํ๋์ ๋จ์๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค. ํธ๋์ญ์
์ด ์ฑ๊ณตํ๋ฉด ๊ทธ ์์ ๋ชจ๋ ์์
์ด DB์ ๋ฐ์๋์ด์ผ ํ๊ณ , ํธ๋์ญ์
์ด ์คํจํ๋ฉด ์ ํ ๋ฐ์๋์ง ์์์ผ ํฉ๋๋ค.
- ์ฝ๊ฒ ๋งํด์: ํธ๋์ญ์
์ "์ ๋ถ ๋๋ ์ ๋ฌด"๋ผ๋ ์์น์ ๋ฐ๋ฆ
๋๋ค. ์ค๊ฐ์ ์ผ๋ถ ์์
๋ง ๋ฐ์๋๋ ์ํฉ์ ๋ฐ์ํ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๊ณ์ข์ด์ฒด๊ฐ ์งํ ์ค์ผ ๋, ๋์ด A์ ๊ณ์ข์์ ๋น ์ ธ๋๊ฐ์ง๋ง B์ ๊ณ์ข์ ์
๊ธ๋์ง ์์ ์ํ๋ก ๋จ์์์ผ๋ฉด ์ ๋๋ ๊ฒ์ด์ฃ .
2. ์ผ๊ด์ฑ(Consistency) ๐ ๏ธ
- ์ ์: ํธ๋์ญ์
์ด ์ํ๋ ํ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ํญ์ ์ผ๊ด์ฑ ์๋ ์ํ๋ฅผ ์ ์งํด์ผ ํฉ๋๋ค. ์ด๋ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ DB์ ์ ์ฝ ์กฐ๊ฑด์ ๋ง์กฑํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
- ์ฝ๊ฒ ๋งํด์: ํธ๋์ญ์
์ด ์๋ฃ๋ ํ, ๋ฐ์ดํฐ๋ ๋ฐ๋์ ๋
ผ๋ฆฌ์ ์ด๊ณ ์ผ๊ด์ฑ ์๋ ์ํ์ฌ์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ํ ๊ณ์ข์์ ๋ง์ด๋์ค ์๊ณ ๊ฐ ๋ฐ์ํ์ง ์๋๋ก ์ค๊ณ๋์ด ์๋ค๋ฉด, ํธ๋์ญ์
์ด ๋๋ฌ์ ๋ ๊ทธ ๊ท์น์ด ์ฌ์ ํ ์ง์ผ์ ธ์ผ ํฉ๋๋ค.
3. ๋
๋ฆฝ์ฑ(Isolation) ๐ง
- ์ ์: ๋ ๊ฐ ์ด์์ ํธ๋์ญ์
์ด ๋์์ ์คํ๋ ๋, ๊ฐ ํธ๋์ญ์
์ ์๋ก ๊ฐ์ญํ์ง ์๊ณ ๋
๋ฆฝ์ ์ผ๋ก ์คํ๋์ด์ผ ํฉ๋๋ค. ์ฆ, ๋ค๋ฅธ ํธ๋์ญ์
์ ์ฐ์ฐ์ด ์๋ฃ๋๊ธฐ ์ ๊น์ง๋ ํด๋น ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
- ์ฝ๊ฒ ๋งํด์: ๋์์ ์ฌ๋ฌ ํธ๋์ญ์
์ด ์งํ๋ ๋, ํ๋์ ํธ๋์ญ์
์ด ๋ค๋ฅธ ํธ๋์ญ์
์ ์ํฅ์ ๋ฐ์ง ์์์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ ์ฌ์ฉ์๊ฐ A ๊ณ์ข์์ ๋์ ์ธ์ถํ๋ ๋์, ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๊ฐ์ ๊ณ์ข์ ์
๊ธํ๋ ์์
์ ์งํํด๋ ๋ ํธ๋์ญ์
์ ์๋ก ๊ฐ์ญํ์ง ์๊ณ ๋
๋ฆฝ์ ์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
4. ์ง์์ฑ(Durability) ๐๏ธ
- ์ ์: ํธ๋์ญ์
์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋ ์๊ตฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅ๋์ด์ผ ํฉ๋๋ค. ์์คํ
์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ผ๋ ํธ๋์ญ์
์ ๊ฒฐ๊ณผ๋ ์ฌ๋ผ์ง์ง ์์์ผ ํฉ๋๋ค.
- ์ฝ๊ฒ ๋งํด์: ํ ๋ฒ ์ปค๋ฐ๋ ํธ๋์ญ์
์ ๊ฒฐ๊ณผ๋ DB์ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ก๊ธ์ด ์๋ฃ๋์๋ค๋ฉด ์๋ฒ๊ฐ ๊บผ์ง๋๋ผ๋ ์ก๊ธ ๊ฒฐ๊ณผ๋ ๊ทธ๋๋ก ์ ์ง๋์ด์ผ ํฉ๋๋ค.
Commit๊ณผ Rollback
ํธ๋์ญ์
์ ์ฒ๋ฆฌํ๋ ๊ณผ์ ์์ Commit๊ณผ Rollback์ด๋ผ๋ ์ค์ํ ๊ฐ๋
์ด ๋ฑ์ฅํฉ๋๋ค.
๐ Commit(์ปค๋ฐ)
- ์ ์: ํธ๋์ญ์
์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ ๋, ๊ทธ ์์
์ด DB์ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋๋๋ก ํ๋ ๋ช
๋ น์
๋๋ค.
- ์ค๋ช
: ํธ๋์ญ์
์ด ๋๋ ํ, ๋ชจ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ ์ง๊ณ ๋ค๋ฅธ ํธ๋์ญ์
์์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๊ฒ ๋ง๋๋ ๊ฒ์
๋๋ค. ์ฆ, DB์ ์ํ๊ฐ ์ ์์ ์ผ๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ ํ์ธํ๋ ๋จ๊ณ๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค.
๐ Rollback(๋กค๋ฐฑ)
- ์ ์: ํธ๋์ญ์
์ด ์ฒ๋ฆฌ๋๋ ์ค๊ฐ์ ๋น์ ์์ ์ผ๋ก ์ข
๋ฃ๋์์ ๋, ํธ๋์ญ์
์ ์คํํ๊ธฐ ์ ์ํ๋ก ๋๋๋ฆฌ๋ ๋ช
๋ น์
๋๋ค.
- ์ค๋ช
: ํธ๋์ญ์
๋ด์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์์
์ค ์ผ๋ถ๊ฐ ์คํจํ ๊ฒฝ์ฐ, ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ ์ํด ์ต์ด ์ํ(ํธ๋์ญ์
์ด ์์๋ ์ํ)๋ก ๋๋๋ฆฌ๋ ์์
์
๋๋ค. ์๋ฅผ ๋ค์ด, ์ก๊ธ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด, ๋์ด ์ฐจ๊ฐ๋ ๊ณ์ข์์ ๋ค์ ๋์ ์๋ ์ํ๋ก ๋ณต๊ตฌํฉ๋๋ค.
โ ์ํฉ๋ณ DB ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ
ํธ๋์ญ์
์ด ์ด๋ฐ ํน์ฑ์ ๋ชจ๋ ๋ง์กฑํด์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด์ฑ๊ณผ ์์ ์ฑ์ ๋ณด์ฅํ ์ ์์ต๋๋ค. ๋ง์ฝ ์ด๋ฐ ์ํฉ์ด ์ฃผ์ด์ก์ ๋, DB์์ ์ด๋ป๊ฒ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ง์ ๋ํด ์๊ฐํด ๋ณด๋ ๊ฒ๋ ์ข์ต๋๋ค. ํธ๋์ญ์
์ ์๋ฆฌ๋ฅผ ์ดํดํ๋ฉด ๋ณต์กํ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์ํฉ์์๋ ์ ์ ํ ํด๊ฒฐ์ฑ
์ ์ ์ํ ์ ์๊ฒ ๋ ๊ฒ์
๋๋ค.
๐ Transaction ๊ด๋ฆฌ๋ฅผ ์ํ DBMS์ ์ ๋ต
DBMS๊ฐ ํธ๋์ญ์
์ ๊ด๋ฆฌํ๋๋ฐ ํ์ํ ํต์ฌ ๊ฐ๋
์ ํฌ๊ฒ ๋ ๊ฐ์ง์
๋๋ค: DBMS์ ๊ตฌ์กฐ์ Buffer ๊ด๋ฆฌ ์ ์ฑ
. ์ด ๋ ๊ฐ์ง๋ฅผ ์ดํดํ๋ฉด DBMS๊ฐ ์ด๋ป๊ฒ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ณ ๋ณต๊ตฌํ๋์ง ์ ์ ์์ต๋๋ค.
1. DBMS์ ๊ตฌ์กฐ ๐๏ธ
DBMS๋ ํฌ๊ฒ ๋ ๊ฐ์ง ์์คํ
์ผ๋ก ๋๋ ์ ์์ต๋๋ค:
- Query Processor (์ง์ ์ฒ๋ฆฌ๊ธฐ): ์ฌ์ฉ์์ SQL ์ง์๋ฅผ ํด์ํ๊ณ ์คํ
- Storage System (์ ์ฅ ์์คํ
): ๋ฐ์ดํฐ๋ฅผ ์ค์ ๋ก ์ ์ฅํ๋ ์์คํ
๐ ์
์ถ๋ ฅ ๋จ์: ํ์ด์ง(Page)
DBMS๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ธ ๋ ๊ณ ์ ๋ ํฌ๊ธฐ์ ํ์ด์ง ๋จ์๋ก ์ฒ๋ฆฌํฉ๋๋ค. ์ฆ, ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋ ํญ์ ์ผ์ ํ ํ์ด์ง ํฌ๊ธฐ๋ก ๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฐ๋ ๊ตฌ์กฐ์
๋๋ค.
๐พ ์ ์ฅ ๊ณต๊ฐ
์ ์ฅ ๊ณต๊ฐ์ ๋ ๊ฐ์ง๋ก ๋๋ฉ๋๋ค:
1. ๋นํ๋ฐ์ฑ ์ ์ฅ ์ฅ์น(์: ๋์คํฌ)์ ์ ์ฅ
2. ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ(Main Memory)์ ์ ์ฅ
์ด๋ ๊ฒ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋๋์ด ์ ์ฅํจ์ผ๋ก์จ, DBMS๋ ๋น ๋ฅธ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์์ ์ ์ธ ์ ์ฅ์ ๋์์ ๋ฌ์ฑํ ์ ์์ต๋๋ค.
2. Page Buffer Manager (๋ฒํผ ๊ด๋ฆฌ์) ๐ก
Page Buffer Manager๋ DBMS์ ์ ์ฅ ์์คํ
(Storage System)์์ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ด๋ ๋ฉ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ํ์ด์ง๋ฅผ ๊ด๋ฆฌํ๋ ๋ชจ๋๋ก, ๋ฐ์ดํฐ ํ์ด์ง๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๊ณ ์บ์ํ ์ง ๊ฒฐ์ ํฉ๋๋ค.
๐ ๋ฒํผ ๊ด๋ฆฌ ์ ์ฑ
๋ฒํผ ๊ด๋ฆฌ ์ ์ฑ
์ ๋ฐ๋ผ UNDO ๋ฐ REDO์ ๊ฐ์ ๋ณต๊ตฌ ์์
์ด ์๊ตฌ๋ ์ ์์ต๋๋ค.
- UNDO: ํธ๋์ญ์
์ด ์คํจํ์ ๋ ์ด์ ์ํ๋ก ๋๋๋ฆฌ๋ ์์
- REDO: ํธ๋์ญ์
์ด ์ฑ๊ณตํ์ ๋ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ๋ค์ ๋ฐ์ํ๋ ์์
์ด ์ ์ฑ
์ ํธ๋์ญ์
๊ด๋ฆฌ์์ ๋งค์ฐ ์ค์ํ ๊ฒฐ์ ์์์
๋๋ค. ํธ๋์ญ์
์ฒ๋ฆฌ ์ค ๋ฐ์ํ ์ ์๋ ์ค๋ฅ์ ๋๋นํด ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์บ์ํ๊ณ , ์ธ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ญ์ ํ ์ง๋ฅผ ๊ฒฐ์ ํฉ๋๋ค.
โจ ๊ฒฐ๋ก : ํธ๋์ญ์
๊ด๋ฆฌ์ ์ค์์ฑ
DBMS๋ ์ง์ ์ฒ๋ฆฌ๊ธฐ์ ์ ์ฅ ์์คํ
์ด๋ผ๋ ๋ ์ถ์ ์ค์ฌ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ, ๊ทธ ์ค Page Buffer Manager๋ ํธ๋์ญ์
๊ด๋ฆฌ์์ ํต์ฌ์ ์ธ ์ญํ ์ ํฉ๋๋ค. ์ด ๋ชจ๋์ด ๋ฐ์ดํฐ๋ฅผ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๋๋์ ๋ฐ๋ผ DB์ ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ด ๊ฒฐ์ ๋ฉ๋๋ค. ํธ๋์ญ์
์ค ๋ฐ์ํ ์ ์๋ ์ค๋ฅ์ ๋๋นํ ๋ณต๊ตฌ ์์
(UNDO/REDO)์ ์ํํ๊ฒ ์งํํ๊ธฐ ์ํด์๋, ์ ์ ํ ๋ฒํผ ๊ด๋ฆฌ ์ ์ฑ
์ด ํ์ํฉ๋๋ค.
๐ UNDO: ํธ๋์ญ์
๋ณต๊ตฌ์ ํต์ฌ
๐ก UNDO์ ๊ธฐ๋ณธ ๊ฐ๋
UNDO๋ ํธ๋์ญ์
์ด ์ ์์ ์ผ๋ก ์๋ฃ๋์ง ์์์ ๋, ์ด๋ฏธ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ ์ํ๋ก ๋ณต๊ตฌํ๋ ์์
์
๋๋ค. ํธ๋์ญ์
์ด ์ค๊ฐ์ ์คํจํ๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ, ๊ทธ๋์ ๋์คํฌ์ ๊ธฐ๋ก๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์์ ์ ์๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ณต๊ตฌํด์ผ ํ๋๋ฐ, ์ด ๊ณผ์ ์ UNDO๋ผ๊ณ ํฉ๋๋ค.
๐ค ์ UNDO๊ฐ ํ์ํ๊ฐ?
DBMS์์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋, ๋ฒํผ๋ ํธ๋์ญ์
๊ณผ๋ ๋ณ๊ฐ๋ก ์๋ํฉ๋๋ค. ์ฆ, ํธ๋์ญ์
์ด ์์ง ์๋ฃ๋์ง ์์๋๋ผ๋ ๋ฒํผ์์ ๋์คํฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ธ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํ ๋ฐฉ์์
๋๋ค. ํ์ง๋ง ์ด๋ก ์ธํด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ๋ฒํผ ๊ต์ฒด๋ ํธ๋์ญ์
์ ์๋ฃ ์ฌ๋ถ์๋ ๊ด๊ณ์์ด ๋ฐ์ํฉ๋๋ค. ๋ฒํผ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๊ฝ ์ฐจ๋ฉด, ๋ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๊ธฐ ๋๋ฌธ์ ํ์ฌ ๋ฒํผ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ๊ธฐ๋กํ๊ฒ ๋ฉ๋๋ค. ์ด ๊ณผ์ ์์ ํธ๋์ญ์
์ด ์์ง ๋๋์ง ์์์์๋ ๋ถ๊ตฌํ๊ณ ์์ ๋ ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์ ๊ธฐ๋ก๋ ์ ์์ต๋๋ค.
- ๋ง์ฝ ํธ๋์ญ์
์ด ์ค๊ฐ์ ์คํจํ๊ฑฐ๋ ์ทจ์๋๋ฉด, ๋์คํฌ์ ๊ธฐ๋ก๋ ๋ณ๊ฒฝ๋ ๋ฐ์ดํฐ๋ ์๋ ์ํ๋ก ๋ณต๊ตฌ๋์ด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค. ์ด๋, ์ด๋ฏธ ๊ธฐ๋ก๋ ๋ฐ์ดํฐ๋ฅผ ์๋๋๋ก ๋๋๋ฆฌ๋ ์์
์ด ๋ฐ๋ก UNDO์
๋๋ค.
๐ UNDO ์ ์ฑ
UNDO๋ ๋ฐ์ดํฐ๊ฐ ์ธ์ ๋์คํฌ์ ๊ธฐ๋ก๋๋๊ฐ์ ๋ฐ๋ผ ๋ ๊ฐ์ง ์ ์ฑ
์ผ๋ก ๋๋ ์ ์์ต๋๋ค.
-
๐ผ steal ์ ์ฑ
- ์ด ์ ์ฑ
์์๋ ์์ ๋ ํ์ด์ง๋ฅผ ์ธ์ ๋ ์ง ๋์คํฌ์ ๊ธฐ๋กํ ์ ์์ต๋๋ค.
- ์ฆ, ํธ๋์ญ์
์ด ์๋ฃ๋์ง ์์๋๋ผ๋ ๋ฒํผ์์ ์๋ฆฌ๊ฐ ๋ถ์กฑํ๋ฉด ๋์คํฌ์ ๋ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํ๊ฒ ๋ฉ๋๋ค.
- ๋๋ถ๋ถ์ DBMS๋ steal ์ ์ฑ
์ ์ฌ์ฉํฉ๋๋ค. ์๋ํ๋ฉด ๋ฒํผ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ๋์คํฌ์ ์ฎ๊ฒจ์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค.
- ํ์ง๋ง, ํธ๋์ญ์
์ด ์คํจํ ๊ฒฝ์ฐ ์ด๋ฏธ ๋์คํฌ์ ๊ธฐ๋ก๋ ๋ฐ์ดํฐ๋ฅผ ์๋ ์ํ๋ก ๋๋๋ฆฌ๋ UNDO ์์
์ด ํ์์ ์
๋๋ค. ์ด ์์
์ ์ํด UNDO logging์ด ํ์ํ๋ฉฐ, ์์คํ
์ ๋ณต๊ตฌ๋ฅผ ์ํด ์ด ๋ก๊ทธ๋ฅผ ํ์ฉํฉ๋๋ค.
-
๐ no-steal ์ ์ฑ
- ์ด ์ ์ฑ
์์๋ ์์ ๋ ํ์ด์ง๊ฐ ํธ๋์ญ์
์ด ์๋ฃ๋๊ธฐ ์ ๊น์ง ๋์คํฌ์ ๊ธฐ๋ก๋์ง ์์ต๋๋ค.
- ์ฆ, ํธ๋์ญ์
์ด ๋๋ ๋๊น์ง ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฒํผ์ ์ ์งํ๊ณ ์๋ค๊ฐ, ํธ๋์ญ์
์ด ์ฑ๊ณต์ ์ผ๋ก ๋๋๋ฉด ๊ทธ๋์์ผ ๋์คํฌ์ ๋ฐ์ดํฐ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
- ์ด ๊ฒฝ์ฐ ํธ๋์ญ์
์ด ์คํจํด๋ ์ด๋ฏธ ๋์คํฌ์ ๊ธฐ๋ก๋ ๋ฐ์ดํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ UNDO ์์
์ด ํ์ํ์ง ์์ต๋๋ค.
- ๊ทธ๋ฌ๋, ๋งค์ฐ ํฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ์ํฉ๋๋ค. ์๋ํ๋ฉด ํธ๋์ญ์
์ด ๋๋ ๋๊น์ง ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ์ ์งํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค.
๐ REDO: ํธ๋์ญ์
๋ณต๊ตฌ์ ํต์ฌ
REDO๋ ์ด๋ฏธ ์ปค๋ฐ๋ ํธ๋์ญ์
์ ์์ ์ฌํญ์ ๋ค์ ๋ฐ์ํ๋ ๋ณต๊ตฌ ์์
์
๋๋ค. ํธ๋์ญ์
์ด ์ฑ๊ณต์ ์ผ๋ก ์ปค๋ฐ๋์์ง๋ง, ๋ฐ์ดํฐ๊ฐ ์์ ํ ๋์คํฌ์ ๊ธฐ๋ก๋์ง ์์๋ค๋ฉด ์์คํ
์ค๋ฅ๋ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ REDO ์์
์ ํตํด ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ๋ฐ์ํฉ๋๋ค.
REDO: ์ ํ์ํ๊ฐ?
ํธ๋์ญ์
์ด ์๋ฃ๋ ์์ ์๋ ๋ฐ์ดํฐ๊ฐ ๋ฐ๋์ ๋์คํฌ์ ๊ธฐ๋ก๋์ง๋ ์์ต๋๋ค. ๋ฒํผ ๊ด๋ฆฌ ์ ์ฑ
์ ๋ฐ๋ผ ์์ ๋ ํ์ด์ง๊ฐ ๋์คํฌ์ ๊ธฐ๋ก๋๋ ์์ ์ด ๋ฌ๋ผ์ง๋ฉฐ, ์ด๋ก ์ธํด REDO ์์
์ด ํ์ํ ์ํฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
REDO์ Buffer ๊ด๋ฆฌ ์ ์ฑ
DBMS๋ ํธ๋์ญ์
์ด ์ข
๋ฃ๋ ๋ ํด๋น ํธ๋์ญ์
์ด ์์ ํ ํ์ด์ง๋ฅผ ๋์คํฌ์ ๊ธฐ๋กํ ์ง๋ฅผ ๊ฒฐ์ ํ๋ Buffer ๊ด๋ฆฌ ์ ์ฑ
์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด ์ ์ฑ
์ ๋ฐ๋ผ REDO ์์
์ ํ์ ์ฌ๋ถ๊ฐ ๊ฒฐ์ ๋ฉ๋๋ค.
1. FORCE ์ ์ฑ
๐ ๏ธ
- FORCE ์ ์ฑ
์ ํธ๋์ญ์
์ด ์ปค๋ฐ๋๋ ์๊ฐ ์์ ๋ ๋ชจ๋ ํ์ด์ง๋ฅผ ๋์คํฌ์ ์ฆ์ ๊ธฐ๋กํ๋ ๋ฐฉ์์
๋๋ค.
- ํธ๋์ญ์
์ด ์ปค๋ฐ๋๋ฉด ์ด๋ฏธ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ๋์คํฌ์ ๋ฐ์๋์ด ์๊ธฐ ๋๋ฌธ์ REDO ์์
์ด ํ์ ์์ต๋๋ค.
2. no-FORCE ์ ์ฑ
๐ซ
- no-FORCE ์ ์ฑ
์ ํธ๋์ญ์
์ด ์ปค๋ฐ๋ ํ์๋ ์์ ๋ ํ์ด์ง๊ฐ ๋์คํฌ์ ๊ธฐ๋ก๋์ง ์์ ์ ์๋ ๋ฐฉ์์
๋๋ค.
- ์ด ๊ฒฝ์ฐ ์์คํ
์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด REDO ์์
์ ํตํด ์ปค๋ฐ๋ ์์ ์ฌํญ์ ๋ค์ ๋์คํฌ์ ๋ฐ์ํด์ผ ํฉ๋๋ค.
- no-FORCE๋ ๋๋ถ๋ถ์ DBMS๊ฐ ์ฌ์ฉํ๋ ์ ์ฑ
์ผ๋ก, ์์ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฆ์ ๋์คํฌ์ ๊ธฐ๋กํ์ง ์๊ณ ์ผ์ ์๊ฐ์ด ์ง๋ ํ ๊ธฐ๋กํจ์ผ๋ก์จ I/O ์ฑ๋ฅ์ ์ต์ ํํฉ๋๋ค.