์น ๊ฐ๋ฐ์ ์ธก๋ฉด์์ ๋ณด๋ ์ธ์ ์ด๋ผ๊ณ ํจ์ ์ฌ์ฉ์์ ์น ํน์ ์ฑ๊ณผ์ ์ฌ์ด์์ ๋ฐ์ํ๋ ์ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๊ณ ์ ์งํ๋ ๋ฐฉ๋ฒ์ด๋ผ๊ณ ๋งํฉ๋๋ค. ์ฆ, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ์์ ์์์ผ๋ก ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ด๋ จ ์์ ์ ์ํํ ํ ์ ์์ ์ข ๋ฃํ๊ธฐ๊น์ง ์ ์ฒด๊ธฐ๊ฐ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฌํ ์ธ์ ์ ์ ์ ๊ฐ ๋ก๊ทธ์ธ์ ํ๋ฉด ์์ฑ์ด ๋๊ณ ์ธ์ ์ ์ํด์ ์ ์ ๊ฐ ์ด๋ค ํ๋์ ํ๋์ง ์ถ์ ๋ฐ ํ์ธ์ ํ ์ ์๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ , ํน๋ณํ ์์ธ์ ์ํ ์ข ๋ฃ ํน์ ๋ก๊ทธ์์์ด ๋๊ฒ์ด ์๋๋ฉด ์ธ์ ์ ๊ณ์ ์๋ฒ์ ๋จ์์๊ฒ ๋ฉ๋๋ค. ์ด ๋ฐ์ดํฐ ๊ฐ์ ๋ํ ํค ๊ฐ(ID)์ ํด๋ผ์ด์ธํธ์ ๋จ๊ฒจ์ ธ ์ ์ฅ๋ฉ๋๋ค.
๊ทธ๋ฌ๋, ์ผ๋ฐ์ ์ผ๋ก ์ธ์ ์ ๋ง๋ฃ ์๊ฐ์ด ์ง๋๋ฉด ํด๋น ์ธ์ ์ ์ฌ์ฉ์ด ๋์ง ์๊ณ ์ด๊ธฐ์ ์ค์ ํ ์ธ์ ์ ๋ง๋ฃ ์กฐ๊ฑด์ ๋ฐ๋ผ ์๋์ผ๋ก ์ ๊ฑฐ๋๊ฑฐ๋ ์ฃผ๊ธฐ์ ์ผ๋ก ์ธ์ ์ ์ง์ ์ ๋ฆฌ๋ฅผ ํด์ค์ผ ํฉ๋๋ค.
More Infos
- ๐ช Cookie
์น ์ฌ์ดํธ์ ์ ์ํ ๋ ์๋ฒ์ ์ํด ์ฌ์ฉ์์ ์ปดํจํฐ์ ์ ์ฅ๋๋ ์ ๋ณด๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ ๊ฒ ์ ์ฅ๋ ์ ๋ณด๋ฅผ ์น์ ํ์ํ ๋ ๋ง๋ค ์ฌ์ฌ์ฉ์ ํ๊ฒ ๋ฉ๋๋ค.
์ ์ฒ๋ผ ์ฒ์ ์ ์ํ๋ ๊ฒฝ์ฐ์๋ ํด๋ผ์ด์ธํธ์์ ์์ฒญ์ ํ๋ฉด ์๋ฒ๋ ์์ฒญ์ ์ํํ๊ณ ํด๋ผ์ด์ธํธ์ ์ ๋ณด๋ฅผ ๋ด์ ์ฟ ํค๋ฅผ ์์ฑํ์ฌ ๊ฐ์ด ๋ณด๋ ๋๋ค.
๊ทธ๋ ๊ฒ ์๊ธด ์ฟ ํค์ ์ํด์stateless
์ ํด๊ฒฐํ๊ณ ๋น ๋ฅธ ์๋ต์ ํ ์ ์๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ์ฟ ํค๋ ํด๋ผ์ด์ธํธ์์ ๋ฐ์ดํฐํ์ผ๋ก์จ ์๊ฒจ ํค๊ณผ ๋ฐ์ดํฐ ๊ฐ์ ๋ชจ๋ ํฌํจํ๊ธฐ ๋๋ฌธ์ ์ค๋ํ์ ์ํ์ ๋ ธ์ถ์ด ๋ ์ ์๊ธฐ ๋๋ฌธ์ ์ธ์ ์ด ์ด๋ฌํ ๋ณด์์ ์ฝ์ ์ ๋ณด์ํ์ฌ ์ค๋ค๊ณ ํ ์ ์์ต๋๋ค.
Transaction
์ ์์
์ ์์ ์ฑ์ ๋ณด์ฅํด ์ฃผ๋ ๊ฒ์ด๋ค. ๋
ผ๋ฆฌ์ ์ธ ์์
์
์ ๋ชจ๋ ์๋ฒฝํ๊ฒ ์ฒ๋ฆฌํ๊ฑฐ๋, ์ฒ๋ฆฌํ์ง ๋ชปํ ๊ฒฝ์ฐ์๋ ์๋์ ์ํ๋ก ๋ณต๊ตฌํ์ฌ ์์
์ ์ผ๋ถ๋ง ์ ์ฉ์ด ๋๋ Partial update ํ์์ ๋ง์์ฃผ๋ ๊ธฐ๋ฅ์
๋๋ค.
Lock
์ ์๋ฅผ๋ค์ด ํ๋์ ๋ ์ฝ๋๋ฅผ ์ฌ๋ฌ ์ปค๋ฅ์
์์ ๋์์ ๋ณ๊ฒฝํ๋ ค๊ณ ํ ๋ Lock์ด ์๋ค๋ฉด ํด๋น ๋ ์ฝ๋๋ ์ด๋ป๊ฒ ๋ณ๊ฒฝ์ด ๋ ์ง ์์ธกํ ์ ์๋ ์ํ๊ฐ ๋ฉ๋๋ค. ๊ทธ๋์ ์์ฒญํ ๋ฐ์ดํฐ์ ๋ํด์ ํ ์์ ์ ํ๋์ ์ปค๋ฅ์
๋ง ๋ณ๊ฒฝํ ์ ์๊ฒ ํด์ฃผ๋ ์ญํ ์ ํฉ๋๋ค. ์ด๋ก์จ ๋ฐ์ดํฐ์ ์ ํฉ์ฑ์ ๋ณด์ฅํ๋ ์ญํ ์ ํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฌํ ๊ณผ์ ์์ ํ๋์ ํน์ ์ฌ๋ฌ ํธ๋์ญ์
๊ฐ์ ์์
๋ด์ฉ์ ์ด๋ป๊ฒ ๊ณต์ ํ๊ณ ์ฐจ๋จํ ๊ฒ์ธ์ง๋ฅผ ๊ฒฐ์ ํ๋ ๋ ๋ฒจ์ ์๋ฏธํ๋ ๊ฒ์ด ๊ฒฉ๋ฆฌ ์์ค์
๋๋ค.: ์์์ ์ธ๊ธํ๋ฏ์ด ํ๋์ ๋
ผ๋ฆฌ์ ์ธ ์์
์
์ ํ๋ ์ด์์ ์ฟผ๋ฆฌ๊ฐ COMMIT
์ ์คํ ํ์๋ ์์
์
์์ฒด๊ฐ ์จ์ ํ ์ ์ฉ๋๊ฑฐ๋ ์๋ฌด๊ฒ๋ ์ ์ฉ๋์ง ์์์ผํจ์ ์ฆ, Partial update
ํ์์ ๋ง์์ฃผ๋ ๊ฒ์
๋๋ค. DB์์ ๋ฐ์ํ๋ ์ผ๋ จ์ ์ฐ์ฐ๋ค์ ํ๋์ ๋
ผ๋ฆฌ์ ์ธ ๋จ์๋ก ๋ฌถ์ด์ ์์์ฑ, ์ผ๊ด์ฑ, ๋
๋ฆฝ์ฑ, ์ง์์ฑ์ ACID์ ์ฑ์ง์ ๋ณด์ฅํฉ๋๋ค.
๐ก ์ดํด๊ฐ ๋์ง ์๊ธฐ ๋๋ฌธ์ ๋ ๊ตฌ์ฒด์ ์ผ๋ก ์์ฑํ๊ฒ ์ต๋๋ค. ํธ๋์ญ์ ์ ์ค๋ช ํ ๋์ ์์์ฑ์ด๋ผ๊ณ ํจ์ ์งํ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ์ฐ์ฐ์ด ์ข ๋ฃ๊ฐ ๋์์ ๊ฒฝ์ฐ์ ์ค๊ฐ์ ์ด๋ ํ ์ฐ์ฐ๋ ๋จ์์์ง ์๊ณ ์ฑ๊ณตํ ๊ฒฐ๊ณผ๋ค๊น์ง ๋ชจ์กฐ๋ฆฌ ๋กค๋ฐฑ ๋์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค!
๐ก ์๋ฅผ๋ค์ด ์๋ฃ๋ฅผ ์ฃผ๋ฌธํ๋ ์ฃผ๋ฌธ ํธ๋์ญ์ ์ด ์คํ๋ ํ์ ์ ํ์ ์๋์ด ์์๋ก ๊ฐ์๋ ์๋๋ค. ์๋ฅผ๋ค์ด ์๋ฃ์ ์ฌ๊ณ ๊ฐ 10๊ฐ์ธ๋ฐ 15๊ฐ๋ฅผ ์ฃผ๋ฌธ์ ์๋ํ ๊ฒฝ์ฐ์ ๊ฑฐ๋ถ๋์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
๐ก ๋์ ์ฃผ๋ฌธ ์ฒ๋ฆฌ๋ฅผ ํ ๋ ๋์์ ์คํ์ด ๋์๋ค๊ณ ํด๋ ๊ฐ ํธ๋์ญ์ ์ ์๋ก์๊ฒ ์ํฅ์ ์ฃผ์ง ์์์ผ ํฉ๋๋ค.
๐ก ํธ์์ ์์ ์๋ฐ๊ฐ ์ฃผ๋ฌธ์ ํด์ผํ๋ ์ํฉ์์ ์ฃผ๋ฌธ์ ์๋ฃํ ์์ ์์ ์ปดํจํฐ์ ์ค๋ฅ๋ก ์ฌ๋ถํ ์ด ๋์์๋ ์๋ฃ๋ ์ฃผ๋ฌธ์ ํ์์๋ ๊ด๋ จ ์ฃผ๋ฌธ ์ ๋ณด๊ฐ DB์ ๋จ์ ์์ด์ผ ํฉ๋๋ค. ์ฆ, ๋ค์ํ ์ฅํด ์ํฉ์์๋ ํธ๋์ญ์ ์ ๊ฒฐ๊ณผ๊ฐ ์๊ตฌ์ ์ผ๋ก ๋ณด์กด๋์ด์ผ ํจ์ ์๋ฏธํฉ๋๋ค.
๊ฒ์ํ์ ๊ธ์ ์ ์ฅํ๋ ์์
1) ์ฒ๋ฆฌ ์์
โบ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ปค๋ฅ์ ์์ฑ
โบ ํธ๋์ ์ ์์
2) ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ฌ๋ถ ํ์ธ
3) ์ฌ์ฉ์์ ๊ธ์ฐ๊ธฐ ๋ด์ฉ์ ์ค๋ฅ ์ฌ๋ถ ํ์ธ
4) ์ฒจ๋ถ๋ก ์ ๋ก๋๋ ํ์ผ ํ์ธ ๋ฐ ์ ์ฅ
5) ์ฌ์ฉ์์ ์ ๋ ฅ ๋ด์ฉ์ DBMS์ ์ ์ฅ
6) ์ฒจ๋ถ ํ์ผ ์ ๋ณด๋ฅผ DBMS์ ์ ์ฅ
7) ์ ์ฅ๋ ๋ด์ฉ ๋๋ ๊ธฐํ ์ ๋ณด๋ฅผ DBMS์์ ์กฐํ
8) ๊ฒ์๋ฌผ ๋ฑ๋ก์ ๋ํ ์๋ฆผ ๋ฉ์ผ ๋ฐ์ก ๐จ
9) ์๋ฆผ ๋ฉ์ผ ๋ฐ์ก ์ด๋ ฅ์ DBMS์ ์ ์ฅ
โบ ํธ๋์ญ์ ์ข ๋ฃ(COMMIT)
โบ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ๋ฐ๋ฉ
10) ์ฒ๋ฆฌ ์๋ฃ
์์ ์์์์๋ 3๊ฐ์ง ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ ์ ์๋ค.
START TRANSACTION
) ์ปค๋ฅ์
์ ์์ ํ๋ ์๊ฐ์ด ๊ธธ์ด์ง์๋ก ์ฌ์ฉ ๊ฐ๋ฅํ ์ฌ์ ์ปค๋ฅ์
์ ๊ฐ์๊ฐ ์ค์ด๋ค๊ฒ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ถํ์ํ 2,3๋ฒ์ ํธ๋์ญ์
์ ํฌํจ ์ํฌ ํ์๊ฐ ์๋ค.๊ฒ์ํ์ ๊ธ์ ์ ์ฅํ๋ ์์ - ์ฌ์ค๊ณ
1) ์ฒ๋ฆฌ ์์
2) ์ฌ์ฉ์์ ๋ก๊ทธ์ธ ์ฌ๋ถ ํ์ธ
3) ์ฌ์ฉ์์ ๊ธ์ฐ๊ธฐ ๋ด์ฉ์ ์ค๋ฅ ์ฌ๋ถ ํ์ธ
4) ์ฒจ๋ถ๋ก ์ ๋ก๋๋ ํ์ผ ํ์ธ ๋ฐ ์ ์ฅ
โบ ๋ฐ์ดํฐ ๋ฒ ์ด์ค ์ปค๋ฅ์ ์์ฑ
5) ์ฌ์ฉ์์ ์ ๋ ฅ ๋ด์ฉ์ DBMS์ ์ ์ฅ
6) ์ฒจ๋ถ ํ์ผ ์ ๋ณด๋ฅผ DBMS์ ์ ์ฅ
โบ ํธ๋์ญ์ ์ข ๋ฃ(COMMIT)
7) ์ ์ฅ๋ ๋ด์ฉ ๋๋ ๊ธฐํ ์ ๋ณด๋ฅผ DBMS์์ ์กฐํ
8) ๊ฒ์๋ฌผ ๋ฑ๋ก์ ๋ํ ์๋ฆผ ๋ฉ์ผ ๋ฐ์ก
โบ ํธ๋์ ์ ์์
9) ์๋ฆผ ๋ฉ์ผ ๋ฐ์ก ์ด๋ ฅ์ DBMS์ ์ ์ฅ
โบ ํธ๋์ญ์ ์ข ๋ฃ(COMMIT)
โบ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ปค๋ฅ์ ๋ฐ๋ฉ
10) ์ฒ๋ฆฌ ์๋ฃ
Commit
์ฐ์ฐ์ ๋ชจ๋ ์์
๋ค์ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ๊ฒ ๋ค๊ณ ํ์ ํ๋ ๋ช
๋ น์ด๋ก์, ์ฒ๋ฆฌ๊ณผ์ ์ DB์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋์ ์ด๋ฌํ Commit ์ฐ์ฐ์ด ์์๋ ์์ ์์ Update๋ฌธ์ ํตํ๋ฉด์ ์ญ์ ์ ์ฌ ์ฝ์
์ ๊ณผ์ ์ ์ ๋๋ก ๊ฑฐ์น๊ฒ ๋๋ฉด ์๊ตฌ์ ์ฅ์ด ๋๋ ๊ฒ์
๋๋ค.
RollBack
์ฐ์ฐ์ ์์
์ค ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ฌ ํธ๋์ญ์
์ ์ฒ๋ฆฌ๊ณผ์ ์์ ๋ฐ์ํ ๋ณ๊ฒฝ์ฌํญ์ ์ทจ์ํ๋ ๋ช
๋ น์ด์
๋๋ค. ํธ๋์ญ์
์ ์์์ฑ์ ์ํ ์์
์ ์ํด์ ์ฌ์ฉ๋๋ ๊ธฐ๋ฅ์
๋๋ค. ์ฆ ์ฐ์ฐ ๊ณผ์ ์์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ ๋๋ฉด ๋ชจ๋ ๊ฒ์ ์ทจ์ํ๊ณ ๋ฐ๋ก ์ ์ ์์
์ฆ ์ด์ Commit
ํ ๊ณณ๊น์ง ๋ณต๊ตฌ๋ฅผ ํ๊ฒ ๋ฉ๋๋ค.
์ฌ์ฉ์๊ฐ ๋ฐ๋ก Commit ์ฐ์ฐ์ ์คํํ์ง ์์๋ ์๋์ผ๋ก ๋ชจ๋ ๋ช ๋ น๋ค์ด Commit ๋์ด ์ฆ์ ๋ฐ์๋๋ ๋ช ๋ น์ด ์ ๋๋ค. ๋๋ถ๋ถ์ Laptop์์ ์ด๊ฒ์ด ํ์ฑํ๋์ด ์๋๋ฐ ์ด๊ฒ์ ๋๋๋ก์ด๋ฉด ํด์ ํ์ฌ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค. ์๋ํ๋ฉด 1,2,3 ์ด๋ผ๋ ์์ ์ ํ ๋ ์คํ ์ปค๋ฐ์ด ํ์ฑํ๋ ์ํ์์ 1๋ฒ์ ์ํํ์์ผ๋ 2,3๋ฒ์์ ์๋ฌ๊ฐ ๋ฌ๋ค๋ฉด ๋ค์ ์ ์ฒด์ ์ธ ์์ ์ ์๋ด์ผํ๋๋ฐ ๋๋๋ฆฌ์ง ๋ชปํด๋ฒ๋ฆฌ๋ ๋ถ์์ฌ๊ฐ ๋ฐ์ํ ์ ์๋ค.
show variables like `autocommit%`;
์์ ๊ตฌ๋ฌธ์ ์
๋ ฅํ์๋ ON
์ด ๋์ค๋ ๊ฒฝ์ฐ๋ ์ง๊ธ ํ์ฑํ ์ํ์ด๊ธฐ ๋๋ฌธ์
SET AUTOCOMMIT = TRUE; --> ์ค์
SET AUTOCOMMIT = FALSE; --> ํด์
์ด๋ฌํ Statement๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ์ ๋ฐ๊ฟ์ค์ผํ๋ค.
Transaction Isolation level
์ ์ฌ๋ฌ ํธ๋์ญ์
์ด ๋์์ ์ฒ๋ฆฌ๋ ๋ ํน์ ํธ๋์ญ์
์ด ๋ค๋ฅธ ํธ๋์ญ์
์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์กฐํํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๊ฒ ํ์ฉํ ์ง ๋ง์ง๋ฅผ ๊ฒฐ์ ํ๋ ๊ฒ์
๋๋ค. ์ด๋ฌํ ๊ฒฉ๋ฆฌ ์์ค์ ํฌ๊ฒ 4๊ฐ์ง๋ก ๋๋๊ฒ ๋ฉ๋๋ค. ๊ฒฉ๋ฆฌ ์์ค์ด ๋ค๋ก ๊ฐ๋ฉด์ ๋ฐ์ดํฐ ๊ณ ๋ฆฝ ์ ๋๊ฐ ๋์์ง๋ฉฐ, ๋์ ์ฒ๋ฆฌ ์ฑ๋ฅ๋ ๋จ์ด์ง๋ ๊ฒ์ด ์ผ๋ฐ์ ์ด๋ผ๊ณ ๋ณผ ์ ์์ต๋๋ค. ์์ค์ด SERIALIZABLE
์ด ์๋๋ผ๋ฉด ํฌ๊ฒ ๊ทธ์ ์์๋ ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
ํธ๋์ญ์
๊ฒฉ๋ฆฌ ์์ค READ UNCOMMITTIED์ ๋ํด์ ์ค๋ช
ํด์ฃผ์ธ์.
READ UNCOMIMMITTED
๋ ์ผ๋ฐ์ ์ผ๋ก ์จ๋ผ์ธ ์๋น์ค ์ฉ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
์์ ์ฌ์ง์ READ UNCOMMITTED
์ ์์์
๋๋ค. ์ฌ์ฉ์ B๊ฐ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ์ปค๋ฐํ๊ธฐ ์ ์ ์ฌ์ฉ์ B๊ฐ emp_no = 500000
์ ๊ฒ์ํ๊ณ ์์ต๋๋ค. ํ์ง๋ง ์ฌ์ฉ์ B๊ฐ ์ฌ์ฉ์ A๊ฐ ์ปค๋ฐ์ ํ๊ธฐ๋ ์ ์ํ์์๋ ์กฐํํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ์ฌ์ฉ์ A๊ฐ ์ ์ ์๋ ์๋ก๋ก ์ธํด ๋กค๋ฐฑ์ ํ๋ค๊ณ ํด๋ ์ฌ์ฉ์ B๋ ์ฌ์ ํ ์ฌ์ฉ์ A์ ๋ํ ํ
์ด๋ธ์ ๋๊ฐ์ด ๋ณผ ๊ฒ์
๋๋ค. ์ด์ฒ๋ผ ์ด๋ค ํธ๋์ญ์
์์ ์ฒ๋ฆฌํ ์์
์ด ์๋ฃ๋์ง ์์๋๋ฐ๋ ๋ค๋ฅธ ํธ๋์ญ์
์์ ๋ณผ ์ ์๋ ํ์์ Dirty Read
๋ผ๊ณ ํฉ๋๋ค. ์ด๋ฌํ ๋ํฐ ๋ฆฌ๋๊ฐ ํ์ฉ๋๋ ๊ฒฉ๋ฆฌ ์์ค์ด READ UNCOMMITTED
์
๋๋ค. ์ด Isolation level
์ ์ ํฉ์ฑ์ ๋ฌธ์ ๊ฐ ๋ง์ ์์ค์
๋๋ค.
ํธ๋์ญ์
๊ฒฉ๋ฆฌ ์์ค READ COMMITTED์ ๋ํด์ ์ค๋ช
ํด์ฃผ์ธ์.
READ COMMITTED
๋ ์ค๋ผํด DBMS์์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒฉ๋ฆฌ ์์ค์ด๋ฉฐ, ์จ๋ผ์ธ ์๋น์ค์์ ๊ฐ์ฅ ๋ง์ด ์ ํ๋๋ ๊ฒฉ๋ฆฌ ์์ค์
๋๋ค. ์ด ๋ ๋ฒจ์์๋ Dirty Read
๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ด๋ค ํธ๋์ญ์
์์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋๋ผ๋ ์ปค๋ฐ์ด ์๋ฃ๋ ๋ฐ์ดํฐ๋ง ๋ค๋ฅธ ํธ๋์ญ์
์์ ์กฐํํ ์ ์๊ธฐ ๋๋ฌธ์
๋๋ค.
์ ์ฌ์ง์์๋ ์ฌ์ฉ์ A๋ emp_no = 500000์ธ ์ฌ์์ first_name์ Toto๋ก ๋ณ๊ฒฝ ํ๋๋ฐ ์ด๋ ์๋ก์ด ๊ฐ์ธ Toto๋ ์ฆ์ ๊ธฐ๋ก์ด ๋๊ณ ์ด์ ๊ฐ์ Undo ์์ญ์ผ๋ก ๋ฐฑ์
๋ฉ๋๋ค. ํ์ง๋ง ์ปค๋ฐ์ ์ํํ๊ธฐ ์ ์ ์ฌ์ฉ์ B๊ฐ SELECT๋ฅผ ํ์ฌ ์กฐํ๋ฅผ ํ ๊ฒฝ์ฐ Undo ์์ญ์์ ์ด์ ๊ฐ์ ๋ถ๋ฌ์ ํ์ํ๊ฒ ๋ฉ๋๋ค. ํ์ง๋ง ํด๋น ์์ค์์ NON_REPEATABLE READ
๋ผ๋ ๋ถ์ ํฉ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋๋ฐ, ์ฌ์ฉ์ A๊ฐ ๊ฐ์ ๋ณ๊ฒฝํ๊ณ ์ปค๋ฐ์ ํ๊ธฐ ์ ์ ์ฌ์ฉ์ B๊ฐ ๊ฒ์์ ํ๋ฉด ํด๋น ๋ ์ฝ๋๋ฅผ ์ฐพ์ง ๋ชปํ ๊ฒ์
๋๋ค. ์ด๋ ๊ฒ ์ปค๋ฐ์ ํ๊ธฐ ์ ํ์ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด๊ฒ ๋์ค๊ธฐ ๋๋ฌธ์ ํธ๋์ญ์
์ ์ ํฉ์ฑ์ ์ด๊ธ๋๋ค๊ณ ํ ์ ์์ต๋๋ค.
ํธ๋์ญ์
๊ฒฉ๋ฆฌ ์์ค REPEATABLE READ์ ๋ํด์ ์ค๋ช
ํด์ฃผ์ธ์.
REPEATABLE READ
๋ MySQL์ INNODB
์์ง์์ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉ๋๋ ๊ฒฉ๋ฆฌ ์์ค์
๋๋ค. ์ด๋ฌํ REPEATABLE READ
๋ MVCC(Multi Version Concurrency Control)
์ ์ํด ์ธ๋ ์์ญ์ ๋ฐฑ์
๋ ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ด์ฉํ์ฌ ๋์ผ ํธ๋์ญ์
๋ด์์ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ค ์ ์๊ฒ ๋ณด์ฅํฉ๋๋ค. READ COMMITTED
๋ MVCC๋ฅผ ์ฌ์ฉํ์ฌ COMMIT๋๊ธฐ ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ณด์ฌ์ฃผ์ง๋ง, ์ธ๋ ์์ญ์ ๋ฐฑ์
๋ ๋ ์ฝ๋์ ์ฌ๋ฌ ๋ฒ์ ๊ฐ์ด๋ฐ ๋ช ๋ฒ์งธ ์ด์ ๋ฒ์ ๊น์ง ์ฐพ์ ๋ค์ด๊ฐ๋๋์์ ์ฐจ์ด๊ฐ ์กด์ฌํ๋ค. ๋ฐ์ด๋๋ฆฌ ๋ก๊ทธ๋ฅผ ๊ฐ์ง MySQL ์๋ฒ์์๋ ์ต์ REPEATABLE READ
๊ฒฉ๋ฆฌ ์์ค ์ด์์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด๋๋ READ COMMITTED
Isolation level์์ ๋ฐ์ํ๋ NON-REPEATABLE READ
๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
๐จMore infos
๋ชจ๋ InnoDB์ ํธ๋์ญ์ ์ ๊ณ ์ ํ ๋ฒํธ๋ฅผ ๊ฐ์ง๋ฉฐ, ์ธ๋ ์์ญ์ ๋ฐฑ์ ๋ ๋ชจ๋ ๋ ์ฝ๋์๋ ๋ณ๊ฒฝ์ ๋ฐ์์ํจ ํธ๋์ญ์ ์ ๋ฒํธ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ๋ง์ฝ ์ด๋ฌํ ๋ฐฑ์ ๋ฐ์ดํฐ๋ฅผ InnoDB ์์ง ์์ฒด์ ์ผ๋ก ๋ถํ์ํจ์ ๋๋ผ๋ฉด ์ฃผ๊ธฐ์ ์ผ๋ก ์ญ์ ๋๋ฉฐ ํ์ฌ์REPEATABLE READ
์์ค์์๋ MVCC๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํด์ ์คํ ์ค์ธ ํธ๋์ญ์ ๊ฐ์ด๋ฐ ๊ฐ์ฅ ์ค๋๋ ํธ๋์ญ์ ๋ฒํธ๋ณด๋ค ์์ ์ธ๋ ์์ญ์ ๋ฐ์ดํฐ๋ ์ญ์ ํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ ์ฌ์ง์ ๋ณด๋ฉด ์ฌ์ฉ์ A์TRX_ID = 12
์ด๊ณ ์ฌ์ฉ์ B์TRX_ID = 10
์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๊ธฐ ๋ณด๋ค ์๋์ธ ํธ๋์ญ์ ์ ์ฟผ๋ฆฌ๋ง์ ๋ณผ ์ ์๊ฒ ๋๋ ์ํฉ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ์ B๋ ๊ณ์ํด์ ๊ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด๊ฒ ๋ฉ๋๋ค.
์์์ ๋ฐฐ์ด ๊ฒ ์ฒ๋ผ ์ ์ฌ์ง์ ๊ฒฝ์ฐ๋ฅผ ๋ฐ๋์๋, ์ฌ์ฉ์ B๊ฐ ๋ณด๋ ํ ์ด๋ธ์๋ ์ฒ๋ผ๊ณผ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์์ผํ๋๋ฐ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ด๊ณ ์์ต๋๋ค. ์ด๋ ๊ฒ ๋ค๋ฅธ ํธ๋์ญ์ ์์ ์ํํ ๋ณ๊ฒฝ ์์ ์ ์ํด ๋ ์ฝ๋๊ฐ ๋ณด์๋ค ์ ๋ณด์๋ค ํ๋ ํ์์PHANTOM READ / PHANTOM ROW
๋ผ๊ณ ํฉ๋๋ค.SELECT ~ UPDATE
๋ ์ธ๋ ์์ญ์ ์ฐ๊ธฐ ์ ๊ธ์ ํ ์ ์๊ธฐ ๋๋ฌธ์SHARE MODE
๋ก ์กฐํ๋๋ ๋ ์ฝ๋๋ ํ์ฌ์ ๋ ์ฝ๋ ๊ฐ์ ๊ฐ์ ธ์ค๊ฒ ๋ฉ๋๋ค.
SELECT
์์
(INSERT ~~ SELECT, CREATE TABLE ~~ AS SELECT ~~
๊ฐ ์๋)์ ์๋ฌด๋ฐ ๋ ์ฝ๋ ์ ๊ธ๋ ์ค์ ํ์ง ์๊ณ ์คํ๋ฉ๋๋ค. ํธ๋์ญ์
์ ๊ฒฉ๋ฆฌ์์ค์ด SERIALIZABLE
๋ก ์ค์ ๋๊ฒ ๋๋ฉด ์ฝ๊ธฐ ์์
๋ ๊ณต์ ์ ๊ธ(์ฝ๊ธฐ ์ ๊ธ)์ ํ๋ํด์ผ๋ง ํ๋ฉฐ ๋์์ ๋ค๋ฅธ ใ
ํธ๋์ญ์
์ ๊ทธ๋ฌํ ๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ๋ชปํ๊ฒ ๋ฉ๋๋ค. ์ฆ, ํ ํธ๋์ญ์
์์ ์ฝ๊ณ ์ฐ๋ ๋ ์ฝ๋๋ฅผ ๋ค๋ฅธ ํธ๋์ญ์
์์๋ ์ ๋ ์ ๊ทผ ํ ์ ์์์ ๋งํฉ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ PHANTOM READ
ํ์์ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ ์ฝ๋ ๋ ๋ฒจ์ ํธ๋์ญ์
์ ์ง์ํ๋ DBMS๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ด๋ฉฐ, MVCC์ ๊ฐ์ฅ ํฐ ๋ชฉ์ ์ ์ ๊ธ์ ์ฌ์ฉํ์ง ์๋ ์ผ๊ด๋ ์ฝ๊ธฐ๋ฅผ ์ ๊ณตํ๋๋ฐ ์์ต๋๋ค. ์ด๋ฌํ ๊ธฐ๋ฅ์ InnoDB์์๋ Undo log
๋ฅผ ํตํด์ ๊ตฌํ ํ์ต๋๋ค. ์ฆ, ๊ฒฉ๋ฆฌ ์์ค์ ๋ฐ๋ผ InnoDB์ ๋ฒํผ ํ์ด๋ ๋ฐ์ดํฐ ํ์ผ์ ์๋ ๋ด์ฉ ๋์ ๋ณ๊ฒฝ๋๊ธฐ ์ด์ ์ ๋ด์ฉ์ ๋ณด๊ดํ๊ณ ์๋ ์ธ๋ ์์ญ์ ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ์ง๋ฅผ ์ ํ๋ DBMS์ ๊ณผ์ ์ MVCC
๋ผ๊ณ ํฉ๋๋ค.
Concurrency Control
์ด๋ ๋์์ ์คํ๋๋ ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์
์ด ์์
์ ์ฑ๊ณต์ ์ผ๋ก ๋ง์น ์ ์๋๋ก ํธ๋์ญ์
์ ์คํ ์์๋ฅผ ์ ์ดํ๋ ๊ธฐ๋ฒ์
๋๋ค. ์ด๋ฌํ ๋์์ฑ ์ ์ด์ ์ ์๋ ์๋์ ๊ฐ์ต๋๋ค.
์ด๋ ๊ฒ ์ง๋ ฌํ๋ฅผ ํ์ฌ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์คํ์ด ๋๋๊ฒ์ ํผํ๊ณ ๋ฐ๋๋ฝ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ์์ ๊ณผ์ ์ ๊ฑฐ์ณ ํธ๋์ญ์ ์ ์ง๋ ฌ์ฑ ๋ณด์ฅํ๊ณ ๊ณต์ ๋๋ฅผ ์ต๋๋ก ์ฌ๋ฆฌ๊ณ ์๋ต ์๊ฐ์ ์ต์๋ก ํ์ฌ ์์คํ ํ๋์ ์ต๋๋ก ๋ณด์ฅํฉ๋๋ค. ์ต์ข ์ ์ผ๋ก ๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ ๋ฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ค.
lock
์ ์ค์ ํ๋ฉด ๋ค๋ฅธ ํธ๋์ญ์
์ ํด๋น ๋ฐ์ดํฐ์ ๋ํด unlock
์ด ๋ ๋ ๊น์ง ์ ๊ทผ/์์ /์ญ์ ๊ฐ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ฆ, ํธ๋์ญ์์ด ์ฌ์ฉํ๋ ๋ ์ฝ๋์ ๋ํด์ฌ Mutual Exclusive
๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. READ UNCOMMITTED
RollBack
ํ๊ฒ ๋๊ณ ๋ฌดํจ๊ฐ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋์ด ์๋ชป๋ ๊ฒฐ๊ณผ๋ฅผ ๋์ถํ๊ฒ ๋ฉ๋๋ค. - READ UNCOMMITTED
READ COMMITTED
Rollback
์ฐ์ฐ์ ์ํฅํ๋ ๊ณผ์ ์์ ๊ฐฑ์ ๊ณผ RollBack ์ฐ์ฐ์ ์คํํ๊ณ ์๋ ์ฌ์ด์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ ์ฌ์ฉํ ๋ ๋ฐ์ํ ์ ์๋ ๋ฌธ์ ์
๋๋ค.๋์์ฑ ๋ฌธ์ | ๊ฒฉ๋ฆฌ ์์ค | ์์ | ํด๊ฒฐ ๋ฐฉ์ | ์ฃผ์ ์ฌํญ |
---|---|---|---|---|
Lost Update | READ COMMITTED | ๋์ | Locks ์ฌ์ฉ, OCC | ๋ฐ๋๋ฝ ๋ฐ์ ๊ฐ๋ฅ์ฑ ์ฃผ์ |
Dirty Read | READ UNCOMMITTED | ๋์ | ๊ฒฉ๋ฆฌ ์์ค ๋์ด๊ธฐ | ๋ถํ์ํ ๋ฝ ๋ฐ์ ์ฃผ์ |
Inconsistency | SERIALIZABLE | ๋์ | ๊ฒฉ๋ฆฌ ์์ค ๋์ด๊ธฐ | ์ฑ๋ฅ ์ ํ ์ฃผ์ |
Cascading Rollback | SERIALIZABLE | ๋์ | Nested Transactions ์ฌ์ฉ | ์ฑ๋ฅ ์ ํ ์ฃผ์ |
๐คฅ OCC(Optimistic Concurrency Control) : ํธ๋์ญ์
1์ด ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ, ๊ฐฑ์ ์์ ํด๋น ๋ฐ์ดํฐ์ ๋ฒ์ ์ ํ์ธํ๊ณ , ๋ค๋ฅธ ํธ๋์ญ์
์ด ์ด๋ฏธ ๊ฐฑ์ ํ ๊ฒฝ์ฐ ์์ธ๋ฅผ ๋ฐ์์์ผ ๊ฐฑ์ ์ ์ค๋จํ ์ ์์ต๋๋ค.
๐คฅ Nested Transaction : ์ผ๋ถ DBMS์์ ์ง์ํ๋ ๊ฒฝ์ฐ, ์ค์ฒฉ ํธ๋์ญ์
์ ์ฌ์ฉํ์ฌ ๋ถ๋ถ์ ์ธ ๋กค๋ฐฑ์ ์ํํ๊ณ , ํ์ํ ๊ฒฝ์ฐ์๋ง ์ ์ฒด ํธ๋์ญ์
์ ๋กค๋ฐฑํ ์ ์๋ ๊ธฐ๋ฅ์
๋๋ค.
MySQL์์ ์ฌ์ฉ๋๋ ์ ๊ธ์ ํฌ๊ฒ ์คํ ๋ฆฌ์ง ์์ง ๋ ๋ฒจ๊ณผ MySQL ์์ง ๋ ๋ฒจ๋ก ๋๋ ์ ์์ต๋๋ค.
MySQL ์์ง ๋ ๋ฒจ์ ์ ๊ธ์ ๋ชจ๋ ์คํ ๋ฆฌ์ง ์์ง์ ์ํฅ์ ๋ฏธ์น์ง๋ง, ์คํ ๋ฆฌ์ง ์์ง ๋ ๋ฒจ์ ์ ๊ธ์ ์คํ ๋ฆฌ์ง ์์ง ๊ฐ ์ํธ ์ํฅ์ ๋ฏธ์น์ง๋ ์์ต๋๋ค. MySQL ๋ฝ์ ์ข
๋ฅ๋ ํ
์ด๋ธ์ ๊ตฌ์กฐ๋ฅผ ์ ๊ทธ๋ ๋ฉํ๋ฐ์ดํฐ ๋ฝ ๊ทธ๋ฆฌ๊ณ ์ฌ์ฉ์์ ํ์์ ๋ง๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ค์๋ ๋ฝ, ๋ํ SELECT
๋ฅผ ์ ์ธํ ๋๋จธ์ง DML, DDL ๋ฌธ์ฅ์ ์คํํ๋ ๊ฒฝ์ฐ์ ๊ธ๋ก๋ฒ ๋ฝ์ด ํด์ ๋ ๋ ๊น์ง ๋๊ธฐ ์ํ๋ก ํ๊ฒ ๋ง๋๋ ๊ธ๋ก๋ฒ ๋ฝ ๊ธฐ๋ฅ๋ ํจ๊ป ์ ๊ณตํฉ๋๋ค.
InnoDB ์คํ ๋ฆฌ์ง ์์ง์ MySQL์์ ์ ๊ณตํ๋ ์ ๊ธ๊ณผ๋ ๋ณ๊ฐ๋ก ์คํ ๋ฆฌ์ง ์์ง ๋ด๋ถ์์ ๋ ์ฝ๋ ๊ธฐ๋ฐ์ ์ ๊ธ ๋ฐฉ์์ ํ์ฌํ๊ณ ์์ต๋๋ค. ์ด๋ฌํ ์ ๊ธ ๋ฐฉ์ ๋๋ฌธ์ MyISAM
๋ณด๋ค๋ ํจ์ฌ ๋ฐ์ด๋ ๋์์ฑ ์ฒ๋ฆฌ๋ฅผ ์ ๊ณตํ ์ ์๋ค๊ณ ํฉ๋๋ค. ์ด๋ฌํ InnoDB ์คํ ๋ฆฌ์ง ์์ง์์์ ๋ฝ์ ์ข
๋ฅ๋ ์ธ๋ฑ์ค์ ๋ ์ฝ๋ ์์ฒด ๋ง์ ์ ๊ทธ๋ Record Lock
๊ทธ๋ฆฌ๊ณ ๋ ์ฝ๋ ์์ฒด๊ฐ ์๋ ๋ ์ฝ๋์ ๋ฐ๋ก ์ธ์ ํ ๋ ์ฝ๋ ์ฌ์ด์ ๊ฐ๊ฒฉ๋ง์ ์ ๊ทธ๋ Gab Lock
, ๋ ์ฝ๋ ๋ฝ๊ณผ ๊ฐญ ๋ฝ์ ํฉ์ณ ๋์ ํํ์ ์ ๊ธ์ Nexy Key Lock
์ด๋ผ๊ณ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก Auto_Increment Lock
์ด ์์ต๋๋ค. ์๋ ์ฆ์ฌ ๋ฝ์ ํ
์ด๋ธ ์์ค์ ์ ๊ธ์ ์งํํ ๋ ์ฌ์ฉํฉ๋๋ค.
๋ ๊ฐ ์ด์์ ํธ๋์ญ์ ์ด ๊ฐ๊ฐ ์์ ์ ๋ฐ์ดํฐ์ ๋ํ์ฌ ๋ฝ์ ํ๋ํ๊ณ ์๋๋ฐฉ ๋ฐ์ดํฐ์ ๋ํ์ฌ ๋ฝ์ ์์ฒญํ๋ฉด ๋ฌดํ ๋๊ธฐ ์ํ์ ๋น ์ง ์ ์๋ ํ์์ ๋งํฉ๋๋ค. (์๋ก ๋ฝ์ ๊ฑธ์ด์ฃผ๋ค๊ฐ ๋ฌดํ ๋๊ธฐ์ ๋น ์ง๋ ํ์) ์ด๋, ๋ณดํต DBMS๊ฐ ํธ๋์ญ์ ์ ๋ ์ค ํ๋๋ ๊ฐ์ ๋ก ์ค์ง์์ผ ํ๋์ ํธ๋์ญ์ ์ ์ ์ ๋์์ ํ๊ณ ์ค์ง๋ ํธ๋์ญ์ ์ ๋กค๋ฐฑ๋๊ฒ ๋ ๋ง๋ญ๋๋ค.
์์ ๊ฐ์ ์ฅ์ ์ ํ์ผ๋ก ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋๋ฐ ์ด๋, ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ ์ด์ ์ ์ํ๋ก ๋ณต๊ตฌ ์์ผ์ ์ผ๊ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๋ฅผ ๋ง๋๋ ๊ฒ์ DB ํ๋ณต์ด๋ผ๊ณ ํฉ๋๋ค. ํ๋ณต์ ์ํ ๋ฐ์ดํฐ ๋ณต์ฌ๋ณธ์ ๋ง๋๋ ๋ฐฉ๋ฒ์๋ ๋คํ, ๋ก๊ทธ๊ฐ ์์ต๋๋ค.
DBMS๋ ํธ๋์ญ์ ์ด ์ข ๋ฃ๋์๋์ง ํน์ ์ค๋จ ๋์๋์ง ์ฌ๋ถ๋ฅผ ํ๋จํ์ฌ ์ข ๋ฃ๋ ๊ฒฝ์ฐ์๋ ์ข ๋ฃ๋ฅผ ํ์ ํ๊ธฐ ์ํด REDO(์ฌ์คํ)์ ํ๊ณ ์ค๋จ๋ ๊ฒฝ์ฐ์๋ ์๋ ์ผ๋ก ๋๋๋ฆฌ๊ธฐ ์ํด UNDO(์ทจ์)๋ฅผ ์งํํฉ๋๋ค.
์ฒดํฌํฌ์ธํธ ํ๋ณต ๊ธฐ๋ฒ์ด๋ ๋ก๊ทธ๋ ๊ทธ๋๋ก ๊ธฐ๋ก์ ์ ์งํ๋ฉด์, ํ๋ณต๊ด๋ฆฌ์๊ฐ ์ ํ๋ ์ผ์ ํ ์๊ฐ ๊ฐ๊ฒฉ์ผ๋ก ๊ฒ์ฌ ์์ ์ ์์ฑํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ณต ์ ๋ง์ ์์ ๋ก๊ทธ๋ฅผ ๊ฒ์ํ๊ณ ๊ฐฑ์ ํ๋ ์๊ฐ์ ์ค์ด๊ณ ๊ธฐ๋ฒ์ ๋ ๋จ์ํ ์ํฌ ์ ์์ต๋๋ค.
InnoDB์ ๊ธฐ๋ณธ ๊ณ ๋ฆฝ ์์ค์ REPEATABLE READ
์
๋๋ค. ์ด๋ ํธ๋์ญ์
๋ด์์๋ ๋์ธํ ์ฟผ๋ฆฌ๋ฅผ ์คํดํด๋ ๊ฒฐ๊ณผ๊ฐ ํญ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ค๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. InnoDB์ ์คํ ๋ฆฌ์ง ์์ง์ ํธ๋์ญ์
์ด ๋กค๋ฐฑ ๋ ๊ฐ๋ฅ์ฑ์ ๋๋นํ๊ธฐ ์ํด ๋ณ๊ฒฝ ๋์ง ์ ๋ ์ฝ๋๋ฅผ ์ธ๋ ๊ณต๊ฐ์ ๋ฐฑ์
ํด๋๊ณ ์ค์ ๋ ์ฝ๋์ ๊ฐ์ ๋ณ๊ฒฝํฉ๋๋ค. ์ด๋ฌํ ๋ณ๊ฒฝ ๋ฐฉ๋ฒ์ MVCC๋ผ๊ณ ํฉ๋๋ค.
References
1. DB Session
2. Session & Cookie
3. Definitions of Commit & Rollback
4. AutoCommit
5. ๋์์ฑ ์ ์ด
6. DB์ ์ ๋ฐ์ ์ธ ์ดํด
7. Checkpoint DB Recovery