๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/SQL

[Oracle] TRANSACTION CONTROL ํŠธ๋žœ์žญ์…˜ ์ปจํŠธ๋กค

by OR15A 2024. 1. 5.
TRANSACTION์˜ ๊ฐœ๋…
  • ํŠธ๋žœ์žญ์…˜. Tx
  • ๋…ผ๋ฆฌ์ ์ธ ์—…๋ฌด์˜ ์ž‘์—… ๋‹จ์œ„
  • (์˜ˆ์‹œ- ๊ณ„์ขŒ์ด์ฒด = ‘์ถœ๊ธˆ’ + ‘์ž…๊ธˆ’ )

 

 

ํŠธ๋žœ์žญ์…˜์˜ ์†์„ฑ
A ์›์ž์„ฑ
Atomicity
ํ•˜๋‚˜์˜ ์›์ž์ ์ธ ์ž‘์—… ๋‹จ์œ„๋กœ ์ฒ˜๋ฆฌํ•จ.
ํ•˜๋‚˜์˜ ์ž‘์—…์ด๋ผ๋„ ์‹คํŒจํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜ ์ „์ฒด๊ฐ€ ์‹คํŒจ.
ํŠธ๋žœ์žญ์…˜ ๋‚ด์˜ ๋ชจ๋“  ์ž‘์—…์€ ๋ชจ๋‘ ์„ฑ๊ณต or ๋ชจ๋‘ ์‹คํŒจํ•ด์„œ ์›์ƒํƒœ๋กœ ๋กค๋ฐฑ
C ์ผ๊ด€์„ฑ
Consistency
ํŠธ๋žœ์žญ์…˜ ์‹œ์ž‘์ „๊ณผ ์ข…๋ฃŒํ›„ DB๋Š” ํ•ญ์ƒ ์ผ๊ด€๋œ ์ƒํƒœ ์œ ์ง€
I ๋…๋ฆฝ์„ฑ
Isolation
๊ฐ๊ฐ์˜ ํŠธ๋žœ์žญ์…˜์€ ๋…๋ฆฝ์ ์ธ ์ž‘์—… ๋‹จ์œ„.
ํŠธ๋žœ์žญ์…˜ ๊ฐ„์˜ ๋™๊ธฐํ™” ์œ ์ง€๋จ.
D ์ง€์†์„ฑ
Durability
ํŠธ๋žœ์žญ์…˜ ์„ฑ๊ณตํ›„ ๊ทธ ๊ฒฐ๊ณผ๋Š” ์˜๊ตฌ์ ์œผ๋กœ DB์— ์ €์žฅ๋˜์–ด์•ผ ํ•จ

 

 

 

ํŠธ๋žœ์žญ์…˜ ์ปจํŠธ๋กค

ํŠธ๋žœ์žญ์…˜ ์ปจํŠธ๋กค

 

 

๋ช…์‹œ์  ํŠธ๋žœ์žญ์…˜ ์ œ์–ด ๋ช…๋ น์–ด
๋ช…๋ น์–ด ์„ค๋ช…
COMMIT ๋ชจ๋“  ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‚ฌํ•ญ DB์— ์™„์ „ํžˆ ๋ฐ˜์˜. ํ˜„์žฌ ํŠธ๋žœ์žญ์…˜ ์ข…๋ฃŒ.
SAVEPOINT ํ˜„์žฌ์˜ ํŠธ๋žœ์žญ์…˜์— SAVEPOIINT ์ง€์ •ํ•จ.
ROLLBACK TO
์„ธ์ด๋ธŒ
ํฌ์ธํŠธ ์ด๋ฆ„
์•„์ง ์ €์žฅ์•ˆ๋œ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ทจ์†Œํ•˜๊ณ  ํ˜„์žฌ์˜ ํŠธ๋žœ์žญ์…˜ ์ข…๋ฃŒํ•จ.
๊ทธ๋ƒฅ ๋กค๋ฐฑ=๋งˆ์ง€๋ง‰ ์ปค๋ฐ‹์ƒํƒœ๋กœ.

 

 

์•”์‹œ์  ํŠธ๋žœ์žญ์…˜ ์ œ์–ด ๋ช…๋ น์–ด
๋ช…๋ น์–ด ์„ค๋ช…
์ž๋™ COMMIT
=AUTO COMMIT
DDL๋ช…๋ น(๊ตฌ์กฐ๊ด€๋ จ ๋ช…๋ น์˜ˆ: CREATE TABLE
DCL๋ช…๋ น(๊ถŒํ•œ๊ด€๋ จ ๋ช…๋ น)
์ปค๋ฐ‹์ด๋‚˜ ๋กค๋ฐฑ ์‹คํ–‰ ์•ˆ ํ•˜๊ณ  SQL*Plus๋ฅผ ์ •์ƒ์  ์ข…๋ฃŒํ•จ
ROLLBACK
TO ์„ธ์ด๋ธŒ
ํฌ์ธํŠธ ์ด๋ฆ„
SQL*Plus์˜ ๋น„์ •์ƒ์ ์ธ ์ข…๋ฃŒ
์‹œ์Šคํ…œ ์‹คํŒจ
  • AUTO COMMIT
  • ON/TRUE ์ƒํƒœ: ๋ช…๋ น๋งˆ๋‹ค ์ปค๋ฐ‹ํ•จ. ์ด ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜์ด ๋ถˆ๊ฐ€๋Šฅํ•จ. OFF/FALSE๋กœ ๋ฐ”๊พธ๊ณ  ํ•˜๊ธฐ.

 

 

COMMIT๊ณผ ROLLBACK ์ „/ํ›„ ๋ฐ์ดํ„ฐ ์ƒํƒœ
ROLLBACK ์ „
COMMIT ์ „
โžค๋ฐ์ดํ„ฐ ์ด์ „ ์ƒํƒœ ๋ณต๊ตฌ ๊ฐ€๋Šฅ (๋ฒ„ํผ๋งŒ ์˜ํ–ฅ๋ฐ›์•„์„œ)
โžคํ˜„์žฌ์‚ฌ์šฉ์ž SELECT๋ฌธ์œผ๋กœ ์ž‘์—…๊ฒฐ๊ณผ ํ™•์ธ๊ฐ€๋Šฅ
โžค๋‹ค๋ฅธ์‚ฌ์šฉ์ž๋Š” ํ˜„์žฌ์‚ฌ์šฉ์ž์˜ ์ˆ˜ํ–‰์ž‘์—… ๊ฒฐ๊ณผ ๋ชป๋ด„
โžค๋ณ€๊ฒฝ๋œ ํ–‰์€ LOCK์„ค์ •๋˜์–ด ๋‹ค๋ฅธ์‚ฌ์šฉ์ž๊ฐ€ ๋ณ€๊ฒฝ๋ถˆ๊ฐ€๋Šฅ (DB์— ๋ฐ˜์˜์€ ์•ˆ๋ผ๋„ ๋‹ค๋ฅธ์‚ฌ๋žŒ์ด ์ž…๋ ฅ/์ˆ˜์ • ๋ชปํ•จ)
ROLLBACK ํ›„ โžค๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ทจ์†Œ
โžค์ด์ „๋ฐ์ดํ„ฐ ๋‹ค์‹œ ์žฌ์ €์žฅ๋จ (DB์—์„œ ์ƒˆ๋กœ ๊ฐ€์ ธ์˜จ๋‹ค)
โžค๊ด€๋ จ๋œ ํ–‰์— ๋Œ€ํ•œ LOCK์ด ํ’€๋ ค์„œ ๋‹ค๋ฅธ์‚ฌ์šฉ์ž๊ฐ€ ์กฐ์ž‘๊ฐ€๋Šฅ
COMMIT ํ›„ โžค๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ DB์— ๋ฐ˜์˜๋จ
โžค์ด์ „ ๋ฐ์ดํ„ฐ๋Š” ์˜์›ํžˆ ์‚ฌ๋ผ์ง (๋ฐฑ์—…์•ˆํ–ˆ์„ ๋•Œ)
โžค๋ชจ๋“  ์‚ฌ์šฉ์ž๊ฐ€ ๋‚ด๊ฐ€ ์ž‘์—…ํ•œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Œ
โžค๊ด€๋ จ๋œ ํ–‰์— ๋Œ€ํ•œ LOCK์ด ํ’€๋ ค์„œ ๋‹ค๋ฅธ์‚ฌ์šฉ์ž๊ฐ€ํ–‰ ์กฐ์ž‘ ๊ฐ€๋Šฅํ•จ