ํธ๋์ญ์ (Transaction)
ํ ๋ฌถ์์ผ๋ก ์ฒ๋ฆฌ๋์ด์ผ ํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณ๊ฒฝ ๋ช ๋ น์ด๋ค์ ์งํฉ
ALL or NOTHING
ํธ๋์ญ์ ํน์ฑ : ACID
* ์์์ฑ(Atomocity)
- ํธ๋์ญ์ ์ ๋ถ๋ฆฌํ ์ ์๋ ํ๋์ ๋จ์
- ์์ ์ด ๋ชจ๋ ์ํ๋๊ฑฐ๋ ํ๋๋ ์ํ๋์ง ์์์ผ ํจ
* ์ผ๊ด์ฑ(Consistency)
- ํธ๋์ญ์ ์์ ์ฌ์ฉ๋๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ ์ผ๊ด๋์ด์ผ ํจ
- ํธ๋์ญ์ ์ ํ์ ๋ฐ์ดํฐ๋ ์ผ๊ด์ฑ์ ๊ฐ์ ธ์ผ ํจ
* ๊ฒฉ๋ฆฌ์ฑ(Isolation)
- ํ์ฌ ํธ๋์ญ์ ์ด ์ ๊ทผํ๊ณ ์๋ ๋ฐ์ดํฐ๋, ๋ค๋ฅธ ํธ๋์ญ์ ์ผ๋ก๋ถํฐ ๊ฒฉ๋ฆฌ๋์ด์ผ ํจ
- ํธ๋์ญ์ ์ด ์๋ฃ๋๊ธฐ๊น์ง ํธ๋์ญ์ ์ด ๋ณ๊ฒฝํ๋ ๋ฐ์ดํฐ๋, ๋ค๋ฅธ ํธ๋์ญ์ ์๊ฒ ๋ณด์ฌ์ ธ์๋ ์๋จ
* ์์์ฑ(Durability)
- ํธ๋์ญ์ ์ด ์ ์์ ์ผ๋ก ์ข ๋ฃ๋๋ค๋ฉด, ๊ทธ ๊ฒฐ๊ณผ๋ ์์คํ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์๊ตฌ์ ์ผ๋ก ๋จ์์ผ ํจ
- ํน์ ์๋ฃ๋ ๋ฐ์ดํฐ์ ์ฅ์ ๊ฐ ์๊ธฐ๋ฉด ์ด๋ฅผ ๋ค์ ํ๋ณตํ ์ ์์ด์ผ ํจ
ํธ๋์ญ์ ๊ตฌ์กฐ
- ํธ๋์ญ์ ์ ์ฒซ๋ฒ์งธ SQL๋ฌธ์ด ์์๋๋ฉด ์๋์ผ๋ก ์์๋จ
- DML, DDL and SET TRANSACTION ๋ฌธ
- ํธ๋์ญ์ ์ด ์์๋๋ฉด ์ค๋ผํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ธ๋ ๋ฐ์ดํฐ ์ธ๊ทธ๋จผํธ(undo data segments)๋ฅผ ํ๋ณด
- ํธ๋์ญ์ ID๋ฅผ ๋ถ์ฌํ ํ, ํธ๋์ญ์ ํ ์ด๋ธ์ ์ ๋ณด๋ฅผ ์ฝ์
- V$TRANSACTION ๋ทฐ๋ฅผ ํตํด ํธ๋์ญ์ ์ํ๋ฅผ ํ์ธํ ์ ์์
- ํธ๋์ญ์ ์ ์ข ๋ฃ : ๋ช ์์ ์ผ๋ก COMMIT, ROLLBACK ๋ฌธ์ ์คํ์ํค๋ ๊ฒฝ์ฐ / DDL ๋ช ๋ น์ด๋ฅผ ์คํ์ํค๋ ๊ฒฝ์ฐ
ํธ๋์ญ์ ์ ์ด
- ํธ๋์ญ์ ๋ด์ DML ๋ฌธ์ฅ์ ์ํด ์ด๋ฃจ์ด์ง๋ ๋ณ๊ฒฝ์ ๊ด๋ฆฌ
- ํธ๋์ญ์ ์์ ์ด ์ ์ํ๋๊ณ , ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ์ ์ ์งํ๊ฒ ํจ
COMMIT | - ํ์ฌ ํธ๋์ญ์
์ ์ข
๋ฃํ๊ณ ๋ณ๊ฒฝ ์ฌํญ์ ์๊ตฌ์ ์ผ๋ก ์ ์ง๋๋๋ก ํจ (๋์คํฌ์ ๋ฐ์) - SAVEPOINT๋ฅผ ์ ๊ฑฐํ๊ณ , LOCK์ ํด์ |
ROLLBACK | ํ์ฌ ํธ๋์ญ์ ์์ ์ด๋ฃจ์ด์ง ๋ชจ๋ ์์ ์ ๋๋๋ฆผ |
ROLLBACK TO SAVEPOINT | ๋ง์ง๋ง SAVEPOINT ํ์ ์งํ๋ ์์ ์ ๋๋๋ฆผ |
SAVEPOINT | ํธ๋์ญ์ ์ด ์งํ๋๋ ์ค๊ฐ์ ROLLBACKํ ์ง์ ์ ์ ์ฅ |
'software engineering > ๋ฐ์ดํฐ๋ฒ ์ด์ค์ค๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[DB] ๋ฝ๊ณผ ๋ฐ๋๋ฝ (Dead Lock) (0) | 2023.11.06 |
---|---|
[DB] ๋ฐ์ดํฐ ๋์์ฑ๊ณผ ์ผ๊ด์ฑ (0) | 2023.11.06 |
[DB] ์ธ๋ฑ์ค ์ ์ (0) | 2023.10.12 |
[DB] ์ธ๋ฑ์ค (Index) (1) | 2023.10.11 |
[DB] ์ฐธ์กฐ ๋ฌด๊ฒฐ์ฑ (0) | 2023.10.07 |