๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํ๋ฅผ ๋ณํ์ํค๊ธฐ ์ํด ์ํํ๋ ์์ ๋จ์
์ํ๋ฅผ ๋ณํ์ํจ๋ค๋ ๊ฒ โ SQL ์ง์์ด๋ฅผ ํตํด DB์ ์ ๊ทผํ๋ ๊ฒ
- SELECT
- INSERT
- DELETE
- UPDATE
์์ ๋จ์ โ ๋ง์ SQL ๋ช ๋ น๋ฌธ๋ค์ ์ฌ๋์ด ์ ํ๋ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ํ๋ ๊ฒ
์์) ์ฌ์ฉ์ A๊ฐ ์ฌ์ฉ์ B์๊ฒ ๋ง์์ ์ก๊ธํ๋ค.
* ์ด๋ DB ์์
- 1. ์ฌ์ฉ์ A์ ๊ณ์ข์์ ๋ง์์ ์ฐจ๊ฐํ๋ค : UPDATE ๋ฌธ์ ์ฌ์ฉํด ์ฌ์ฉ์ A์ ์๊ณ ๋ฅผ ๋ณ๊ฒฝ
- 2. ์ฌ์ฉ์ B์ ๊ณ์ข์ ๋ง์์ ์ถ๊ฐํ๋ค : UPDATE ๋ฌธ์ ์ฌ์ฉํด ์ฌ์ฉ์ B์ ์๊ณ ๋ฅผ ๋ณ๊ฒฝ
ํ์ฌ ์์
๋จ์ : ์ถ๊ธ UPDATE๋ฌธ + ์
๊ธ UPDATE๋ฌธ
โ ์ด๋ฅผ ํตํ์ด ํ๋์ ํธ๋์ญ์
์ด๋ผ๊ณ ํ๋ค.
- ์ ๋ ์ฟผ๋ฆฌ๋ฌธ ๋ชจ๋ ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์ด์ผ๋ง "ํ๋์ ์์
(ํธ๋์ญ์
)"์ด ์๋ฃ๋๋ ๊ฒ์ด๋ค. `Commit`
- ์์
๋จ์์ ์ํ๋ ์ฟผ๋ฆฌ ์ค ํ๋๋ผ๋ ์คํจํ๋ฉด ๋ชจ๋ ์ฟผ๋ฆฌ๋ฌธ์ ์ทจ์ํ๊ณ ์ด์ ์ํ๋ก ๋๋ ค๋์์ผํ๋ค. `Rollback`
์ฆ, ํ๋์ ํธ๋์ญ์ ์ค๊ณ๋ฅผ ์ ๋ง๋๋ ๊ฒ์ด ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋ ๋ง์ ์ด์ ์ ๊ฐ์ ธ๋ค์ค๋ค.
-
์์์ฑ(Atomicity)
ํธ๋์ญ์ ์ด DB์ ๋ชจ๋ ๋ฐ์๋๊ฑฐ๋, ํน์ ์ ํ ๋ฐ์๋์ง ์์์ผ ๋๋ค.
-
์ผ๊ด์ฑ(Consistency)
ํธ๋์ญ์ ์ ์์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ ํญ์ ์ผ๊ด์ฑ ์์ด์ผ ํ๋ค.
-
๋ ๋ฆฝ์ฑ(Isolation)
๋ ์ด์์ ํธ๋์ญ์ ์ด ๋์์ ๋ณํ ์คํ๋๊ณ ์์ ๋, ์ด๋ค ํธ๋์ญ์ ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ฐ์ฐ์ ๋ผ์ด๋ค ์ ์๋ค.
-
์ง์์ฑ(Durability)
ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋์์ผ๋ฉด, ๊ฒฐ๊ณผ๋ ์๊ตฌ์ ์ผ๋ก ๋ฐ์๋์ด์ผ ํ๋ค.
ํ๋์ ํธ๋์ญ์ ์ด ์ฑ๊ณต์ ์ผ๋ก ๋๋ฌ๊ณ , DB๊ฐ ์ผ๊ด์ฑ์๋ ์ํ์ผ ๋ ์ด๋ฅผ ์๋ ค์ฃผ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ฐ์ฐ
ํ๋์ ํธ๋์ญ์ ์ฒ๋ฆฌ๊ฐ ๋น์ ์์ ์ผ๋ก ์ข ๋ฃ๋์ด ํธ๋์ญ์ ์์์ฑ์ด ๊นจ์ง ๊ฒฝ์ฐ
transaction์ด ์ ์์ ์ผ๋ก ์ข ๋ฃ๋์ง ์์์ ๋, last consistent state (์) Transaction์ ์์ ์ํ) ๋ก roll back ํ ์ ์์.
์ํฉ์ด ์ฃผ์ด์ง๋ฉด DB ์ธก๋ฉด์์ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ ์์์ง ๋๋ตํ ์ ์์ด์ผ ํจ
์ดํด๋ฅผ ์ํ 2๊ฐ์ง ๊ฐ๋ : DBMS์ ๊ตฌ์กฐ / Buffer ๊ด๋ฆฌ ์ ์ฑ
- DBMS์ ๊ตฌ์กฐ
ํฌ๊ฒ 2๊ฐ์ง : Query Processor (์ง์ ์ฒ๋ฆฌ๊ธฐ), Storage System (์ ์ฅ ์์คํ )
์ ์ถ๋ ฅ ๋จ์ : ๊ณ ์ ๊ธธ์ด์ page ๋จ์๋ก disk์ ์ฝ๊ฑฐ๋ ์ด๋ค.
์ ์ฅ ๊ณต๊ฐ : ๋นํ๋ฐ์ฑ ์ ์ฅ ์ฅ์น์ธ disk์ ์ ์ฅ, ์ผ๋ถ๋ถ์ Main Memory์ ์ ์ฅ
- Page Buffer Manager or Buffer Manager
DBMS์ Storage System์ ์ํ๋ ๋ชจ๋ ์ค ํ๋๋ก, Main Memory์ ์ ์งํ๋ ํ์ด์ง๋ฅผ ๊ด๋ฆฌํ๋ ๋ชจ๋
Buffer ๊ด๋ฆฌ ์ ์ฑ ์ ๋ฐ๋ผ, UNDO ๋ณต๊ตฌ์ REDO ๋ณต๊ตฌ๊ฐ ์๊ตฌ๋๊ฑฐ๋ ๊ทธ๋ ์ง ์๊ฒ ๋๋ฏ๋ก, transaction ๊ด๋ฆฌ์ ๋งค์ฐ ์ค์ํ ๊ฒฐ์ ์ ๊ฐ์ ธ์จ๋ค.
- UNDO
ํ์ํ ์ด์ : ์์ ๋ Page๋ค์ด **Buffer ๊ต์ฒด ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ผ์ ๋์คํฌ์ ์ถ๋ ฅ**๋ ์ ์์. Buffer ๊ต์ฒด๋ transaction๊ณผ๋ ๋ฌด๊ดํ๊ฒ buffer์ ์ํ์ ๋ฐ๋ผ์, ๊ฒฐ์ ๋จ. ์ด๋ก ์ธํด, ์ ์์ ์ผ๋ก ์ข ๋ฃ๋์ง ์์ transaction์ด ๋ณ๊ฒฝํ page๋ค์ ์์ ๋ณต๊ตฌ ๋์ด์ผ ํ๋๋ฐ, ์ด ๋ณต๊ตฌ๋ฅผ undo๋ผ๊ณ ํจ.
-
2๊ฐ์ ์ ์ฑ (์์ ๋ ํ์ด์ง๋ฅผ ๋์คํฌ์ ์ฐ๋ ์์ ์ผ๋ก ๋ถ๋ฅ)
steal : ์์ ๋ ํ์ด์ง๋ฅผ ์ธ์ ๋ ์ง ๋์คํฌ์ ์ธ ์ ์๋ ์ ์ฑ
- ๋๋ถ๋ถ์ DBMS๊ฐ ์ฑํํ๋ Buffer ๊ด๋ฆฌ ์ ์ฑ
- UNDO logging๊ณผ ๋ณต๊ตฌ๋ฅผ ํ์๋ก ํจ.
ยฌsteal : ์์ ๋ ํ์ด์ง๋ค์ EOT (End Of Transaction)๊น์ง๋ ๋ฒํผ์ ์ ์งํ๋ ์ ์ฑ
- UNDO ์์ ์ด ํ์ํ์ง ์์ง๋ง, ๋งค์ฐ ํฐ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ๊ฐ ํ์ํจ.
- REDO
์ด๋ฏธ commitํ transaction์ ์์ ์ ์ฌ๋ฐ์ํ๋ ๋ณต๊ตฌ ์์
Buffer ๊ด๋ฆฌ ์ ์ฑ ์ ์ํฅ์ ๋ฐ์
-
Transaction์ด ์ข ๋ฃ๋๋ ์์ ์ ํด๋น transaction์ด ์์ ํ page๋ฅผ ๋์คํฌ์ ์ธ ๊ฒ์ธ๊ฐ ์๋๊ฐ๋ก ๊ธฐ์ค.
FORCE : ์์ ํ๋ ๋ชจ๋ ํ์ด์ง๋ฅผ Transaction commit ์์ ์ disk์ ๋ฐ์
transaction์ด commit ๋์์ ๋ ์์ ๋ ํ์ด์ง๋ค์ด disk ์์ ๋ฐ์๋๋ฏ๋ก redo ํ์ ์์.
ยฌFORCE : commit ์์ ์ ๋ฐ์ํ์ง ์๋ ์ ์ฑ
transaction์ด disk ์์ db์ ๋ฐ์๋์ง ์์ ์ ์๊ธฐ์ redo ๋ณต๊ตฌ๊ฐ ํ์. (๋๋ถ๋ถ์ DBMS ์ ์ฑ )