1. ํธ๋์ญ์
- DBMS์์ ์คํ๋๋ ๋จ์ผ ์์ ๋จ์
- ํ ๋ฒ์ ์คํ๋์ด์ผ ํ๋ ๋จ์
- ํนํ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ๋ฐ์ํ ์ ์๋ ๋ค์ค ์ฌ์ฉ์ ํ๊ฒฝ์์ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ๋ฐ ์ค์
2. ํธ๋์ญ์ ์ฃผ์ ์์ฑ: ACID
2.1. ์์์ฑ
- ํธ๋์ญ์ ๋ด์ ๋ชจ๋ ์์ ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋๋ก ๋ณด์ฅํ๋ค.
- ์์ ์ด ์คํจํ๋ฉด ํธ๋์ญ์ ์ค๋จ -> ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ด rollback -> ์๋ ์ํ ์ ์ง
2.2. ์ผ๊ด์ฑ
- DB์ ๋ฌด๊ฒฐ์ฑ ์ ์ฝ ์กฐ๊ฑด๊ณผ ๊ท์น์ ์ ์งํ๋ฉด์ DB๋ฅผ ํ๋์ ์ ํจํ ์ํ์์ ๋ค๋ฅธ ์ ํจํ ์ํ๋ก ๊ฐ์ ธ์ค๋๋ก ๋ณด์ฅํ๋ค.
2.3. ๋ ๋ฆฝ/๊ฒฉ๋ฆฌ์ฑ
- ์ธ๋ถ ๊ฐ์ญ ์์ด ํธ๋์ญ์ ์ด ๋ ๋ฆฝ์ ์ผ๋ก ๋ฐ์ํ๋๋ก ๋ณด์ฅํ๋ค.
- ํธ๋์ญ์ ์ ์ค๊ฐ์ํ๋ ๋ค๋ฅธ ํธ๋์ญ์ ์์ ๋ณด์ด์ง ์์ผ๋ฏ๋ก, ํธ๋์ญ์ ์ ๋ถ๋ถ์ ์ธ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ ์๊ฒ ๋๋ค.
2.4. ์๊ตฌ์ฑ
- ์ผ๋จ ํธ๋์ญ์ ์ด commit ๋๋ฉด ์์คํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ผ๋ ๋ณ๊ฒฝ ์ฌํญ์ด ์๊ตฌ์ ์ผ๋ก ์ ์ง๋๋๋ก ๋ณด์ฅํ๋ค.
DBMS์์ Transaction์ ๊ตฌํํ๋ ค๋ฉด ์๋์ ๊ฐ์ SQL๋ฌธ์ ์ฌ์ฉํ๋ค.
BEGIN TRANSACTION;
INSERT INTO accounts (account_id, balance) VALUES (1, 1000);
UPDATE accounts SET balance = balance - 100 WHERE account_id = 1;
UPDATE accounts SET balance = balance + 100 WHERE account_id = 2;
COMMIT;
์ ๊ณ์ข 1์ ์ฝ์ ํ๊ณ , 1์์ 2๋ผ๋ ๊ณ์ข๋ก 100์ ์ด์ฒดํ๋ ์์ ์ด๋ค.
์ด๋ฌํ ์์ ์ค ํ๋๋ผ๋ ์คํจํ๋ฉด ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง๋ค.
โ
์ผ๊ด์ฑ: ๋ชจ๋ ์์ ์ด๋ ํธ๋์ญ์ ์ดํ ๋ฐ์ดํฐ์ ์ ํ์ฑ๊ณผ ์ ํจ์ฑ
๋ฌด๊ฒฐ์ฑ: ์ ํ์ฑ, ์ ํจ์ฑ, ์ผ๊ด์ฑ ์ ์ง
์์ ์ค ํ๋๋ผ๋ ์คํจํ๋๋ผ๋, ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํด์ผ ํ๋ค.
๊ทธ๋ฌ๊ธฐ ์ํด์ ํธ๋์ญ์ rollback์ ํ๋ค.
๋ค์ ํ๋ก ์ ๋ฆฌํด๋ณด์.
Atomicity | ALL or NOTHING commit / rollback |
Consistency | ex. ๊ณ์ข ์์ก์ ์์๊ฐ ๋ ์ ์์ |
Isolation | ํธ๋์ญ์ ์์ ์ํ ์ค์๋ ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ํฅ์ ์ฃผ์ด์๋/๋ฐ์์๋ ์ ๋จ |
Durability | ์์คํ ๋ฌธ์ ์ฌ๋ถ์ ์๊ด์์ด ์๋ฃ๋ ๋ฐ์ดํฐ๋ ์๊ตฌ์ ์ผ๋ก DB์ ์ ์ฅ |
2. ๋์์ฑ ์ ์ด ๋ฉ์ปค๋์ฆ
ํนํ ๋ค์ค ์ฌ์ฉ์ ํ๊ฒฝ์์ ํธ๋์ญ์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋์์ฑ ์ ์ด ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ค.
์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ DB์ ์ ๊ทผํ ๋ ๋ฐ์ํ ๋ฌธ์ ๋ฅผ ๋ฐฉ์ง/ํด๊ฒฐํ๋ค.
๋์์ฑ ์ ์ด์ ์ฅ์ ?
โก๏ธ ์ฌ๋ฌ ์ฌ์ฉ์๊ฐ ๋์์ ๊ฐ์ DB์ ์ ๊ทผํ ๋ ๋ฐ์ํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ์ค
โก๏ธ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ, ์ผ๊ด์ฑ ์ ์ง
โก๏ธ ์ง๋ ฌ์ฑ ๋ณด์ฅ: ์์ฐจ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ์ ๋์ผํ ์ํ๋ฅผ ์ ์ง
โก๏ธ ์์คํ ์ฒ๋ฆฌ๋ ์ฆ๊ฐ
๋์์ฑ ์ ์ด์ ๋ฌธ์ ์ โ
1. ๊ฐฑ์ ์์ค(Update Loss)
- ๋ ํธ๋์ญ์ ์ด ๋์์ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ ๋ ํ ํธ๋์ญ์ ์ ๋ณ๊ฒฝ์ฌํญ์ด ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ํด ๋ฎ์ด์ฐ๊ฒ ๋์ด
- ์๋์๋ ๋ค๋ฅธ ๊ฒฐ๊ด๊ฐ์ด ์ ์ฅ๋จ
2. ์ํ ๊ฒฐ์ ์ค๋ฅ(Error in Determining Status)
- ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์คํ๋ ๋ ๋ฐ์ดํฐ์ ์ํ๋ฅผ ์๋ชป ํ๋จํ์ฌ ์๊ธฐ๋ ์ค๋ฅ
- ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ํด์นจ
3. ๋ชจ์(Contradiction)
- ๋์์ฑ ์ ์ด๊ฐ ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์ผ๋ฉด ๋ ๊ฐ ์ด์์ ํธ๋์ญ์ ์ด ์๋ก ์์ถฉ๋๋ ์์ ์ ์ํํ ์ ์์
- ํ๋์ ํธ๋์ญ์ ์ด ๋ณ๊ฒฝํ๋ ๋์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ํด๋น ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง๊ฒ ๋จ
4. ์ฐ์ ๋ณต๊ท(Cascading Rollback)
- ํ ํธ๋์ญ์ ์ด rollback ํ ๋, ์ฐ๊ด๋ ํธ๋์ญ์ ๋ ๊ฐ์ด rollback์ ๋ชป ํ๋ ๊ฒฝ์ฐ
'๐๏ธData Base ์๋ ๊ฒ๋ ๋ค์๋ณด์' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
DB ์ฅ์ ํ๋ณต ๊ธฐ๋ฒ: REDO, UNDO (0) | 2024.08.13 |
---|---|
[JOIN] RDBMS์ ๊ถ๊ทน์ ๋ชฉ์ (0) | 2024.08.04 |
[DB] Basic SQL, DB ๊ตฌ์ฑ ์์ (0) | 2024.08.04 |