๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
ORACLE/DB

[Oracle] Transaction ์™œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑธ๊นŒ์š”? :: ๋งˆ์ด์ž๋ชฝ

by ๐ŸŒปโ™š 2020. 3. 25.

์€ํ–‰ ์†ก๊ธˆ์ฒ˜๋ฆฌ

A๊ณ„์ขŒ์—์„œ B๊ณ„์ขŒ๋กœ $5,000๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์†ก๊ธˆํ•˜๋Š”๋ฐ ์ฒ˜๋ฆฌ๋˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค.  A๊ณ„์ขŒ์—์„œ B๊ณ„์ขŒ๋กœ ์†ก๊ธˆ ์š”์ฒญ์„ ํ•˜๋ฉด

1. A๊ณ„์ขŒ์—์„œ $5,000๋ฅผ ์ถœ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

2. B๊ณ„์ขŒ์— $5,000๋ฅผ ์ž…๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿผ ๊ฒฐ๊ณผ๋กœ A๊ณ„์ขŒ์—๋Š” $5,000 B๊ณ„์ขŒ์—๋Š” $10,000๊ฐ€ ๋˜์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

 

 

์œ„ ์ด๋ฏธ์ง€๋Š” ์†ก๊ธˆ ์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์ž…๋‹ˆ๋‹ค.

1. A๊ณ„์ขŒ์—์„œ $5,000๋ฅผ ์ถœ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.

2. ์—๋Ÿฌ ๋ฐœ์ƒ

์†ก๊ธˆ์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ A๊ณ„์ขŒ์—์„œ $5,000๋ฅผ ์ถœ๊ธˆํ•˜๊ณ  B๊ณ„์ขŒ๋กœ๋Š” ๋ˆ์ด ์ž…๊ธˆ๋˜์ง€ ์•Š์•„ $5,000๊ฐ€ ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค.

 

์‹ค์ œ ์€ํ–‰์—์„œ ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์—ฌ๋Ÿฌ ๋ฐฉ๋ฉด์œผ๋กœ ์—„์ฒญ๋‚œ ํ”ผํ•ด๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ์ƒํ™ฉ์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๋ถ€์ •ํ•ฉ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ, ๋‹ค์‹œ ์›์ƒ๋ณต๊ท€ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ์„ ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด Transacation์„ ์‚ฌ์šฉํ•ฉ๋‚˜๋‹ค.

 

 

Transaction ์ด๋ž€?

Transaction์€ ์—…๋ฌด์˜ ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ž‘์—…์„ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ ๋ฌถ์–ด ๋ฐ˜์˜๊ณผ ์›์ƒ๋ณต๊ท€๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์œ„ ์€ํ–‰ ์†ก๊ธˆ์˜ˆ์‹œ์—์„œ๋Š” A๊ณ„์ขŒ์—์„œ $5,000๋ฅผ ์ถœ๊ธˆํ•˜๊ณ  B๊ณ„์ขŒ๋กœ $5,000๋ฅผ ์ž…๊ธˆํ•˜๋Š” ๊ฒƒ์„ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„! ์†ก๊ธˆ์— ๋Œ€ํ•œ ํ•˜๋‚˜์˜ ๋‹จ์œ„๋กœ ๋ฌถ์–ด ์ž‘์—…์„ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค.

 

๋น„์ •์ƒ ์ฒ˜๋ฆฌ๋˜์–ด ๋ฐ์ดํ„ฐ์˜ ๋ถ€์ •ํ•ฉ์ด ๋ฐœ์ƒํ–ˆ์„ ๋•Œ๋Š” ์›์ƒ ๋ณต๊ท€ํ•˜๊ณ , ์ •์ƒ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์ง„ํ–‰๋˜์—ˆ๋‹ค๋ฉด ๋ฐ์ดํ„ฐ์— ์ตœ์ข…์ ์œผ๋กœ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค. Transaction์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐ์ดํ„ฐ์˜ ๋ถ€์ •ํ•ฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

Commit & Rollback

์ถœ์ฒ˜ : https://kdata.or.kr

ํ•˜๋‚˜์˜ Transaction์˜ ์ฒ˜๋ฆฌ๊ณผ์ • ์ž…๋‹ˆ๋‹ค.

 Transaction์˜ ์ฒ˜๋ฆฌ๊ฐ€ ์ด์ƒ์—†์ด ์™„๋ฃŒ๋˜๋ฉด ์˜๊ตฌ์ ์ธ ๋ฐ˜์˜์„ ์œ„ํ•ด COMMIT์ž‘์—…์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

Transaction์˜ ์ฒ˜๋ฆฌ๊ณผ์ •์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Aborted ์ƒํƒœ๋กœ Transaction์˜ ์‹œ์ž‘ ์ „ ์ƒํƒœ๋กœ ROLLBACK ์ž‘์—…์„ ํ•ฉ๋‹ˆ๋‹ค.

 

 

Transaction์˜ ํŠน์ง• ACID

์›์ž์„ฑ(ATOMICITY)

ALL OR NOTHING์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ถ„์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š”๊ฒƒ ์—†์ด, ๋ชจ๋‘ ์„ฑ๊ณต์ ์œผ๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜, ์ „ํ˜€ ์‹คํ–‰๋˜์ง€ ์•Š์€ ์ฑ„๋กœ ๋‚จ์•„ ์žˆ๋Š” ํŠน์ง•์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ์œ„์˜ ์€ํ–‰ ์†ก๊ธˆ ์ฒ˜๋ฆฌ์˜ˆ์‹œ์—์„œ Transaction์˜ ์›์ž์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ผ๊ด€์„ฑ(CONSISTENCY)

์„ฑ๊ณต์ ์œผ๋กœ Transaction์ด ์™„๋ฃŒ๋˜๋ฉด ์ผ๊ด€์ ์ธ DB ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์ฆ‰, SELECT ํ•˜๋Š” ์‹œ์ ์—์„œ DB์— ๋ณ€๊ฒฝ์ด ํ™•์ •๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ์–ด ํ•ญ์ƒ ์ผ๊ด€์ ์ธ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค. ์ผ๊ด€์„ฑ์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์ฝ๊ธฐ ์ผ๊ด€์„ฑ๊ณผ ๊ด€๋ จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

๊ฒฉ๋ฆฌ์„ฑ(ISOLATION)

Transaction ์ˆ˜ํ–‰์‹œ ๋‹ค๋ฅธ Transaction์˜ ์ž‘์—…์ด ๋ผ์–ด๋“ค์ง€ ๋ชปํ•˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ํŠน์ง•์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋˜๋Š” ๋„์ค‘์— ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ์˜ํ–ฅ์„ ๋ฐ›์•„ ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค.

 

์ง€์†์„ฑ(DURABILITY)

์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ Transaction์€ Database์— ์˜๊ตฌ์ ์œผ๋กœ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

 

 

Transaction์˜ ์‹œ์ž‘๊ณผ ๋

์ง€๊ธˆ๊นŒ์ง€ Transaaction์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ดค์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด Transaction์˜ ์‹œ์ž‘๊ณผ ๋์€ ์–ธ์ œ ์ผ๊นŒ์š”?

 

Transaction์˜ ์‹œ์ž‘

Transaction์˜ ์‹œ์ž‘์€ ์ด์ „ Transaction์ด ๋๋‚˜๊ณ  ์ฒซ๋ฒˆ์งธ ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ๋ฌธ์žฅ(DML SQL ๋ฌธ)์ด ์‹œ์ž‘์ž…๋‹ˆ๋‹ค.

์ฆ‰, COMMIT์ด ์™„๋ฃŒ๋˜๊ณ  ๋‹ค์Œ์œผ๋กœ ์˜ค๋Š” DML ๋ช…๋ น๋ฌธ์ž…๋‹ˆ๋‹ค. DDL๊ณผ DCL ๋ช…๋ น์€ ๋ช…๋ น์ด ํ•˜๋‚˜์˜ TRANSACTION์œผ๋กœ DML๊ณผ ๋‹ฌ๋ฆฌ ์‹คํ–‰์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด ๋ฐ”๋กœ COMMIT ๋ฉ๋‹ˆ๋‹ค.

 

Transaction์˜ ๋

Transaction์˜ ๋์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ 4๊ฐ€์ง€๋กœ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

 

1. Transaction COMMIT ๋˜๋Š” ROLLBACK๋ฌธ์„ ์‹คํ–‰ํ•œ ๊ฒฝ์šฐ

์—ฌ๋Ÿฌ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋‹ค COMMIT ๋˜๋Š” ROLLBACK๋ฌธ์„ ์‹คํ–‰ํ•˜๋ฉด Transaction์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

 

2. DDL ๋˜๋Š” DCL๋ฌธ ์‹คํ–‰

DML ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๋‹ค๊ฐ€ ์ค‘๊ฐ„์— DDL์ด๋‚˜ DCL๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์•”์‹œ์  COMMIT์„ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค. DDL๊ณผ DCL ๋ช…๋ น์€ ๋ช…๋ น์ด ํ•˜๋‚˜์˜ Transaction์ด๋ผ๊ณ  ํ–ˆ์Šต๋‹ˆ๋‹ค. DDL์ด๋‚˜ DCL ๋ช…๋ น์„ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์•”์‹œ์ ์œผ๋กœ ์ด์ „ Transaction์„ COMMITํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

3. SQL DEVELOPER, SQL PLUS ์ข…๋ฃŒ

์‚ฌ์šฉํ•˜๋Š” DBMS๋ฅผ ์ข…๋ฃŒํ•˜๊ฒŒ ๋˜๋ฉด COMMIT ๋˜๋Š” ROLLBACK์ด ํ•„์š”ํ•˜๋ฉด ์ ์šฉ ์—ฌ๋ถ€๋ฅผ ๋ฌป์Šต๋‹ˆ๋‹ค.

 

4. ์‹œ์Šคํ…œ ์ค‘๋‹จ

๋น„์ •์ƒ์ ์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ์Šคํ…œ์ด ์ค‘๋‹จ๋˜๋ฉด Transaction์€ ROLLBACKํ•˜๊ณ  ์ข…๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

 

๋Œ“๊ธ€