ํธ๋์ญ์ ์ด๋?
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํด์ ์ํํ๋ ์์ ์ ์ต์ ๋จ์๋ฅผ ๋ปํ๋ค. ์ฌ๊ธฐ์ ์์ ์ ๋จ์๋ ์ง์์ด ํ ๋ฌธ์ฅ์ ๋ปํ๋ ๊ฒ์ด ์๋๋ฉฐ, ์ด ์์ ๋จ์๋ ์ชผ๊ฐ์ง ์ ์๋ค. ๊ฐ๋จํ ๋งํด ์ฌ๋ฌ ๊ฐ์ ์ง์์ด๋ค์ด ๋ฌถ์ธ ์์ ์ ํ ๋จ์๋ฅผ ์๋ฏธํ๋๋ฐ, ์ด ๋จ์๋งํผ DB์ ๋ช ๋ น์ ํ ๋ฒ์ ๋ฐ์ํ๋ค.
์๋ฅผ ๋ค์ด A๊ฐ B์๊ฒ ์ก๊ธํ๋ ๊ฒฝ์ฐ๋ฅผ ์๊ฐํด๋ณด์. A๊ฐ B์๊ฒ ์ผ์ ๊ธ์ก์ ์ก๊ธํ์ ๋, ์ ์์ ์ผ๋ก ์ก๊ธ์ด ์๋ฃ๋๋ฉด A์ ๊ณ์ข์์ ํด๋น ๊ธ์ก์ด ์ฐจ๊ฐ๋๊ณ , B์ ๊ณ์ข์๋ ๊ฐ์ ๊ธ์ก์ด ์ถ๊ฐ๋์ด์ผ ํ๋ค. ์ด๋ฅผ ์ง์์ด๋ก ํํํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
-- A ๊ณ์ข์์ ๊ธ์ก ์ฐจ๊ฐ
UPDATE ๊ณ์ข
SET ์์ก = ์์ก - 10000
WHERE ์ด๋ฆ = 'A';
-- B ๊ณ์ข์ ๊ธ์ก ์ถ๊ฐ
UPDATE ๊ณ์ข
SET ์์ก = ์์ก + 10000
WHERE ์ด๋ฆ = 'B';
์์ ๊ฐ์ด ๋ ๊ฐ์ง์ ์ง์์ด๋ฅผ ‘์ก๊ธ’์ด๋ผ๋ ํ๋์ ์์
๋จ์๋ก ์ ํ๊ฒ ๋๋ฉด ์ด ์์
๋จ์๊ฐ ํ๋์ ํธ๋์ญ์
์ด ๋๋ค. A ๊ณ์ข์์ ๊ธ์ก์ด ์ฐจ๊ฐ๋๊ณ B ๊ณ์ข์ ๊ธ์ก์ด ์ถ๊ฐ๋์ง ์์ผ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ ์ด ํธ๋์ญ์
์ ๋ ์ด์ ์ชผ๊ฐค ์ ์๋ค.
*ํธ๋์ญ์
์ ๋
ผ๋ฆฌ์ ์์
๋จ์(LUW, Logical Units of Work)๋ผ๊ณ ๋ถ๋ฆฌ๊ธฐ๋ ํจ
ํธ๋์ญ์ ์ ํน์ฑ(ACID)
์ด๋ก ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ๊ฐ ํธ๋์ญ์ ์ ์์ ์ฑ์ ์ํด ์์์ฑ, ์ผ๊ด์ฑ, ๋ ๋ฆฝ์ฑ, ์๊ตฌ์ฑ์ ๋ณด์ฅํ๋ค. (๊ทธ๋ฌ๋, ์ค์ ๋ก๋ ์ฑ๋ฅํฅ์์ ์ํด ์ด๋ฐ ํน์ฑ๋ค์ด ์ข ์ข ์ํ๋๊ธฐ๋ ํ๋ค.)
์์์ฑ(Atomicity)
"ํธ๋์ญ์
์ ์ฐ์ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ชจ๋ ๋ฐ์๋๋ ์ง ์๋๋ฉด ์ ํ ๋ฐ์๋์ง ์์์ผ ํ๋ค."
์์์ ๋ ํธ๋์ญ์
์ ์์์ฒ๋ผ ํธ๋์ญ์
์ ์ชผ๊ฐค ์ ์๋ ์ฑ์ง์ ๊ฐ์ ธ์ผ ํ๋ค๋ ๊ฒ์ด ์์์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ด๋ค. (์ก๊ธ ํธ๋์ญ์
์ํ ์ ํ์ชฝ ๊ณ์ข ๊ธ์ก์ ์ฐจ๊ฐํ์ผ๋ฉด, ๋ค๋ฅธ ํ์ชฝ ๊ณ์ข ๊ธ์ก ๋ฐ๋์ ์ถ๊ฐ) ํธ๋์ญ์
๋ด์ ๋ชจ๋ ์ฟผ๋ฆฌ๋ ์๋ฒฝํ ์ํ๋์ด์ผ ํ๋ฉฐ, ๋ง์ฝ ํ๋์ ์ฟผ๋ฆฌ๋ผ๋ ์ ์์ ์ผ๋ก ์ข
๋ฃ๋์ง ์์๋ค๋ฉด, ํธ๋์ญ์
๋ด์ ๋ชจ๋ ์ฟผ๋ฆฌ๊ฐ ์ทจ์๋์ด ํธ๋์ญ์
์ ์ํํ์ง ์์๋ ์์ ์ผ๋ก ๋์๊ฐ์ผ ํ๋ค.
์ผ๊ด์ฑ(Consistency)
"ํธ๋์ญ์
์ ์์
์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ ํญ์ ์ผ๊ด์ฑ ์์ด์ผ ํ๋ค."
์ฌ๊ธฐ์ ๋งํ๋ ์ผ๊ด์ฑ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฝ์ด๋ ๊ท์น์ ๋ปํ๋ค. ํธ๋์ญ์
์ ์ํ์ ํตํด DB๊ฐ ๋ณํ ํ์๋ ํธ๋์ญ์
์คํ ์ด์ ์ ์ ์ฝ์ด๋ ๊ท์น์ ๊ทธ๋๋ก ๋ฐ๋ผ์ผ ํ๋ค. ์๋ฅผ ๋ค์ด ์์ ์ก๊ธ ํธ๋์ญ์
์์ ์ ๊ทผํ ‘๊ณ์ข’ ํ
์ด๋ธ์ ‘์์ก์ ํญ์ ์์ ์ ์์ด์ด์ผ ํ๋ค.’๋ผ๋ ์ ์ฝ ์กฐ๊ฑด์ด ์๋ค๊ณ ๊ฐ์ ํ์. ๊ทธ๋ ๋ค๋ฉด ์ก๊ธ ํธ๋์ญ์
์ด ์ํ๋ ํ์ ์์ก๋ ์์ ์ ์์ด์ด์ผ ํ๋ค. ๋ฐ๋ผ์ ์ก๊ธํ๋ ๊ณ์ข์ ์์ก์ด ์ก๊ธํ๋ ค๋ ๊ธ์ก๋ณด๋ค ์๋ค๋ฉด ํธ๋์ญ์
์ ์ํํ์ง ๋ชปํ๊ฒ ํ๋ ๋ฑ์ ์กฐ๊ฑด์ ํตํด ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ค.
๋ ๋ฆฝ์ฑ(Isolation)
"๋ชจ๋ ํธ๋์ญ์
์ ๋ค๋ฅธ ํธ๋์ญ์
์ผ๋ก๋ถํฐ ๋
๋ฆฝ๋์ด์ผ ํ๋ค."
๋์์ ์ฌ๋ฌ ํธ๋์ญ์
์ด ์ํ๋ ๋, ๋ชจ๋ ํธ๋์ญ์
๋ค์ ๋ค๋ฅธ ํธ๋์ญ์
์ ๋ผ์ด๋ค ์ ์๊ณ ํธ๋์ญ์
์ค๊ฐ ๋จ๊ณ์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ ์ ์๋ค. ์ด ์ฑ์ง๋ก ์ธํด ๋์์ ์ฌ๋ฌ ํธ๋์ญ์
์ ์ํ๋ ๋, ๊ฐ ํธ๋์ญ์
๋ค์ด ์์ฐจ์ ์ผ๋ก ํ๋์ฉ ์คํ๋ ๊ฒ๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ํ๋ธ๋ค. ์ฆ, ๋์์ ๊ฐ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ์ ๋ ํ๋์ ํธ๋์ญ์
์ด ์๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ํธ๋์ญ์
์ ์์ฒญ์ ๋ง์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ค. ๋ง์ฝ ์์ก์ด 10000์์ธ A์ ๊ณ์ข์ ๋ํด 8000์ 5000์ ์ก๊ธ์ ์์ฒญํ๋ ๋ ๊ฐ์ง ํธ๋์ญ์
์ด ๋์์ ์ํ๋์ด์ผ ํ๋ค๋ฉด, ๋ ํธ๋์ญ์
์ด ํ๋์ฉ ์ํ๋๋ ๊ฒฐ๊ณผ์ ๊ฐ๊ฒ ๋๋ค. ์ฆ, 8000์์ด ๋จผ์ ์ก๊ธ๋๊ณ ์์ก์ด 2000์์ด ๋ ๊ณ์ข์ 5000์ ์ก๊ธ์ ์์ฒญํ ๊ฒฐ๊ณผ์ ๊ฐ๊ฒ ๋๋ค. (๋ ๋ฒ์งธ ํธ๋์ญ์
์ ์ผ๊ด์ฑ ๋ฌธ์ ๋๋ฌธ์ ์ํ๋์ง ๋ชปํ ๊ฒ์ด๋ค.)
๋
๋ฆฝ์ฑ์ ๋๋จธ์ง ์ฑ์ง๋ค๊ณผ ๋น๊ตํ์ ๋ ๊ฐ์ฅ ์ ์ฐ์ฑ์ด ์๋ ์ ์ฝ์กฐ๊ฑด์ด๋ค. ์๋ํ๋ฉด ๋
๋ฆฝ์ฑ์ ์์ ํ ๋ณด์ฅํ๋ ค๋ฉด ๊ฐ ํธ๋์ญ์
์ ํ๋์ฉ ์์๋๋ก ์ฒ๋ฆฌํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋์์ฑ ์ฑ๋ฅ์ ๋จ์ด๋จ๋ฆฌ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ์ ๋์ ๋ฐ๋ผ ์ฌ๋ฌ ๋จ๊ณ๋ก ๋๋์ด์ ธ ์๋ ๋
๋ฆฝ์ฑ์ ์ดํดํ๊ณ ์ํฉ์ ๋ง๊ฒ ์ ์ฉํ๋ค.
*ํธ๋์ญ์ ์ ๋ ๋ฆฝ์ฑ ๋ ๋ฒจ ๋ณด๊ธฐ
์๊ตฌ์ฑ(Durability)
"ํธ๋์ญ์
์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ ๊ฒฝ์ฐ ๊ทธ ๊ฒฐ๊ณผ๋ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋์ด์ผ ํ๋ค."
๋ง์ฝ ์์คํ
๋ฌธ์ ๋ฑ์ผ๋ก ์ธํด ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์ด์ ์ ์๋ฃ๋ ํธ๋์ญ์
์ ๊ฒฐ๊ณผ๋ ์์ํ ๋ฐ์๋์ด์ผ ํ๋ค. ์ด๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค. ํธ๋์ญ์
์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋์๋ค๋ฉด ๊ทธ์ ๋ํ ๋ก๊ทธ๋ฅผ ๋จ๊ฒจ์ผ ํ๋ฉฐ, ๋ง์ฝ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๊ธฐ ์ ์ ์ค๋ฅ๋ก ์ธํด ์์คํ
์ด ์ข
๋ฃ๋๋ค๋ฉด ํด๋น ํธ๋์ญ์
์ ์คํจ๋ก ๋์๊ฐ๊ณ ์ํํ๊ธฐ ์ด์ ์ผ๋ก ๋์๊ฐ์ผ ํ๋ค.
DBMS๋ ์์์ฑ
์ ์ ์งํ๊ธฐ ์ํด ํ๋ณต ๊ด๋ฆฌ์ ํ๋ก๊ทธ๋จ ์๋์ํด
DBMS๋ ์ผ๊ด์ฑ
์ ์ ์งํ๊ธฐ ์ํด ๋์์ฑ ์ ์ด ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ์กฐ๊ฑด์ ํ์ฉํจ
DBMS๋ ๋
๋ฆฝ์ฑ
์ ์ ์งํ๊ธฐ ์ํด ๋์์ฑ ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์๋์ํด
DBMS๋ ์ง์์ฑ
์ ์ ์งํ๊ธฐ ์ํด ํ๋ณต ๊ด๋ฆฌ์ ํ๋ก๊ทธ๋จ์ ์ด์ฉํจ
ํธ๋์ญ์ ์ฐ์ฐ
commit
ํ๋์ ํธ๋์ญ์
์ด ์ฑ๊ณต์ ์ผ๋ก ์คํ๋์ด ์ ์์ ์ผ๋ก ์ข
๋ฃ๋์์ ๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด๋ ์ํ๋ฅผ ํ์ธํ๊ณ DB ๊ฐฑ์ ์ฐ์ฐ์ด ์๋ฃ๋์์์ ๋ช
์ํ๋ ์ฐ์ฐ์ด๋ค. commit ์ฐ์ฐ์ ํตํด ๊ฒฐ๊ณผ๋ฅผ ์ต์ข
์ ์ผ๋ก DB์ ๋ฐ์ํ๋ค.
rollback
ํ๋์ ํธ๋์ญ์
์ด ๋น์ ์์ ์ผ๋ก ์ข
๋ฃ๋์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด์ฑ์ด ๊นจ์ง ์ํ์ผ ๋, ํธ๋์ญ์
์ ์์์ฑ์ ๋ณด์ฅํ๊ธฐ ์ํด ํด๋น ํธ๋์ญ์
์ ๋ชจ๋ ์ฐ์ฐ์ ์ทจ์ํ๊ณ ์คํํ๊ธฐ ์ด์ ์ ์ํ๋ก ๋๋ฆฌ๋ ์ฐ์ฐ์ ๋งํ๋ค.
ํธ๋์ญ์ ์ ์ํ
- ํ์ฑํ(Active)
: ํธ๋์ญ์ ์ด ์์ ์ ์์ํ์ฌ ์คํ ์ค์ธ ์ํ - ์คํจ(Failed)
: ํธ๋์ญ์ ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ์คํ์ด ์ค๋จ๋ ์ํ - ์ฒ ํ(Aborted)
: ํธ๋์ญ์ ์ด ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์ด Rollback์ฐ์ฐ์ ์ํํ ์ํ - ๋ถ๋ถ ์๋ฃ(Parially committed)
: ํธ๋์ญ์ ์ด ๋ง์ง๋ง ์ฐ์ฐ๊น์ง ์คํํ๊ณ commit ์์ฒญ์ด ๋ค์ด์จ ์งํ์ ์ํ(DB์ ์ต์ข ๊ฒฐ๊ณผ ๋ฏธ๋ฐ์) - ์๋ฃ(committed)
: ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ข ๋ฃ๋์ด commit์ฐ์ฐ์ ํ ํ์ ์ํ(DB์ ์ต์ข ๊ฒฐ๊ณผ ๋ฐ์)
ํธ๋์ญ์ ๋ณต๊ตฌ(recovery)
DBMS๋ ํธ๋์ญ์ ์ํ ๋์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฑฐ๋ ์ฌ์ฉ์์ ์์ฒญ์ผ๋ก ์ธํด ํธ๋์ญ์ ์ด ์ฒ ํ๋ ๊ฒฝ์ฐ, ๋ณต๊ตฌ ์์ ์ ์ํํ๋ค. ์ฌ๊ธฐ์ ๋ณต๊ตฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฅ์ ๋ฐ์ ์ด์ ์ ์ผ๊ด๋ ์ํ๋ก ๋ณต์ํ๋ ๊ฒ์ ๋งํ๋ค. DBMS์์๋ ํ๋ณต ๊ด๋ฆฌ์(Recovery Management)๊ฐ ์ฅ์ ๋ฐ์์ ํ์งํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณต๊ตฌํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
๐ก DB ์ฅ์ 3๊ฐ์ง ์ ํ
ํธ๋์ญ์ ์ฅ์ : ํธ๋์ญ์ ๋ด์ ๋ ผ๋ฆฌ์ ์ค๋ฅ๋ ์์คํ ๋ด์ ์์ ๋ถ์กฑ ๋ฑ์ผ๋ก ์ธํด ํธ๋์ญ์ ์ด ์ค๋จ๋ ๊ฒฝ์ฐ
์์คํ ์ฅ์ : ์ ์ ์ด๋ ํ๋์จ์ด ๊ฒฐํจ์ผ๋ก ์ธํด ์ ์์ ์ธ ์ํ์ ๊ณ์ํ ์ ์๋ ๊ฒฝ์ฐ
๋ฏธ๋์ด ์ฅ์ : ๋์คํฌ์ ๊ฐ์ ์ ์ฅ ์ฅ์น์ ๊ฒฐํจ์ผ๋ก ์ธํด ๋์คํฌ์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ด์ฉ์ด ์์๋ ๊ฒฝ์ฐ
๐ก ๋ณต๊ตฌ ์ฐ์ฐ
UNDO (์ทจ์)
๋ก๊ทธ๋ฅผ ์ด์ฉํด ์ง๊ธ๊น์ง ์คํ๋ ๋ชจ๋ ์ฐ์ฐ์ ์ทจ์ํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๋์ ์ํ๋ก ๋ณต๊ตฌํ๋ ์ฐ์ฐ
REDO (์ฌ์คํ)
๊ฐ์ฅ ์ต๊ทผ์ ์ ์ฅํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต์ฌ๋ณธ์ ๊ฐ์ ธ์ ๋ก๊ทธ๋ฅผ ์ด์ฉํด ๋ณต์ฌ๋ณธ์ด ๋ง๋ค์ด์ง ์ดํ์ ์คํ๋ ๋ชจ๋ ์ฐ์ฐ์ ์ฌ์คํ
์ง์ฐ ๊ฐฑ์ ๊ธฐ๋ฒ(deferred updates)
๋ก๊ทธ ํ์ผ์ ์ด์ฉํ ๋ณต๊ตฌ ๋ฐฉ๋ฒ์ด๋ค. ์ฌ๊ธฐ์ ๋ก๊ทธํ์ผ์ด๋ ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ๋ฐ์ํ ๋๋ง๋ค ์์ฑ๋๋ ํ์ผ์ธ๋ฐ, ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ ๊ธฐ๋ก๋ค์ ์ ์ฅํด๋๋ค. ํธ๋์ญ์
์ด ๋ถ๋ถ ์๋ฃ ์ํ์ ์ด๋ฅด๊ธฐ๊น์ง ๋ฐ์ํ ๋ชจ๋ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ก๊ทธ ํ์ผ์๋ง ์ ์ฅํ๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์๋ ์ปค๋ฐ์ด ๋ฐ์ํ ๋๊น์ง ๊ฐฑ์ ์ ์ง์ฐํ๋ ๊ธฐ๋ฒ์ด๋ค. ์ปค๋ฐ์ด ์ด๋ค์ง๊ธฐ ์ ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๊ฐ ๊ฐฑ์ ๋์ง ์๊ธฐ ๋๋ฌธ์ ํธ๋์ญ์
์ด ์คํจํ ๊ฒฝ์ฐ UNDO ์์ด ๋ก๊ทธ๋ฅผ ํ๊ธฐํ๋ฉด ๋๋ค.
[์ฐ์ฐ → ๋ฐ์ดํฐ ๋ณ๊ฒฝ → ๋ก๊น ] → commit → DB๊ฐฑ์
*[ ] ์์ ์๋ ๊ฒ๋ค์ ํธ๋์ญ์ ๋๋ ๋๊น์ง ๋ฐ๋ณต
์ฆ์ ๊ฐฑ์ ๊ธฐ๋ฒ(immediate updates)
์ง์ฐ ๊ฐฑ์ ๊ธฐ๋ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ก๊ทธ ํ์ผ์ ์ด์ฉํ ๋ณต๊ตฌ ๋ฐฉ๋ฒ์ด๋ค. ํ์ง๋ง ์ง์ฐ ๊ฐฑ์ ๊ธฐ๋ฒ๊ณผ ๋ค๋ฅด๊ฒ ํธ๋์ญ์
์ฐ์ฐ ์ค ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋๋ฉด ํด๋น ๋ด์ฉ์ ๋ก๊ทธํ์ผ๊ณผ DB์ ์ฆ์ ๊ฐฑ์ ํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ค๋ฅ ๋ฐ์ ์, ์ปค๋ฐ์ด ๋ฐ์ํ๊ธฐ ์ ์ ๊ฐฑ์ (๋ฏธ์๋ฃ ๊ฐฑ์ )๋ DB๋ ์์์ฑ์ด ๋ณด์ฅ๋์ง ์๊ธฐ ๋๋ฌธ์ ์ด ๋ฏธ์๋ฃ ๊ฐฑ์ ์ UNDO ํ ํ์๊ฐ ์๋ค. ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ก๊ทธ ํ์ผ์ ์ฐธ์กฐํด ๋ฏธ์๋ฃ๋ ๋ณ๊ฒฝ์ ๋ํด UNDO๋ฅผ ์คํํ๊ณ REDO๋ฅผ ํตํด ํด๋น ํธ๋์ญ์
์ ์ฌ์ํํ๋ค.
[์ฐ์ฐ → ๋ฐ์ดํฐ ๋ณ๊ฒฝ → ๋ก๊น → DB ๊ฐฑ์ (๋ฏธ์๋ฃ ๊ฐฑ์ )] → commit
*[ ] ์์ ์๋ ๊ฒ๋ค์ ํธ๋์ญ์ ๋๋ ๋๊น์ง ๋ฐ๋ณต
์ฒดํฌ ํฌ์ธํธ ๋ณต๊ตฌ ๊ธฐ๋ฒ(checkpoint recovery)
์ค๋ฅ๊ฐ ๋ฐ์ํ์ฌ ํธ๋์ญ์
๋ณต๊ตฌ์ ๋ก๊ทธ ์ด์ฉ ์, ๋ก๊ทธ ์ฒ์๋ถํฐ ๋ง์ง๋ง๊น์ง ๋ชจ๋ ์ฒ๋ฆฌํ๊ธฐ ๋๋ฌธ์ ์ค๋ ๊ฑธ๋ฆฐ๋ค๋ ๋จ์ ์ด ์๋ค. ์ฒดํฌ ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ์ฌ ๋ณต๊ตฌ ์์ ์์ ์ ์กฐ์ ํ์ฌ ํจ์จ์ ์ผ๋ก ์งํํ ์ ์๋ค. ์ฅ์ ๋ฐ์ ์ ์ฒดํฌํฌ์ธํธ ์ด์ ์ ์ฒ๋ฆฌ๋ ํธ๋์ญ์
์ ๋ณต๊ตฌ์์ ์ ์ธํ๊ณ ์ฒดํฌํฌ์ธํธ ์ดํ์ ์ฒ๋ฆฌ๋ ํธ๋์ญ์
๋ง ๋ณต๊ตฌ ์์
์ ์งํํ๋ค. ์ฒดํฌํฌ์ธํธ๋ ํ๋ณต ๊ด๋ฆฌ์๊ฐ ์ ํ ์ผ์ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ์์ฑ๋๋ค.
+ํธ๋์ญ์ ์ ๋ ๋ฆฝ์ฑ ๋ ๋ฒจ
READ UNCOMMITTED
commit ๋์ง ์์ ๋จ๊ณ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ์ ํ์ฉํ๋ ๋จ๊ณ์ด๋ค. ์ด ๋จ๊ณ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํฉ์ฑ์ ์นจํดํ ์ ์์ผ๋ฉฐ ๊ฑฐ์ ๋
๋ฆฝ์ฑ์ด ๋ณด์ฅ๋์ง ์๋ ์์ค์ผ๋ก ๋ณธ๋ค.
*๋ฐ์ดํฐ ์ ํฉ์ฑ: ๋ฐ์ดํฐ๊ฐ ์๋ก ๋ชจ์ ์์ด ์ผ๊ด๋๊ฒ ์ผ์นํ๋ ์ฑ์ง
READ COMMITTED
commit ๋์ด์ผ๋ง ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ ๋จ๊ณ๋ก ๊ฐ์ฅ ๋ณดํธ์ ์ธ ๋
๋ฆฝ์ฑ ๋จ๊ณ์ด๋ค. ์ด ๋จ๊ณ์์๋ NON-REPEATABLE READ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด ๋ฌธ์ ๋ A ํธ๋์ญ์
์์ commit ํ ๋ฐ์ดํฐ๋ฅผ Bํธ๋์ญ์
์์ ์ฝ๋ ๋์ค A ํธ๋์ญ์
์์ ์์ ํ ๋ ๋ค๋ฅธ commit์ด ๋ฐ์ํ ๊ฒฝ์ฐ์ ์ผ์ด๋๋ ๋ฌธ์ ์ด๋ค. B ํธ๋์ญ์
์์๋ ๋์ผํ ํธ๋์ญ์
๋ด์์ ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ฒ ๋๋ค.
REPEATABLE READ
์์์ ์ค๋ช
ํ NON-REPEATABLE READ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ ์ํ์ด๋ค. ์์ ์ ํธ๋์ญ์
๋ฒํธ๋ณด๋ค ๋ฎ์ ํธ๋์ญ์
๋ฒํธ์์ commit ๋ ๋ด์ฉ๋ง ์ฝ๊ฒ ํ๋ ๋จ๊ณ์ด๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ํ๋ฒ ์กฐํํ ๋ฐ์ดํฐ๋ ํธ๋์ ์
๋ด์์ ๋ค์ ์กฐํํด๋ ๊ฐ์ ๋ฐ์ดํฐ๊ฐ ๋์ค๋ ๊ฒ์ด ๋ณด์ฅ๋๋ค. ์ด ๋จ๊ณ์์๋ PHANTOM READ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด ๋ฌธ์ ๋ ํธ๋์ญ์
์ค๊ฐ์ INSERT๋ก ์ธํด ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋์์ ๋ ์ฒ์์ ์ฝ์ง ๋ชปํ ๋ฐ์ดํฐ๊ฐ ๊ฐ์๊ธฐ ์๊ธฐ๋ ๋ฌธ์ ๋ฅผ ๋งํ๋ค. ์ฆ, ํธ๋์ญ์
๊ณผ์ ์์ ๊ธฐ์กด์ ์๋ ์๋ฃ๊ฐ ์๋ก ์ฝํ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
SERIALABLE
๊ฐ์ฅ ์๊ฒฉํ ์์ค์ ๋
๋ฆฝ์ฑ ๋จ๊ณ๋ก ํด๋น ํธ๋์ญ์
์ ์ฝ๊ธฐ๋ฅผ ์ฐจ๋จํ ์ํ์ด๋ค. ์ ํฉ์ฑ ์ธก๋ฉด์์๋ ์๋ฒฝํ์ง๋ง, ๋์์ฑ ์ธก๋ฉด์์๋ ์ต์
์ ์ฑ๋ฅ์ ๋ณด์ฌ ์ค์ ๋ก ์ ์ฉํ๊ธฐ ํ๋ ๋จ๊ณ์ด๋ค.
*Dirty Read: commit ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๋ ๊ฒ
'๐ CS > ๐ DB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] Persistence Framework (SQL Mapper vs ORM) (6) | 2022.09.26 |
---|---|
[DB] ํํฐ์ ๋ (6) | 2022.09.05 |
[DB] SQL (0) | 2022.09.01 |
[DB] ๋ฉด์ ์ง๋ฌธ ์ ๋ฆฌ (0) | 2022.08.18 |
[DB] ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ์ด / ๊ด๊ณํ๋ฐ์ดํฐ๋ฒ ์ด์ค / key (8) | 2022.08.07 |