๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“ฆ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค (DB) ๐Ÿ“ฆ

ํŠธ๋žœ์žญ์…˜ (Transaction)์„ ์‰ฝ๊ฒŒ ์•Œ์•„๋ด…์‹œ๋‹ค!

by Meteora_ 2021. 6. 30.
728x90

ํŠธ๋žœ์žญ์…˜

ํŠธ๋žœ์žญ์…˜์ด๋ž€, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„๋ฅผ ๋งํ•œ๋‹ค. ๋งŒ์•ฝ ์ž‘์—…์ด ์ค‘๋‹จ๋์„ ๊ฒฝ์šฐ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋Š” Rollback์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ์˜ค๋ฅ˜์—†์ด ์‹คํ–‰์„ ๋งˆ์น˜๋ฉด Commit์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋…ผ๋ฆฌ์ ์ธ ๋‹จ์œ„์ด๋‹ค. ๋˜ํ•œ ํ•˜๋‚˜์˜ ๊ทธ๋ฃน์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” ๋ช…๋ น๋ฌธ๋“ค์„ ๋ชจ์•„ ๋†“์€ ๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ๋‹จ์œ„๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

 

์˜ˆ

์˜ˆ๋ฅผ ๋“ค์–ด ํŠธ๋žœ์žญ์…˜์€ ์€ํ–‰ ์ž…์ถœ๊ธˆ์œผ๋กœ ์˜ˆ๋ฅผ ๋งŽ์ด ๋“ ๋‹ค.

 

1. ํŠธ๋žœ์žญ์…˜์€ '๊ฑฐ๋ž˜'๋ผ๋Š” ๋œป์œผ๋กœ, ์€ํ–‰์—์„œ ์ž…๊ธˆ๊ณผ ์ถœ๊ธˆ์„ ํ•˜๋Š” ๊ทธ ๊ฑฐ๋ž˜๋ฅผ ๋œปํ•œ๋‹ค.

2. A ์€ํ–‰์—์„œ ์ถœ๊ธˆํ•˜์—ฌ B์€ํ–‰์œผ๋กœ ์†ก๊ธˆํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž.

3. ์†ก๊ธˆํ•œ๋Š ์ค‘์— ์•Œ ์ˆ˜ ์—†๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ A์€ํ–‰ ๊ณ„์ขŒ์—์„œ ๋ˆ์ด ๋น ์ ธ ๋‚˜๊ฐ”๋Š”๋ฐ B์€ํ–‰ ๊ณ„์ขŒ์— ์ž…๊ธˆ๋˜์ง€ ์•Š์•˜๋‹ค.

4. ์ด๋•Œ, ์šฐ๋ฆฌ๋Š” A์€ํ–‰ ๊ณ„์ขŒ์˜ ์ถœ๊ธˆ์„ ์ทจ์†Œํ•˜๊ฑฐ๋‚˜, ์ถœ๊ธˆ๋œ ๊ธˆ์•ก๋งŒํผ B์€ํ–‰ ๊ณ„์ขŒ๋กœ ๋‹ค์‹œ ์†ก๊ธˆํ•˜๋ฉด ๋œ๋‹ค.

5. ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์€ ๋ฒˆ๊ฑฐ๋กญ๊ณ  ๋” ์‹ฌํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ฌ์ˆ˜ ์žˆ๋‹ค.

6. ๊ทธ๋ž˜์„œ ์ƒ๊ฐํ•ด๋‚ธ ํ•ด๊ฒฐ์ฑ…์ด, ๊ฑฐ๋ž˜๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๋ชจ๋‘ ๋๋‚œ ํ›„์—์•ผ ์ด๋ฅผ ์™„์ „ํ•œ ๊ฑฐ๋ž˜๋กœ ์Šน์ธํ•˜๊ณ , ๊ฑฐ๋ž˜ ๋„์ค‘ ๋ญ”๊ฐ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ๋Š” ์ด ๊ฑฐ๋ž˜๋ฅผ ์•„์˜ˆ ์ฒ˜์Œ๋ถ€ํ„ฐ ์—†์—ˆ๋˜ ๊ฑฐ๋ž˜๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๊ฒƒ์ด๋‹ค.

7. ์ด๋ ‡๊ฒŒ ๊ฑฐ๋ž˜์˜ ์•ˆ์ „์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ํŠธ๋žœ์žญ์…˜์ด๋‹ค.

8. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„  ํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด ์˜จ ํ›„ ๋‹ค๋ฅธ ํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅํ•˜๊ฑฐ๋‚˜ ๊ฐฑ์‹ , ์‚ญ์ œํ•˜๋Š”๋ฐ ์ฒ˜๋ฆฌ ๋„์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ๋ชจ๋“  ์ž‘์—…์„ ์›์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฐ๋‹ค.

9. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„  ์ฒ˜๋ฆฌ ๊ณผ์ •์ด ๋ชจ๋‘ ์„ฑ๊ณตํ–ˆ์„ ๋•Œ๋งŒ ์ตœ์ข…์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ˜์˜ํ•œ๋‹ค.

 

 

Rollback & Commit

 

Rollback : ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€ ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ผ๊ด€์„ฑ์„ ๊นจ๋œจ๋ ธ์„ ๋•Œ ํŠธ๋žœ์žญ์…˜์˜ ์ผ๋ถ€๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋”๋ผ๋„ ํŠธ๋žœ์žญ์…˜์˜ ์›์ž์„ฑ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์ด ํŠธ๋žœ์žญ์…˜์ด ํ–‰ํ•œ ๋ชจ๋“  ์—ฐ์‚ฐ์„ ์ทจ์†Œํ•˜๋Š” ์—ฐ์‚ฐ์ด๋‹ค. Rollback์‹œ์—๋Š” ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์„ ์žฌ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ํ๊ธฐํ•œ๋‹ค.

 

Commit : ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๊ฐ€์„ฑ๊ณต์ ์œผ๋กœ ๋๋‚ฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋‹ค์‹œ ์ผ๊ด€๋œ ์ƒํƒœ์— ์žˆ์„ ๋•Œ ์ด ํŠธ๋žœ์žญ์…˜์ด ํ–‰ํ•œ ์—ฐ์‚ฐ์ด ์™„๋ฃŒ๋œ ๊ฒƒ์„ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ์—ฐ์‚ฐ์ด๋‹ค.

 

ํŠธ๋žœ์žญ์…˜์˜ ํŠน์„ฑ(ACID) 

ํŠธ๋žœ์žญ์…˜์—๋Š” ์ด 4๊ฐ€์ง€์˜ ํŠน์„ฑ์ด ์กด์žฌํ•œ๋‹ค. 4๊ฐ€์ง€ ํŠน์„ฑ์˜ ์•ž ๊ธ€์ž๋งŒ ๋”ฐ์„œ ACID ํŠน์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค.

 

์›์ž์„ฑ(Atomicity) : ํŠธ๋žœ์žญ์…˜์˜ ์ž‘์—…์ด ๋ถ€๋ถ„์ ์œผ๋กœ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ์ค‘๋‹จ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ฆ‰, All or Noting์˜ ๊ฐœ๋…์œผ๋กœ์„œ ์ž‘์—… ๋‹จ์œ„๋ฅผ ์ผ๋ถ€๋ถ„๋งŒ ์‹คํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.

 

์ผ๊ด€์„ฑ(Consistency) : ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜๋ฉด ์ผ๊ด€์ ์ธ DB์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋งํ•˜๋Š” ์ผ๊ด€์„ฑ์ด๋ž€, ์œ„์˜ ์†ก๊ธˆ ์˜ˆ์ œ์—์„œ ๊ธˆ์•ก์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์ •์ˆ˜ํ˜•(integer)์ธ๋ฐ, ๊ฐ‘์ž๊ธฐ ๋ฌธ์ž์—ด(string)์ด ๋˜์ง€ ์•Š๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ฆ‰, ์†ก๊ธˆ ์ „ํ›„ ๋ชจ๋‘ ๊ธˆ์•ก์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์ •์ˆ˜ํ˜•์ด์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์ผ๊ด€์„ฑ์ด๋‹ค.

 

๊ฒฉ๋ฆฌ์„ฑ(Isolation) : ํŠธ๋žœ์žญ์…˜ ์ˆ˜ํ–‰์‹œ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์˜ ์ž‘์—…์ด ๋ผ์–ด๋“ค์ง€ ๋ชปํ•˜๋„๋ก ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. ์ฆ‰, ํŠธ๋žœ์žญ์…˜๋ผ๋ฆฌ๋Š” ์„œ๋กœ๋ฅผ ๊ฐ„์„ญํ•  ์ˆ˜ ์—†๋‹ค.

 

์ง€์†์„ฑ(Durability) : ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ ํŠธ๋žœ์žญ์…˜์€ ์˜์›ํžˆ ๋ฐ˜์˜์ด ๋˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. commit์„ ํ•˜๋ฉด ํ˜„์žฌ ์ƒํƒœ๋Š” ์˜์›ํžˆ ๋ณด์žฅ๋œ๋‹ค.

๋Œ“๊ธ€