๐ผ ์์ง๋์ด์ค์ ํธ๋์ญ์
[10๋ถ ํ ์ฝํก] ๐ผ ์์ง๋์ด์ค์ ํธ๋์ญ์ ๋ฅผ ๋ฃ๊ณ ์ ๋ฆฌ.
@TRANSACTION์ ๊ฒฉ๋ฆฌ๋ ๋ฒจ๊ณผ ์ ํ ํ์ ์ ๋ํดโฆ
ํธ๋์ญ์ ์ด๋
์์)
๊ฑฐ๋๊ฐ ์ผ์ด๋ ๋์ ๊ณผ์
- ๊ตฌ๋งค์ ๊ณ์ข์์ 10000์์ ์ถ๊ธ
-
ํ๋งค์ ๊ณ์ข์ 10000์ ์ ๊ธ
- UPDATE๋ฌธ : ๊ตฌ๋งค์ ๊ณ์ข์์ 10000์ ๋นผ๊ธฐ
- UPDATE๋ฌธ: ํ๋งค์ ๊ณ์ข์ 10000์ ๋ํ๊ธฐ
๋ง์ผ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค๋ฉด ๊ตฌ๋งค์์ ๊ณ์ข์์ ๋์ ๋น ์ ธ๋๊ฐ์ง๋ง ํ๋งค์ ๊ณ์ข์ ๋์ด ์ ๊ธ๋์ง ์๋ ๋ถ์์ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ด๋ฐ ์ํฉ์ ๋ฐฉ์งํ๊ณ ์ ๋ฑ์ฅํ ๊ฒ์ด ๋ฐ๋ก Transaction์ด๋ค.
ํ๋์ ํธ๋์ญ์ ์ ๋ชจ๋ โ์ปค๋ฐโ ํน์ โ๋กค๋ฐฑโ๋๋ค.
์ปค๋ฐ: ์ผ์ข ์ ํ์ธ ๋์ฅ์ผ๋ก ํธ๋์ญ์ ์ผ๋ก ๋ฌถ์ธ ๋ชจ๋ ์ฟผ๋ฆฌ๊ฐ ์ฑ๊ณตํ์ฌ ํด๋น ํธ๋์ญ์ ์ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ค์ ๋๋น์ ๋ฐ์ํ๋ ๊ฒ.
๋กค๋ฐฑ : ์ฟผ๋ฆฌ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ทจ์ํ๊ณ DB๋ฅผ ํธ๋์ญ์ ์คํ ์ด์ ๋จ๊ณ๋ก ๋๋๋ฆฌ๋ ๊ฒ์ด๋ค.
ํธ๋์ญ์ ์ ์ฑ์ง
ACID ์ฑ์ง : ํธ๋์ญ์ ์ด ์์ ํ๊ฒ ์ํ๋๋ค๋ ๊ฒ์ ๋ณด์ฅํ๊ธฐ ์ํ ๊ธฐ๋ณธ์ ์ธ ์ฑ์ง
A โ Atomicity : ์์์ฑ
ํธ๋์ญ์ ์ DB์ ๋ชจ๋ ๋ฐ์๋๊ฑฐ๋, ์ ํ ๋ฐ์๋์ง ์์์ผ ํ๋ค. (= ์๋ฃ๋์ง ์์ ํธ๋์ญ์ ์ ์ค๊ฐ ์ํ๋ฅผ DB์ ๋ฐ์ํด์๋ ์ ๋๋ค)
C โ Consistency : ์ผ๊ด์ฑ
์ผ๊ด๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ํ๋ฅผ ์ ์ง๋์ด์ผ ํ๋ค. ํธ๋์ญ์ ์์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ ํญ์ ์ผ๊ด์ฑ ์์ด์ผ ํ๋ค.
I โ Isolation : ๋ ๋ฆฝ์ฑ
๋ ์ด์์ ํธ๋์ญ์ ์ด ๋์ ์คํ๋๊ณ ์์ ๋, ์ด๋ค ํธ๋์ญ์ ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ฐ์ฐ์ ๋ผ์ด๋ค ์ ์๋ค. (= ๊ฐ๊ฐ์ ํธ๋์ญ์ ์ ์๋ก ๊ฐ์ญ ์์ด ๋ ๋ฆฝ์ ์ผ๋ก ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค)
Dโ Durability : ์ง์์ฑ
ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ผ๋ฉด ๊ฒฐ๊ณผ๋ ์๊ตฌํ ๋ฐ์๋์ด์ผ ํ๋ค.
ex) ๋ ๋ฆฝ์ฑ์ ์๋ฒฝํ ๋ณด์ฅํ๋ ค ํ๋ฉด ๋์ผ ๋ฐ์ดํฐ์ 100๊ฐ ์ฐ๊ฒฐ์ด ์ ๊ทผํ์ ์ ์ด 100๊ฐ ์ฐ๊ฒฐ์ ์์ฐจ์ ์ผ๋ก ํด๊ฒฐํด์ผํ๋ค. ๋์์ฑ์ด ๋งค์ฐ ๋จ์ด์ง.
โ ์ด๊ฐ์ ์ํฉ์์ ๋์์ฑ ์ฑ๋ฅ์ ๋ง์กฑ์ํค๊ธฐ ์ํด ๊ฒฉ๋ฆฌ ๋ ๋ฒจ ์ค์ ์ ํตํด ํด๊ฒฐํ๋ค.
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค
๋์์ DB์ ์ ๊ทผํ ๋, ๊ทธ ์ ๊ทผ์ ์ด๋ป๊ฒ ์ ์ดํ ์ง์ ๋ํ ์ค์
ํ์ค์ ์ผ๋ก ๋ค๊ฐ์ง ๋ ๋ฒจ์ด ์กด์ฌํ๋ค.

๋ฐ์ผ๋ก ๊ฐ ์๋ก ๊ฒฉ๋ฆฌ ์์ค์ด ๋์์ง์ง๋ง ์ฑ๋ฅ์ด ๋จ์ด์ง๋ค.
๋ฐ์ดํฐ ์ ํฉ์ฑ๊ณผ ๋์์ฑ์ ๋ฐ๋น๋กํ๋ค.
- READ-UNCOMMITTED
์ปค๋ฐ ์ ์ ํธ๋์ญ์ ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ๋ด์ฉ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ฝ๋ ๊ฒ์ ํ์ฉ
ํ ํธ๋์ญ์ ์ด ์์ง ์ปค๋ฐ๋์ง ์์ ์ํ์์๋ ๋ถ๊ตฌํ๊ณ ๋ณ๊ฒฝ๋ ๊ฐ์ ๋ค๋ฅธ ํธ๋์ญ์ ์์ ์ฝ์ ์ ์๋ค.

์ ๊ทธ๋ฆผ์์ Transaction A๊ฐ ์์ง ๋๋์ง ์์ ์์ (์ปค๋ฐx) ์์ Transaction B๊ฐ ์กฐํ๋ฅผ ์๋ํ๋ค. ์ปค๋ฐ๋์ง ์๊ณ ๋ณ๊ฒฝ๋ Transaction A์ ๊ฐ์ ์กฐํํ๊ฒ ๋๋ค.
READ_UNCOMMITTED ๋ ๋ฒจ์์๋ Dirty Read ๋ฌธ์ ๊ฐ ์กด์ฌํ๋ค.
๋ฟ๋ง ์๋๋ผ Non-Repeatable Read, Phantom Read ๋ฌธ์ ๋ ์กด์ฌํ๋ ์ดํ ๊ฒฉ๋ฆฌ๋ ๋ฒจ์ ์ค๋ช
- READ-COMMITTED
์ปค๋ฐ์ด ์๋ฃ๋ ํธ๋์ญ์ ์ ๋ณ๊ฒฝ์ฌํญ๋ง ๋ค๋ฅธ ํธ๋์ญ์ ์์ ์กฐํ ๊ฐ๋ฅ
ํธ๋์ญ์ ์ด ์ด๋ฃจ์ด์ง๋ ๋์ ๋ค๋ฅธ ์ฌ์ฉ์, ํธ๋์ญ์ ์ ํด๋น ๋ฐ์ดํฐ์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํ๋ค.

์์ง ํธ๋์ญ์ ์ด ์ปค๋ฐ๋์ง ์์ ์ํ๋ผ๋ฉด ๋ณ๊ฒฝ ์ด์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ฉฐ ์ปค๋ฐ์ด ์๋ฃ๋ ์ดํ๋ผ๋ฉด ๋ณ๊ฒฝ ์ดํ์ ๋ฐ์ดํฐ ๊ฐ์ ์ฝ์ด์จ๋ค. (โํํโ โ โํํโ)
READ_COMMITTED๋ ๋ฒจ์ READ_UNCOMMITTED๋ ๋ฒจ์์ ๋ฐ์ํ๋ Dirty Read ํ์์ด ์ผ์ด๋์ง ์๋๋ค.
ํ์ง๋ง ์ฌ์ ํ Non-Repeatable Read, Phantom Read ํ์์ด ์ผ์ด๋๋ค.
- REPEATABLE-READ
READ_COMMITTED์ ๋์ผํ๊ฒ ์ปค๋ฐ์ด ์๋ฃ๋ ๋ฐ์ดํฐ๋ง ์ฝ์ด์ฌ ์ ์๋ค.
READ_COMMITTED์ ๋ค๋ฅธ์ ์, ํ ํธ๋์ญ์ ์ด ์กฐํํ ๋ฐ์ดํฐ๋ ํธ๋์ญ์ ์ด ์ข ๋ฃ๋ ๋ ๊น์ง ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๋ณ๊ฒฝํ๊ฑฐ๋ ์ญ์ ํ๋๊ฒ์ ๋ง์ผ๋ฏ๋ก, ํ ๋ฒ ์กฐํํ ๋ฐ์ดํฐ๋ ๋ฐ๋ณต์ ์ผ๋ก ์กฐํํด๋ ๊ฐ์ ๊ฐ์ ๋ฐํํ๋ค๋ ์ ์ด๋ค.

์ ๊ทธ๋ฆผ์์์ ๊ฐ์ด, ํธ๋์ญ์ A๊ฐ ์ปค๋ฐ์ ํ ์ดํ ์์ ์ ํธ๋์ญ์ B๊ฐ ๋ฐ์ดํฐ๋ฅผ ์กฐํํด๋ ๋ณ๊ฒฝ ์ด์ ๊ฐ์ ๋ฐํํ๋ ๊ฒ์ ์ ์ ์๋ค. ์๋๋ฉด ํธ๋์ญ์ B๊ฐ ํธ๋์ญ์ ์ UPDATE ์ฟผ๋ฆฌ์ ์ํ ๋ณ๊ฒฝ ์ด์ ์์ ์ ์ด๋ฏธ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ๊ธฐ ๋๋ฌธ์ด๋ค.
REPEATABLE-READ ๋ ๋ฒจ์์๋ ์ฌ์ ํ Phantom Read๋ผ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
- SERIALIZABLE
๊ฐ์ฅ ๋์ ์์ค์ ๊ฒฉ๋ฆฌ๋ ๋ฒจ์ด์, ๊ฐ์ฅ ๋ฎ์ ์์ค์ ๋์์ฑ์ ๊ฐ์ง๋ค.
ํ ํธ๋์ญ์ ์์ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฅธ ํธ๋์ญ์ ์์ ์ ๊ทผ ๋ถ๊ฐ
ํธ๋์ญ์ ์ ACID ์ฑ์ง์ด ์๊ฒฉํ๊ฒ ์ง์ผ์ง๋ ๋์์ฑ์ด ๊ฐ์ฅ ๋จ์ด์ง๋ค.
๋จ์ select ์กฐํ๋ง์ผ๋ก๋ ํธ๋์ญ์ ์ด ์ปค๋ฐ ๋ ๋๊น์ง ๋ชจ๋ ๋ฐ์ดํฐ์ ์ ๊ธ์ด ๊ฑธ๋ ค ๋ค๋ฅธ ํธ๋์ญ์ ์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋๋ค.
๊ฒฉ๋ฆฌ ์์ค ์ ๋ฆฌ ํ

ํธ๋์ญ์ ์ ํ ํ์
- ํธ๋์ญ์ ์ ๊ฒฝ๊ณ์์ ํธ๋์ญ์ ์ด ์ด๋ป๊ฒ ๋์ํ ๊ฒ์ธ๊ฐ
ํธ๋์ญ์ ์ด ์์ํ๊ฑฐ๋ ์ฐธ์ฌํ๋ ๋ฐฉ๋ฒ์ ๊ดํ ์ค์

์์ ์ฝ๋์์์ ๊ฐ์ด ํธ๋์ญ์ ์ด ์ฒ๋ฆฌ๋๋ ๊ณผ์ ์์์ ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ฒ๋ฆฌ๋๋ ๊ฒฝ์ฐ๊ฐ ์๋๋ฐ ๋ถ๋ชจ ํธ๋์ญ์ ์ ์ ๋ฌด์ ๋ฐ๋ผ ํ์ ๋ณ๋ก ํธ๋์ญ์ ์ ๊ฒฝ๊ณ๋ฅผ ์ค์ ํ ์ ์๋ค.

์คํ๋ง์์ ์ ๊ณตํ๋ ์ ํ ํ์ ์ ์ด 7๊ฐ์ง๊ฐ ์กด์ฌํ๋ค.
๋๊ธ๋จ๊ธฐ๊ธฐ