TRANSACTION๊ณผ ACID

์ด์Šน์ฃผยท2024๋…„ 3์›” 16์ผ
2

DATABASE

๋ชฉ๋ก ๋ณด๊ธฐ
2/4

๐Ÿ“Œ TRANSACTION

TRANSACTION์ด๋ž€?

DB์— ์š”์ฒญ์‹œ ํ•œ ์Šคํ…์—์„œ ๋ชจ๋‘ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•˜๋Š” SQL ์š”์ฒญ์„ ํ•˜๋‚˜๋กœ ๋ฌถ์€ ๋‹จ์œ„๋‹ค.

  • TrancSaction์˜ ์—ฐ์‚ฐ์€ RollBack, Commit ๋‘๊ฐ€์ง€๋‹ค.
    - ํ•˜๋‚˜์˜ SQL ์ด๋ผ๋„ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์œผ๋ฉด ์š”์ฒญ ์ „ ์ƒํƒœ๋กœ RollBack๋˜๋Š” ๊ฒƒ์ด ํŠน์ง•.
    - ํŠธ๋žœ์žญ์…˜ ๋‚ด SQL๋ฌธ๋“ค์ด ๋ชจ๋‘ ์„ฑ๊ณตํ•˜๋Š” ๊ฒฝ์šฐ Commit๋˜์–ด DB์— ๋ฐ˜์˜๋˜๋Š” ๊ฒƒ์ด ํŠน์ง•.
  • ์œ„ ์‚ฌ์ง„์„ ๋ณด๋ฉด ์ฝ๊ธฐ, ์“ฐ๊ธฐ, ์ง€์šฐ๊ธฐ, ์ฝ๊ธฐ๊ฐ€ ํ•œ ์Šคํ…์— ์ฒ˜๋ฆฌ ๋˜์–ด์•ผํ•˜๋Š” TRANSACTION์ž„

TRANSACTION์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ

์ƒํ™ฉ ๊ฐ€์ •

  • A๋Š” ๊ณ„์ขŒ์— 10๋งŒ์› , B๋Š” ๊ณ„์ขŒ์— 0์›์ด ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค.
  • A๊ฐ€ B์—๊ฒŒ ๋ˆ์„ ์†ก๊ธˆํ•˜๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ •ํ•ด๋ณธ๋‹ค.

DB๋‚ด์— ์ž‘์—…์€ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋‰จ

  1. A์— ๊ณ„์ขŒ์— 10๋งŒ์›์„ ์ถœ๊ธˆ ์ž‘์—… (์ž”๊ณ :10๋งŒ์›-> 0์›)
  1. B๊ณ„ ๊ณ„์ขŒ์— 10๋งŒ์›์„ ์ž…๊ธˆ ์ž‘์—…(์ž”๊ณ : 0์› -> 10๋งŒ์›)

ํ•˜์ง€๋งŒ
1๋ฒˆ ์ž‘์—…์„ ์ง„ํ–‰ ํ›„ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด A์˜ ๊ณ„์ขŒ๋Š” 0์›, B์˜ ๊ณ„์ขŒ๋„ 0์›์ธ ์ƒํƒœ์ด๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” ๋‘ ์ž‘์—…์— Transaction์„ ์ ์šฉํ•˜์—ฌ ๋ฌถ๋Š”๋‹ค.
1๋ฒˆ, 2๋ฒˆ ์ž‘์—…์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ•œ๊ฐ€์ง€ ์ž‘์—…์œผ๋กœ ๋ฌถ์œผ๋ฉด ์„ฑ๊ณต์‹œ Commit์„ ํ†ตํ•ด DB์— ๋ฐ˜์˜
์‹คํŒจ์‹œ RollBack์„ ํ†ตํ•ด ์› ์ƒํƒœ ๋ณต๊ท€๋กœ A์™€ B ๋‘ ๊ณ„์ขŒ๊ฐ€ 0์›์ธ ์ƒํ™ฉ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ๋œ๋‹ค.


๐Ÿ“Œ ACID

ACID๋ž€?

DB์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ๊ณ ์‹ ๋ขฐ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด์„œ TRANSACTION์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ–ˆ๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด ACID๋Š” ๋ฌด์—‡์ผ๊นŒ?

ACID๋Š” DB์—์„œ TRANSACTION์ด ์•ˆ์ „ํ•˜๊ฒŒ ์ˆ˜ํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ ๋ณด์žฅ๋˜์–ด์•ผ ํ•˜๋Š” ์„ฑ์งˆ
์›์ž์„ฑ(Atomicity), ์ผ๊ด€์„ฑ(Consistency), ๊ฒฉ๋ฆฌ์„ฑ(Isolation), ์ง€์†์„ฑ(Durability) ๋ฅผ ์˜๋ฏธํ•˜๋Š” ACID ๋กœ ์•Œ๋ ค์ ธ ์žˆ๋‹ค.

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

ํŠธ๋žœ์žญ์…˜์€ DB์— ๋ชจ๋‘ ๋ฐ˜์˜๋˜๊ฑฐ๋‚˜, ์ „ํ˜€ ๋ฐ˜์˜๋˜์ง€ ์•Š์•„์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค.
(์ฆ‰ ์™„๋ฃŒ๋˜์ง€ ์•Š์€ ํŠธ๋žœ์žญ์…˜์˜ ์ค‘๊ฐ„ ์ƒํƒœ๋ฅผ DB์— ๋ฐ˜์˜ํ•˜๋ฉด ์•ˆ ๋œ๋‹ค)
TrancSaction์˜ ๋‘๊ฐ€์ง€ ์—ฐ์‚ฐ Commit, RollBack์„ ํ†ตํ•ด ๋ณด์žฅํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.

์›์ž์„ฑ์ด ๋ณด์žฅ๋˜๋ฉด A์˜ ๊ณ„์ขŒ์—์„œ 10๋งŒ์›์ด ์ถœ๊ธˆ๋˜์—ˆ๋Š”๋ฐ B์˜ ๊ณ„์ขŒ์—์„œ 10๋งŒ์›์ด ์ž…๊ธˆ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋Š” ์—†์„ ๊ฒƒ์ด๋‹ค.

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

์ผ๊ด€์„ฑ์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๊ฐ€ ์ผ๊ด€๋˜์–ด์•ผ ํ•œ๋‹ค๋Š” ์„ฑ์งˆ์ด๋‹ค. ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜ ์ „ํ›„์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ƒํƒœ๋Š” ์ด์ „๊ณผ ๊ฐ™์ด ์œ ํšจํ•ด์•ผ ํ•œ๋‹ค.
(์ฆ‰, ํŠธ๋žœ์žญ์…˜์ด ์ผ์–ด๋‚œ ์ดํ›„ DB์— ์—ฌ๋Ÿฌ์ œ์•ฝ ์กฐ๊ฑด์— ๋งž๋Š” ์ƒํƒœ๋ฅผ ๋ณด์žฅํ•ด์ค€๋‹ค๋Š” ์˜๋ฏธ.)

๋งˆ์ด๋„ˆ์Šค ํ†ต์žฅ์„ ํ—ˆ๋ฝํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” DB์— ์ œ์•ฝ์กฐ๊ฑด์ด ์žˆ๋‹ค๋ฉด ์ด ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜์ง€ ๋ชป ํ•œ๋‹ค๋ฉด Transaction์€ ๋ฐ”๋กœ RollBackํ•˜๊ฒŒ ๋  ๊ฒƒ์ž„

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

๋‘˜ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋˜๊ณ  ์žˆ์„ ๋•Œ, ์–ด๋–ค ํŠธ๋žœ์žญ์…˜๋„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜ ์—ฐ์‚ฐ์— ๋ผ์–ด๋“ค ์ˆ˜ ์—†๋‹ค.

A ํ†ต์žฅ์—์„œ 10๋งŒ์›์ด ์ถœ๊ธˆ๋˜๊ณ  B ํ†ต์žฅ์— 10๋งŒ์›์ด ์ž…๊ธˆ๋˜์ง€ ์•Š์€ ์ค‘๊ฐ„ ์ƒํ™ฉ์—, ๋‹ค๋ฅธ Transaction์ด ์กฐํšŒํ•˜๋ฉด ์•ˆ ๋˜๋Š” ๊ฒƒ์ž„

Isolation Level (๊ฒฉ๋ฆฌ ์ˆ˜์ค€) : Transaction ๋…๋ฆฝ(๊ณ ๋ฆฝ)์˜ ์ •๋„์— ๋Œ€ํ•œ ์ •์˜

  • Isolation Level์€ Transaction ๊ฐ„ ๊ฒฉ๋ฆฌ๋ฅผ ์‹œํ‚ค์ง€ ์•Š์€๊ฒƒ(L0)์—์„œ๋ถ€ํ„ฐ ์™„๋ฒฝํ•œ ๊ฒฉ๋ฆฌ(L3, ์ง๋ ฌํ™”)๊นŒ์ง€ ์ด 4๋‹จ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค.
  • ๋‹จ๊ณ„๊ฐ€ ๋‚ฎ์„ ์ˆ˜๋ก ๋‹จ์ผ ์‹œ๊ฐ„๋‚ด์— ๋งŽ์€ Transacton์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ๋ฐ์ดํ„ฐ ์ •ํ™•๋„๊ฐ€ ๋‚ฎ์•„์งˆ ์ˆ˜ ์žˆ๋‹ค.
  • DBMS๋Š” ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ isolation level์„ ์ œ๊ณตํ•˜๊ณ , ๊ฐœ๋ฐœ์ž๋Š” ์ด์ค‘์—์„œ ์–ด๋–ค ๋ ˆ๋ฒจ๋กœ ํŠธ๋žœ์žญ์…˜์„ ๋™์ž‘์‹œํ‚ฌ์ง€ ์„ค์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

Isolation Level๊ณผ ๋‹จ๊ณ„๋ณ„ ์—๋Ÿฌ๋Š” ๋‹ค์Œ ํฌ์ŠคํŒ… ๊ธ€์„ ์ฐธ๊ณ !

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

ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์œผ๋ฉด ๊ฒฐ๊ณผ๋Š” ์˜๊ตฌํžˆ DB์— ๋ฐ˜์˜๋˜์–ด์•ผํ•œ๋‹ค.

ํŠธ๋žœ์ ์…˜ ์กฐ์ž‘์„ ํ•˜๋“œ ๋””์Šคํฌ์— ๋กœ๊ทธ๋กœ ๊ธฐ๋กํ•˜๊ณ  ์‹œ์Šคํ…œ์— ์ด์ƒ์ด ๋ฐœ์ƒํ•˜๋ฉด ๊ทธ ๋กœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•ด ์ด์ƒ ๋ฐœ์ƒ ์ „๊นŒ์ง€ ๋ณต์›ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ง€์†์„ฑ์„ ์‹คํ˜„ํ•˜๊ณ  ์žˆ๋‹ค.

A๊ฐ€ B์— 10๋งŒ์› ์†ก๊ธˆ์„ ์„ฑ๊ณตํ–ˆ๋‹ค๋ฉด ์€ํ–‰ ์‹œ์Šคํ…œ์— ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋”๋ผ๋„ 10๋งŒ์› ์†ก๊ธˆ ์„ฑ๊ณต๋œ ์ƒํƒœ๋กœ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.

์ฐธ๊ณ ์ž๋ฃŒ

[10๋ถ„ ํ…Œ์ฝ”ํ†ก]์˜ˆ์ง€๋‹ˆ์–ด์Šค์˜ ํŠธ๋žœ์žญ์…˜

[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๋กœ๊ฑด์˜ Transaction

[10๋ถ„ ํ…Œ์ฝ”ํ†ก] ๐Ÿค ์ƒ๋ฆฌ์˜ แ„แ…ณแ„…แ…ขแ†ซแ„Œแ…ขแ†จแ„‰แ…งแ†ซ

[DB] ํŠธ๋žœ์žญ์…˜ ACID๋ž€? (Atomicity, Consistency, Durability, Isolation)

profile
๋ฐ˜๋ณต๋˜๋Š” ์‹ค์ˆ˜๋ฅผ ๊ธฐ๋ก์„ ํ†ตํ•ด ์ค„์—ฌ๊ฐ€๋ณด์ž!

0๊ฐœ์˜ ๋Œ“๊ธ€