0. ๋ฉด์ ์ง๋ฌธ
- DB ์ธ์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- Commit์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- Rollback์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- Auto Commit ์ค์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ํธ๋์ญ์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- ํธ๋์ญ์ ์ ์ฑ์ง ACID์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ด ๋ญ๊น์?
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค READ UNCOMMITTIED์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค READ COMMITTED์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค REPEATABLE READ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค SERIALIZABLE์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- DB ๋์์ฑ ์ ์ด์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ๊ฐฑ์ ์์ค ๋ฌธ์ ์ ๋ํด ์ค๋ช ํด์ฃผ์ธ์.
- DB ๋ฝ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- DB ๋ฐ๋๋ฝ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- DB ํ๋ณต์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- REDO, UNDO์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ์ฒดํฌํฌ์ธํธ ํ๋ณต ๊ธฐ๋ฒ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- MySQL InnoDB์ ๊ธฐ๋ณธ ํธ๋์ญ์ ๊ณ ๋ฆฝ ์์ค์ ๋ญ๊น์?
1. DB ์ธ์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ๊ฐ๋ : ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์๋ฒ์ ์ฐ๊ฒฐ๋ ์ํ
- ์ฌ๋ฌ ํธ๋์ญ์ ์ ํฌํจํ ์ ์๋ค.
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ฌ๋ฌ ๊ณณ์์ ๋์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ง์ ์ธ์ ์ด ๋์์ ์ฐ๊ฒฐ๋ ์ ์๋ค.
- ์ด๋ฅผ ์ฒ๋ฆฌํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ๊ณผ ์์ ์ฑ์ ์ ์งํ๋ค.
2. ํธ๋์ญ์
- ๊ฐ๋ : ์์ ํ๋๋ฅผ ์ํํ๋๋ฐ ํ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฐ์ฐ์ ๋ชจ์๋์ ๊ฒ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ ผ๋ฆฌ์ ์ธ ์์ ๋จ์, ์ฅ์ ๋ฐ์ ์ ๋ณต๊ตฌํ๋ ์์ ๋จ์
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ค์์ ์ฌ์ฉ์๊ฐ ๋์์ ์ฌ์ฉํ๋๋ผ๋ ํญ์ ๋ชจ์ ์์ด ์ ํํ ๋ฐ์ดํฐ๋ฅผ ์ ์งํด์ผํ๋ค. ๋ํ ์ฅ์ ๋ฐ์ ์ ๋น ๋ฅด๊ฒ ๋ณต๊ตฌํด์ผ ํ๋ค. ์ด๋ฅผ ์ํด DBMS์๋ ํธ๋์ญ์ ์ด ์๋ค.
- ํธ๋์ญ์ ์ ๊ด๋ฆฌํจ์ผ๋ก์จ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ณต, ๋ณํ ์ ์ด๊ฐ ๊ฐ๋ฅํด์ง๋ฏ๋ก, ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ผ๊ด๋ ์ํ๋ฅผ ์ ์งํ ์ ์๊ฒ ๋๋ค.
ํน์ฑ
- ์์์ฑ(Atomicity)
- ํธ๋์ญ์ ์ ๊ตฌ์ฑํ๋ ์ฐ์ฐ๋ค์ด ๋ชจ๋ ์ ์์ ์ผ๋ก ์คํ๋๊ฑฐ๋ ํ๋๋ ์คํ๋์ง ์์์ผ ํ๋ค. all-or-nothing
- ์ฆ, ํธ๋์ญ์ ์ ์ค๊ฐ ์ํ๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํฅ์ ๋ฏธ์น๋ฉด ์๋๋ค.
- ์์: ์ํ ๊ณ์ข์์ 100๋ง ์์ ์ด์ฒดํ๋ ํธ๋์ญ์ ์ ์ํํ ๋, ์ก๊ธ๊ณผ ์๋ น์ ๋ ๋จ๊ณ๊ฐ ๋ชจ๋ ์ฑ๊ณตํด์ผ ํ๋ค. ๋ง์ฝ ์ก๊ธ์ ๋์์ง๋ง ์๋ น์ด ์คํจํ๋ค๋ฉด, ์ ์ฒด ํธ๋์ญ์ ์ด ์ทจ์๋๊ณ ์ก๊ธ๋ ๋๋๋ ค์ผ ํ๋ค.
- ์ผ๊ด์ฑ(Consistency)
- ํธ๋์ญ์ ์ด ์ํ๋ ํ์๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ผ๊ด๋ ์ํ๋ฅผ ์ ์งํด์ผ ํ๋ค. ํธ๋์ญ์ ์ํ ์ ๊ณผ ํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํ๊ฐ ๋ชจ๋ ์ผ๊ด๋์ด์ผ ํ๋ค.
- ์์: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ์ ํ ์ด๋ธ๊ณผ ์์ ํ ์ด๋ธ์ด ์์ ๋, ํ์์ด ์์ ์ ๋ฑ๋กํ๋ ํธ๋์ญ์ ์ด ์๋ฃ๋ ํ ํ์๊ณผ ์์ ๋ฐ์ดํฐ๊ฐ ๋ชจ๋ ์ฌ๋ฐ๋ฅธ ์ํ๋ก ์ ์ง๋์ด์ผ ํ๋ค. ํ์์ด ๋ฑ๋กํ ์์ ์ ์์ ์ค์ ์์ ์ ์๊ฐ ์ผ์นํด์ผ ํ๋ค.
- ๊ฒฉ๋ฆฌ์ฑ(Isolation)
- ํ์ฌ ์ํ ์ค์ธ ํธ๋์ญ์ ์ด ์๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ํธ๋์ญ์ ๋ค์ด ์ ๊ทผํ ์ ์์์ ์๋ฏธํ๋ค.
- ์์: ๋ ์ฌ์ฉ์๊ฐ ๋์์ ๊ฐ์ ์ํ์ ์ฌ๊ณ ๋ฅผ ์์ ํ๋ ํธ๋์ญ์ ์ ์ํํ ๋, ๊ฐ ํธ๋์ญ์ ์ ๋ ๋ฆฝ์ ์ผ๋ก ์ํ๋์ด์ผ ํ๋ฉฐ ์๋ก์ ์ค๊ฐ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์์ด์ผ ํ๋ค. ๋ ํธ๋์ญ์ ์ด ์๋ก ์ถฉ๋ํ์ง ์๋๋ก ๋ณด์ฅํ๋ค.
- ์ง์์ฑ(Durability)
- ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋ ํ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ํ ์ํ ๊ฒฐ๊ณผ๋ ์ด๋ ํ ๊ฒฝ์ฐ์๋ ์์ค๋์ง ์๊ณ ์๊ตฌ์ ์ด์ด์ผ ํ๋ค.
- ์์คํ ์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ํธ๋์ญ์ ์์ ๊ฒฐ๊ณผ๋ ์์ด์ง์ง ์๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ทธ๋๋ก ๋จ์ ์์ด์ผ ํ๋ค.
- ์ด๋ฅผ ์ํด์ ์ฅ์ ๋ฐ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์๋ ์ํ๋ก ๋ณต๊ตฌํ๋ ํ๋ณต ๊ธฐ๋ฅ์ด ํ์ํ๋ค.
- ์์: ํธ๋์ญ์ ์ด ์๋ฃ๋์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ณ๊ฒฝ์ฌํญ์ด ๊ธฐ๋ก๋ ํ ์์คํ ์ด ๊ฐ์๊ธฐ ๊บผ์ง๋๋ผ๋, ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ์ฌ์ ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋จ์ ์์ด์ผ ํ๋ค.
- ํธ๋์ญ์ ํน์ฑ ์ง์ํ๋ DBMS ๊ธฐ๋ฅ
ํธ๋์ญ์ ํน์ง | DBMS์ ๊ธฐ๋ฅ |
์์์ฑ | ํ๋ณต ๊ธฐ๋ฅ |
์ผ๊ด์ฑ | ๋ณํ ์ ์ด ๊ธฐ๋ฅ |
๊ฒฉ๋ฆฌ์ฑ | ๋ณํ ์ ์ด ๊ธฐ๋ฅ |
์ง์์ฑ | ํ๋ณต ๊ธฐ๋ฅ |
3. ํธ๋์ญ์ ์ฐ์ฐ
์ปค๋ฐ(commit)
- ๊ฐ๋ : ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์ํ๋์์์ ์ ์ธ(์์ ์๋ฃ)
๋กค๋ฐฑ(rollback)
- ๊ฐ๋ : ํธ๋์ญ์ ์ ์ํํ๋ ๋ฐ ์คํจํ์์ ์ ์ธ(์์ ์ทจ์)
4. Auto Commit ์ค์ ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- Auto Commit์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๊ฐ SQL ๋ฌธ์ด ์คํ๋ ๋๋ง๋ค ์๋์ผ๋ก ํธ๋์ญ์ ์ ์ปค๋ฐํ๋ ๋ชจ๋๋ฅผ ์๋ฏธ
- Auto Commit์ด ํ์ฑํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์๋ ๋ช ์์ ์ผ๋ก ๋กค๋ฐฑํ์ง ์๋ ํ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์๊ตฌ์ ์ผ๋ก ์ ์ฅ๋๋ค.
5. ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ์ฑ์ด ๋ฎ์ ๊ฒฝ์ฐ ๋ฐ์ํ๋ ๋ฌธ์ ์ ๋ค
- Dirty Read: ํ ํธ๋์ญ์ ์์ ์์ง ์ปค๋ฐ๋์ง ์์ ๋ณ๊ฒฝ์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ฝ์ ์ ์๋ค. ์ด๋ก ์ธํด ์๋ชป๋ ๋ฐ์ดํฐ๋ ์ผ๊ด์ฑ์ด ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ฒ ๋ ์ ์๋ค.
- Non-repeatable Read: ํ ํธ๋์ญ์ ๋ด์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋ ๋ฒ ์ํํ๋๋ฐ, ๊ทธ ์ฌ์ด์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๊ฐ์ ์์ ๋๋ ์ญ์ ํ๋ ๋ฐ๋์ ๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅด๊ฒ ๋ํ๋๋ ํ์์ ์๋ฏธํ๋ค.
- Phantom Read: ํ ํธ๋์ญ์ ์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ๋๋ฒ ์ํํ๋๋ฐ, ์ฒซ๋ฒ์งธ ์ฟผ๋ฆฌ์์ ์๋ ์ ๋ น ๋ ์ฝ๋๊ฐ ๋๋ฒ์งธ ์ฟผ๋ฆฌ์์ ๋ํ๋๋ ํ์์ ๋งํ๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ๋ค๋ก ์ธํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ผ๊ด์ฑ ๋ฐ ๋ฌด๊ฒฐ์ฑ์ด ์์๋ ์ ์๋ค. ๋ฐ๋ผ์ ํธ๋์ญ์ ์ ๊ฒฉ๋ฆฌ์ฑ ์์ค์ ์ ์ ํ ์ค์ ํ์ฌ ์์ ๊ฐ์ ๋ฌธ์ ์ ๋ค์ ๋ฐฉ์งํด์ผ ํ๋ค. ๊ฒฉ๋ฆฌ ์์ค์ ์๋์ ๊ฐ๋ค.
ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค
์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์คํ๋ ๋, ํน์ ํธ๋์ญ์ ์ด ๋ค๋ฅธ ํธ๋์ญ์ ์์ ๋ณ๊ฒฝํ๊ฑฐ๋ ์กฐํํ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณผ ์ ์๋์ง์ ๋ํ ํ์ฉ ์ฌ๋ถ๋ฅผ ๊ฒฐ์ ํ์ฌ, ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ๊ธฐ ์ํ ๋ฐฉ์
- READ UNCOMMITTED: ๊ฐ์ฅ ๋ฎ์ ๊ฒฉ๋ฆฌ ์์ค์ผ๋ก, ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์์ง ์ปค๋ฐํ์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ค. dirty read ๋ฐ์ ๊ฐ๋ฅ. ์ฆ, ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๋กค๋ฐฑํ๋ฉด ์๋ชป๋ ๋ฐ์ดํฐ๊ฐ ์ฝํ ์ ์๋ค.
- READ COMMITTED: ํธ๋์ญ์ ์ด ์ปค๋ฐ๋ ๋ฐ์ดํฐ๋ง ์ฝ์ ์ ์๋ค. Non-repeatable Read๋ ๋ฐ์ํ ์ ์๋ค. ์ฆ, ๋์ผ ํธ๋์ญ์ ๋ด์์ ๊ฐ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํด๋ ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์ ์๋ค.
- REPEATABLE READ: ํธ๋์ญ์ ๋์ ์ฝ์ ๋ฐ์ดํฐ๋ ๋ณ๊ฒฝ๋์ง ์์ผ๋ฉฐ, ๋์ผํ ๋ฐ์ดํฐ์ ๋ํด ๋ฐ๋ณต์ ์ผ๋ก ์ฝ์ ๋ ์ผ๊ด๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅ. Phantom Read๊ฐ ๋ฐ์ํ ์ ์๋ค. ์ฆ, ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ์ ์๋ก์ด ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ์ญ์ ๋ ์ ์๋ค.
- SERIALIZABLE: ๊ฐ์ฅ ๋์ ๊ฒฉ๋ฆฌ ์์ค์ผ๋ก, ๋ชจ๋ ํธ๋์ญ์ ์ด ์์ ํ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ค.
MySQL InnoDB์ ๊ธฐ๋ณธ ํธ๋์ญ์ ๊ณ ๋ฆฝ ์์ค์ ๋ญ๊น์?
- MySQL InnoDB์ ๊ธฐ๋ณธ ํธ๋์ญ์ ๊ณ ๋ฆฝ ์์ค์ REPEATABLE READ์ด๋ค.
- ๋ฐ๋ผ์ Dirty Read์ Non-repeatable Read๋ ๋ฐฉ์งํ์ง๋ง, Phantom Read๋ ๋ฐฉ์งํ์ง ๋ชปํ๋ค.
- ํ์ง๋ง InnoDB๋ ํฌํ
๋ฆฌ๋๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด Next-Key Locking์ ์ฌ์ฉํ๋ค.
- Next-Key Locking์ ํ ์์ค์ ์ ๊ธ๊ณผ ์ธ๋ฑ์ค ๋ฒ์์ ๋ํ ์ ๊ธ์ ๊ฒฐํฉํ ๊ฒ์ผ๋ก, ์ธ๋ฑ์ค ๋ฒ์ ๋ด์ ์๋ก์ด ํ ์ฝ์ ๋๋ ์ญ์ ๋ฅผ ์ ์ดํ์ฌ, ํธ๋์ญ์ ์ด ์คํ๋๋ ๋์ Phantom Read๋ฅผ ๋ฐฉ์งํ๋ค.
6. ์ฅ์ ์ ํ๋ณต
- ํ๋ณต : ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ฅ์ ๊ฐ ๋ฐ์ํ๊ธฐ ์ ์ ๋ชจ์์ด ์๊ณ ์ผ๊ด๋ ์ํ๋ก ๋ณต๊ตฌ ์ํค๋ ๊ฒ, DBMS์ ํ๋ณต ๊ด๋ฆฌ์๊ฐ ๋ด๋นํ๋ค.
- ๊ธฐ๋ณธ ์ฐ์ฐ
- redo: ๋ก๊ทธ์ ๊ธฐ๋ก๋ ๋ณ๊ฒฝ ์ฐ์ฐ ํ์ ๊ฐ์ ์ด์ฉํ์ฌ ๋ณ๊ฒฝ ์ฐ์ฐ์ ์ฌ์คํํ๋ ๋ฐฉ๋ฒ
- undo: ๋ก๊ทธ์ ๊ธฐ๋ก๋ ๋ณ๊ฒฝ ์ฐ์ฐ ์ด์ ์ ๊ฐ์ ์ด์ฉํ์ฌ ๋ณ๊ฒฝ ์ฐ์ฐ์ ์ทจ์ํ๋ ๋ฐฉ๋ฒ
- ๋ก๊ทธ ํ๋ณต ๊ธฐ๋ฒ: ํธ๋์ญ์
์ ์ํ ๊ธฐ๋ก์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณต๊ตฌํ๋ ๋ฐฉ๋ฒ
- ์ฆ์ ๊ฐฑ์ ํ๋ณต ๊ธฐ๋ฒ: ํธ๋์ญ์ ์ํ ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฆ์ ๋ฐ์
- ์ง์ฐ๊ฐฑ์ ํ๋ณต ๊ธฐ๋ฒ: ํธ๋์ญ์ ์ด ์ํ๋๋ ๋์์๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฆ์ ๋ฐ์ํ์ง ์๊ณ ๋ก๊ทธ ํ์ผ์๋ง ๊ธฐ๋กํด๋์๋ค๊ฐ, ํธ๋์ญ์ ์ด ๋ถ๋ถ ์๋ฃ๋ ํ์ ๋ก๊ทธ์ ๊ธฐ๋ก๋ ๋ด์ฉ์ ์ด์ฉํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํ๋ฒ์ ๋ฐ์
- ๊ฒ์ฌ ์์ (์ฒดํฌํฌ์ธํธ) ํ๋ณต ๊ธฐ๋ฒ: ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ์ ์ฅํ์ฌ, ์ฅ์ ๋ฐ์ ์ ๊ฒ์ฌ ์์ ์ดํ์ ํธ๋์ญ์ ๋ง ํ๋ณต ์์ ์งํ
- ๋ฏธ๋์ด ํ๋ณต ๊ธฐ๋ฒ: ๋์คํฌ ์ฅ์ ์ ๊ฐ์ ๋ฌผ๋ฆฌ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ฌ์ฉํ๋ ํ๋ณต ๊ธฐ๋ฒ
7. ๋์์ฑ ์ ์ด(๋ณํ ์ ์ด)
- DBMS๋ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋์์ ๊ณต์ ํ ์ ์๋๋ก ์ฌ๋ฌ ๊ฐ์ ํธ๋์ญ์ ์ด ๋์์ ์ํ๋๋ ๋ณํ ์ํ ์ง์
- ์ด๋, ์ฌ๋ฌ ํธ๋์ญ์ ๋ค์ด ๋์์ ๊ฐ์ ๋ฐ์ดํฐ์ ์ ๊ทผํ์ฌ ๋ณ๊ฒฝ ์ฐ์ฐ์ ํ๋ฉด ์์์น ๋ชปํ ๊ฒฐ๊ณผ๊ฐ ๋ํ๋ ์ ์๋ค. ์ด๋ฅผ ์ํด ๋ณํ ์ ์ด ํ์
- ๋ณํ ์ํ์ ๋ฌธ์
- ๊ฐฑ์ ๋ถ์ค: ํ๋์ ํธ๋์ญ์ ์ด ์ํํ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๋ฎ์ด์จ ๋ณ๊ฒฝ ์ฐ์ฐ์ด ๋ฌดํจํ ๋จ
- ๋ชจ์์ฑ: ํ๋์ ํธ๋์ญ์ ์ด ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ ๋ณ๊ฒฝ ์ฐ์ฐ์ ์คํํ ๋ ์ผ๊ด์ฑ ์๋ ์ํ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ ์ฐ์ฐ์ ์คํํจ์ผ๋ก์จ ๋ชจ์๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ๋ ๊ฒ
- ์ฐ์ ๋ณต๊ท: ํธ๋์ญ์ ์ด ์๋ฃ๋๊ธฐ ์ ์ ์ฅ์ ๊ฐ ๋ฐ์ํ์ฌ rollback ์ฐ์ฐ์ ์ํํ๋ฉด, ์ด ํธ๋์ญ์ ์ด ์ฅ์ ๋ฐ์ ์ ์ ๋ณ๊ฒจํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๊ฐ ๋ณ๊ฒฝ ์ฐ์ฐ์ ์คํํ ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์๋ rollback ์ฐ์ฐ์ ์ฐ์์ ์ผ๋ก ํด์ผํ๋ค.
- ๋ณํ ์ ์ด: ๋ณํ ์ํ ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง ์๊ณ ์ ํํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋๋ก ํธ๋์ญ์ ์ ์ํ์ ์ ์ด
- ๋ณํ ์ ์ด ๊ธฐ๋ฒ
- DB Lock (๋กํน ๊ธฐ๋ฒ): ํธ๋์ญ์ ๋ค์ด ๋์ผํ ๋ฐ์ดํฐ์ ๋์์ ์ ๊ทผํ์ง ๋ชปํ๋๋ก lock, unlock ์ฐ์ฐ์ผ๋ก ์ ์ด
- ๋กํน ๋จ์๊ฐ ์ปค์ง์๋ก ๋ณํ์ฑ์ด ๋ฎ์์ง์ง๋ง ์ ์ด๊ฐ ์ฝ๊ณ , ๋กํน ๋จ์๊ฐ ์์์ง์๋ก ์ ์ด๊ฐ ์ด๋ ต์ง๋ง ๋ณํ์ฑ์ด ๋์์ง๋ค.
- lock ์ฐ์ฐ: ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ์ ๋ํ ๋ ์ ๊ถ์ ์์ฒญํ๋ ์ฐ์ฐ
- unlock ์ฐ์ฐ: ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ์ ๋ํ ๋ ์ ๊ถ์ ๋ฐํํ๋ ์ฐ์ฐ
8. DB ๋ฝ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- DB ๋ฝ์ ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ๋ฅผ ๋ ์ ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋๋ก ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ์ ์ ๊ทธ๋ ๋ณํ ์ ์ด ๊ธฐ๋ฒ
- ์ด๋ก ์ธํด ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ ๊ธด ๋ฐ์ดํฐ์ ์ ๊ทผํ์ง ๋ชปํ๊ฒ ๋์ด ์ํธ ๋ฐฐ์ (Mutual Exclusive) ๊ธฐ๋ฅ์ ์ ๊ณต
- ์ฝ๊ฒ ์ค๋ช ํ๋ฉด, ํ์ฅ์ค ์นธ์ ์ฌ์ฉํ ๋ ๋ฌธ์ ์ ๊ทธ๋ ๊ฒ๊ณผ ์ ์ฌํ๊ฒ, ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๋์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ์ ๊ทผํ์ง ๋ชปํ๊ฒ ์ ๊ทธ๋ ๊ฒ
- ์ฃผ์ ๋ด์ฉ
- ์ ๊ธ ๊ธฐ๋ฅ: ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ๋ฅผ ๋ ์ ์ ์ผ๋ก ์ฌ์ฉํ๊ณ , ์ ๊ธ์ ์ค์ ํ ํธ๋์ญ์ ์ด ํด์ ํ ๋๊น์ง ๋ค๋ฅธ ํธ๋์ญ์ ์ ํด๋น ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ค.
- ํจ์จ์ฑ ๋ฌธ์ : ๋ชจ๋ ํธ๋์ญ์ ์ด ๋ฐ์ดํฐ๋ฅผ ์ ๊ทธ๋ ๋ฐฉ์์, ํนํ ์ฝ๊ธฐ ์ ์ฉ ์์ ์ ๊ฒฝ์ฐ ๋นํจ์จ์ ์ผ ์ ์๋ค. ์ฝ๊ธฐ ์์ ์ ๋์์ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ์ ๊ทผํด๋ ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์, ์ด ๊ฒฝ์ฐ ๋ถํ์ํ ๋๊ธฐ ์๊ฐ์ด ๋ฐ์ํ ์ ์๋ค.
- 2๋จ๊ณ ๋กํน ๊ท์ฝ: ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ธฐ๋ฒ์ผ๋ก, 2๋จ๊ณ ๋กํน ๊ท์ฝ์ด ์ฌ์ฉ๋๋ฉฐ, ์ด๋ ํธ๋์ญ์ ์ด ์ ๊ธ์ ์ค์ ํ๊ณ ํด์ ํ๋ ์์ ์ ์๊ฒฉํ๊ฒ ๊ด๋ฆฌํด ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ์ ์งํ๋ ๋ฐฉ์
- ๊ต์ฐฉ ์ํ(Deadlock)
9. DB ๋ฐ๋๋ฝ์ ๋ํด์ ์ค๋ช ํด์ฃผ์ธ์.
- ๋ ๊ฐ ์ด์์ ํธ๋์ญ์ ์ด ์๋ก๊ฐ ๋ณด์ ํ ์์์ ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๋ฌดํํ ๋๊ธฐํ๋ ์ํ๋ฅผ ๋งํ๋ค. ๋ฐ๋๋ฝ์ด ๋ฐ์ํ๋ฉด ๊ด๋ จ๋ ํธ๋์ญ์ ๋ค์ ๋ ์ด์ ์งํํ ์ ์๊ฒ ๋๋ฉฐ, ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฑ๋ฅ๊ณผ ํจ์จ์ฑ์ด ์ฌ๊ฐํ๊ฒ ์ ํ๋ ์ ์๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ํธ๋์ญ์ ์ค ํ๋๋ฅผ ์ค๋จํ๊ณ ๋กค๋ฐฑํ์ฌ ๊ต์ฐฉ ์ํ๋ฅผ ๊ฐ์งํ๊ณ ํด๊ฒฐํด์ผ ํ๋ค.
๋ฉด์ ํผ๋๋ฐฑ
์ข์ ์
- ๊ฐ๋ ์ค๋ช ์ด ์ข์๋ค.
๋ถ์กฑํ ์
- "์ด์ "๋ผ๋ ํน์ ๋จ์ด๋ฅผ ๊ณ์ ์ด๋ค.
- ์ฒ์ฒํ ๋งํด๋ณด์, ๋จ์ด๋ฅผ ๋งํ ๋ ๋น ๋ฅด๊ฒ ๋งํ๋ค.
- ๋ฐ์์ ์์ด์ ์กฐ๊ธ ๋ช ํํ๊ฒ, ํนํ ์์ด๋จ์ด ๋งํ ๋ ํ๋ ค์ ๋งํ ๋ ์๋ค.
- ๊ฐ์์ค๋ฌ์ด ๊ผฌ๋ฆฌ์ง๋ฌธ์ ๋ง์ด ์ ๋ฆฌ๊ฐ ์๋๋ค.
- ์ ๋ฐ์ ์ผ๋ก ๋ฌดํ์ ์ด๋ค. ๋นํฉํ๋ฉด ์๋๋ค. ์์ด๋ณด์
์ถ๊ฐ: ์ทจ์ ์ค๋น์ ์์ด์ ๋ฉํ ๋์ ์กฐ์ธ
- ๋๋ง์ ๊ฐ์ , ์์ ๋ง์ ํน์ด์ ๋ง๋ค๊ธฐ
- ์์ฆ ๋ฉด์ ์์ ์ํคํ ์ณ ์ค๊ณ ์ด์ผ๊ธฐ๊ฐ ๋์จ๋ค. -> SAA ๊ผญ ๋ฐ์ ์ข...
- ์นดํ์นด ๋ฑ์ ์ค์ฌ์ฉ๋ณด๋ค ์ธ์ ์ฐ๋์ง์ ๋ํ ๊ฐ๋ ๊ณต๋ถ๋ฅผ ํด๋ณด์
- ๋ธ๋ก๊ทธ, ๊นํ๋ธ ์๋ ๋ฑ์ผ๋ก ๊พธ์คํ ๊ณต๋ถํ๋๊ฑธ ๋ณด์ฌ์ฃผ์
- ๊ธฐ์ ๋ฉด์ ์ ์ํ์
- ์ด์ง์์ ์ดํํ ์ ์๋ ๋ถ๋ถ
- ํ ์ด ํ๋ก์ ํธ๋ณด๋จ ํ์ฌ์ผ์ ํ๋ฉด์ ์์๋ ์ผ์์ ๊ฐ์ ์ ์ฐพ๋๊ฑด ์ด๋จ๊น?
- ํ์ฌ์์ ์ฃผ๋ ๊ฒ ์ด์์ผ๋ก ์ด๋ ฅ์์ ์ธ ์ ์๋ ๋ด์ฉ์ ์ฐพ์์ ์ค์ค๋ก ํด๋ณด์
'๐ปโโ๏ธ์ ๊ณต๊ณต๋ถ > ๋ฐ์ดํฐ๋ฒ ์ด์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐ์ดํฐ๋ฒ ์ด์ค 4์ฃผ์ฐจ ์คํฐ๋ ์ ๋ฆฌ (1) | 2024.09.02 |
---|---|
๋ฐ์ดํฐ๋ฒ ์ด์ค 3์ฃผ์ฐจ ์คํฐ๋ ์ ๋ฆฌ (1) | 2024.08.29 |
๋ฐ์ดํฐ๋ฒ ์ด์ค 2์ฃผ์ฐจ ์คํฐ๋ ์ ๋ฆฌ (0) | 2024.08.21 |
๋ฐ์ดํฐ๋ฒ ์ด์ค 1์ฃผ์ฐจ ์คํฐ๋ ์ ๋ฆฌ (0) | 2024.08.14 |