Transaction

ํŠธ๋žœ์žญ์…˜์ด๋ž€ ๋ฐ์ดํ„ฐ์˜ ์ฒ˜๋ฆฌ ๋‹จ์œ„๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

COMMIT์ด ์ผ์–ด๋‚œ ์‹œ์ ๋ถ€ํ„ฐ ๋‹ค์Œ COMMIT ์ „๊นŒ์ง€์˜ ์ž‘์—…์ด ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด๋ผ ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

๊ทธ๋ž˜์„œ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์ด ํŠธ๋žœ์žญ์…˜ ๋‹จ์œ„์—์„œ ๋ฐœ์ƒํ•œ ์ž‘์—…์„ ์ €์žฅ(COMMIT), ๋˜๋Œ๋ฆฌ๊ธฐ(ROLLBACK)ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

๊ฐ„ํ˜น๊ฐ€๋‹ค INSERT, UPDATE, DELETE๊ฐ€ ์•ˆ๋˜๊ณ  ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์€๋ฐ

๊ทธ๋Ÿผ ๋ญ ๋‹ค์‹œ ์‹œ๋„ํ•˜๋ฉด ๋˜๊ธด ํ•ฉ๋‹ˆ๋‹ค๋งŒ

๋™์‹œ์— ์—ฌ๋Ÿฌ ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•ด์•ผํ•˜๋Š”๋ฐ ๊ทธ ์ค‘์— ํ•˜๋‚˜๋งŒ ์‹คํŒจํ•˜๋Š” ๊ฒฝ์šฐ

์—ฌ๋Ÿฌ๋ถ„๋“ค ์„œ๋น„์Šค ์šด์˜์— ์‹ฌ๊ฐํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์—ฌ๋Ÿฌ๋ถ„์ด ์€ํ–‰ DB๋ฅผ ์šด์˜ํ•˜๋Š”๋ฐ

A ๊ณ ๊ฐ -> B ๊ณ ๊ฐ ์ด๋ ‡๊ฒŒ 1000์›์„ ๋ณด๋‚ด์•ผํ•œ๋‹ค๊ณ  ์นฉ์‹œ๋‹ค.

1. ๊ทธ๋Ÿผ A ๊ณ ๊ฐ์˜ ์ž”๊ณ ์—์„œ -1000์„ ํ•˜๊ณ 

2. B ๊ณ ๊ฐ์˜ ์ž”๊ณ ์— +1000์„ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

UPDATE ๋ฌธ๋ฒ•์„ 2๋ฒˆ ์“ฐ๋ฉด ๋˜๊ฒ ๊ตฐ์š”.

๊ทผ๋ฐ 1๋ฒˆ์€ ์„ฑ๊ณตํ–ˆ๋Š”๋ฐ 2๋ฒˆ์€ ์‹คํŒจํ•˜๋ฉด ์–ด๋–ป๊ฒŒ๋˜์ฃ ?

์€ํ–‰ ๋ฌธ๋‹ซ์•„์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ๋‹ซ๊ธฐ ์‹ซ์œผ๋ฉด transaction์ด๋ผ๋Š” ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ์‹œ๋‹ค.

Transaction ๊ธฐ๋Šฅ

์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์œผ๋ฉด

"์ฟผ๋ฆฌ๋ฌธ ์—ฌ๋Ÿฌ๊ฐœ ์ค‘ ์ตœ์†Œ ํ•˜๋‚˜๊ฐ€ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋Š” ๊ฒฝ์šฐ ์ „์ฒด ์ฟผ๋ฆฌ๋ฌธ์„ ์‹คํ–‰ ์ทจ์†Œํ•ด์ฃผ์„ธ์š”~" ๋ผ๊ณ  ์ฝ”๋“œ์งค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

transaction ๊ธฐ๋Šฅ์„ ์“ฐ๋ฉด ๋˜๋Š”๋ฐ

transaction์€ ์—ฌ๋Ÿฌ๊ฐœ์˜ SQL ์ฟผ๋ฆฌ๋ฅผ ํ•œ ๋ฒˆ์— ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ๊ธฐ๋Šฅ์ธ๋ฐ

COMMIT / ROLLBACK ๋ช…๋ น์–ด ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๐ŸŽˆ๊ทธ๋Ÿผ ์™œ ์—ฌํƒœ DBeaver์—์„œ๋Š” commit์„ ์•ˆ์ป๋Š”๋ฐ ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๋‚˜์š”?

DBeaver์—์„œ๋Š” Auto-Commit ๋ชจ๋“œ๋ผ์„œ commit์„ ์•ˆํ•ด์ฃผ๋”๋ผ๋„ ์•Œ์•„์„œ ํ•ด์ค๋‹ˆ๋‹ค.

Auto-Commit : ์ž๋™ ์ปค๋ฐ‹ / SQL๋ฌธ ์‹คํ–‰ ์‹œ ์ฆ‰์‹œ ์ปค๋ฐ‹๋จ

Manual Commit : ์ˆ˜๋™ ์ปค๋ฐ‹ / SQL๋ฌธ ์‹คํ–‰ ํ›„ commit ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„ ์ปค๋ฐ‹๋จ

Smart Commut mode : ๋ฐ์ดํ„ฐ ์ˆ˜์ • ๋ชจ๋“œ ์‹œ ์ˆ˜๋™๋ชจ๋“œ, ์กฐํšŒ ์‹œ ์ž๋™๋ชจ๋“œ๋กœ ์ „ํ™˜

(Smart๋ชจ๋“œ๋Š” ์•„๋ž˜ dbeaver ์‚ฌ์ดํŠธ์˜ ์ž์„ธํ•œ ์„ค๋ช…์„ ์ฐธ์กฐํ•˜์„ธ์š”.)

Oracle ์ „์šฉ ํˆด์ธ SQL Developer ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์จ์„œ INSERT, UPDATE, DELETE๋ฅผ ํ•˜๊ณ  ๋‚˜์„œ COMMIT์„ ํ•˜์ง€ ์•Š์•˜๋Š”๋ฐ๋„, ์ ์šฉ๋œ ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ํ˜„์žฌ ์„ธ์…˜์—์„œ๋งŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์ด๋ฉฐ, ์ตœ์ข…์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜๋œ ์ƒํƒœ๊ฐ€ ์•„๋‹ˆ๋‹ค.

์‹ค์ œ๋กœ ํ™•์ธ์„ ํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค๋ฉด SPRING์„ ์ด์šฉํ•˜์—ฌ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ ๋‹ค ํ•  ๋•Œ, ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฒŒ์‹œ๊ธ€ ๋ฆฌ์ŠคํŠธ๋ฅผ DB์—์„œ ๊ฐ€์ ธ์™€ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์„ ๋งŒ๋“ค์–ด๋ณด๊ณ  Developer ๊ฐ™์€ ๋„๊ตฌ๋ฅผ ์จ์„œ INSERT๋ฅผ ํ•ด๋ณด๋ฉด ์›น์ƒ์—์„œ๋Š” ์—ฌ์ „ํžˆ ๋ชฉ๋ก์ด ์•ˆ ๋‚˜์˜ค์ง€๋งŒ Developer์—์„œ๋Š” SELECT๊ฐ€ ๋˜๋Š” ์•„์ด๋Ÿฌ๋‹ˆํ•œ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•œ๋‹ค.

๊ทธ ๋’ค์— COMMIT์„ ํ•ด์ฃผ๋ฉด ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ๋˜๋ฏ€๋กœ ํ˜„์žฌ ์ด ๋„๊ตฌ ๋‚ด์—์„œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ ์ž๋™ COMMIT์ธ์ง€ ์•„๋‹Œ์ง€๋ฅผ ํ™•์ธํ•ด ๋ณด๋ฉด ๋  ๊ฒƒ์ด๋‹ค.

๐ŸŽˆ์ฐธ๊ณ .

์šฐ๋ฆฌ๊ฐ€ ์ฒ˜๋ฆฌํ•ด์ฃผ์ง€ ์•Š์•„๋„ ์ž๋™์œผ๋กœ COMMIT , ROLLBACK ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

  • ์ž๋™ COMMIT : ๋ฐ์ดํ„ฐ ์ •์˜์–ด(CREATE, ALTER, DROP) , ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด(GRANT, REVOKE)

  • ์ž๋™ ROLLBACK : ๋น„์ •์ƒ์ ์ธ ์ข…๋ฃŒ, SYSTEM FAILURE

Last updated