Transaction์˜ ํŠน์„ฑ

ํŠธ๋žœ์žญ์…˜์€ DBMS์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ์ž‘์—…(unit of work)
ํŠธ๋žœ์žญ์…˜์€ ์•„๋ž˜์˜ 4๊ฐ€์ง€ ํŠน์„ฑ์ธ ACID๋ฅผ ๋ณด์žฅํ•ด์•ผ ํ•œ๋‹ค.

  • ์›์ž์„ฑ(Atomicity)
  • ์ผ๊ด€์„ฑ(Consistency)
  • ๊ฒฉ๋ฆฌ์„ฑ(Isolation)
  • ์ง€์†์„ฑ(Durability)

 

Transaction Isolation Level

๊ทธ๋Ÿฐ๋ฐ ACID๋ฅผ ์—„๊ฒฉํ•˜๊ฒŒ ์ง€ํ‚ค๋‹ค ๋ณด๋ฉด ๋™์‹œ์„ฑ(Concurrency)๊ฐ€ ๋งค์šฐ ๋–จ์–ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
๊ทธ๋ž˜์„œ DB ์—”์ง„์€ ACID๋ฅผ ํฌ์ƒํ•ด์„œ ๋™์‹œ์„ฑ์„ ์–ป์„ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š”๋ฐ ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒจ์ด๋‹ค.
๊ฒฉ๋ฆฌ์„ฑ์„ ๋œ ์ง€ํ‚ค๋Š” level์„ ์‚ฌ์šฉํ• ์ˆ˜๋ก ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์€ ์ปค์ง€์ง€๋งŒ ๋™์‹œ์— ๋” ๋†’์€ ๋™์‹œ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

 

์ผ๊ด€์„ฑ(Consistency)์™€ ๋™์‹œ์„ฑ(Concurrency)

ACID ์ค‘ ์ผ๊ด€์„ฑ์ด ์™„์ „ํžˆ ๋ณด์žฅ๋  ๊ฒฝ์šฐ, ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์˜ ์š”์ฒญ์„ ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ํŠน์„ฑ์ƒ ๋™์‹œ์„ฑ์ด ์ €ํ•ด(์‘๋‹ต์˜ ์ง€์—ฐ์ด ๋ฐœ์ƒ)๋  ์ˆ˜ ์žˆ๋‹ค.

  • ์ผ๊ด€์„ฑ๊ณผ ๋™์‹œ์„ฑ -> ํŠธ๋ ˆ์ด๋“œ ์˜คํ”„ ๊ด€๊ณ„
    • ์ผ๊ด€์„ฑ๊ณผ ๋™์‹œ์„ฑ์˜ ๊ท ํ˜•์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.
  • ๋™์‹œ์„ฑ ์ œ์–ด = ๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์ˆ˜๋ฅผ ์ตœ๋Œ€ํ™”ํ•˜๋ฉด์„œ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ
    • ๋‚™๊ด€์  ๋™์‹œ์„ฑ ์ œ์–ด
      ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์ˆ˜์ •ํ•˜์ง€ ์•Š์„ ๊ฒƒ์œผ๋กœ ๊ฐ€์ •ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์‹œ์ ์— ๋ฝ์„ ๊ฑธ์ง„ ์•Š์ง€๋งŒ ์ˆ˜์ •ํ•˜๋Š” ์‹œ์ ์—์„œ ๊ธฐ์กด์— ์ฝ์–ด์˜จ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž์— ์˜ํ•ด ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ์žฌ๊ฒ€์‚ฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
    • ๋น„๊ด€์  ๋™์‹œ์„ฑ ์ œ์–ด
      ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์ˆ˜์ •ํ•  ๊ฒƒ์œผ๋กœ ๊ฐ€์ •ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์‹œ์ ์—์„œ ๋ฝ์„ ๊ฑธ๊ณ  ์กฐํšŒ, ๊ฐฑ์‹  ์™„๋ฃŒ ์‹œ๊นŒ์ง€ ๋ฝ์„ ์œ ์ง€ํ•œ๋‹ค.

 

๋ฝ(Lock)

ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ์˜ ์ˆœ์ฐจ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•

ํŠธ๋žœ์žญ์…˜์— ๊ฑธ๋ฆฐ Lock์€ ํŠธ๋žœ์žญ์…˜์ด commit ๋˜๊ฑฐ๋‚˜ rollback ๋  ๋•Œ ํ•จ๊ป˜ unlock ๋œ๋‹ค.

  • Shared Lock (Read Lock), ๊ณต์œ ๋ฝ
    ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ ์‚ฌ์šฉ๋˜๋Š” Lock์œผ๋กœ ๊ณต์œ ๋ฝ์€ ๊ณต์œ ๋ฝ๋ผ๋ฆฌ ๋™์‹œ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. Write๋Š” ๋ถˆํ—ˆํ•˜๊ณ , Read๋Š” ํ•ด๋‹น Critical Section์— ์ ‘๊ทผ์ด ํ—ˆ์šฉ๋œ๋‹ค๋Š” ๊ฒƒ
    (Read Lock์€ Read์—๋งŒ ์—ด๋ ค์žˆ๋Š” ๊ฒƒ)
  • Exclusive Lock (Write Lock), ๋ฐฐํƒ€๋ฝ
    ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” Lock์œผ๋กœ ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋  ๋•Œ๊นŒ์ง€ ์œ ์ง€๋œ๋‹ค. Lock์ด ํ•ด์ œ๋  ๋•Œ๊นŒ์ง€ ์กฐํšŒ๋ฅผ ํฌํ•จํ•œ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์€ ํ•ด๋‹น ๋ฆฌ์†Œ์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์—†๋‹ค.

 

๊ฒฉ๋ฆฌ ๋ ˆ๋ฒจ๊ณผ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ

- Read Uncommitted

๊ฐ€์žฅ ๋‚ฎ์€ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์œผ๋กœ ์ปค๋ฐ‹๋˜์ง€ ์•Š์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค.

- Read Committed

์ปค๋ฐ‹๋œ ๋ฐ์ดํ„ฐ๋งŒ ์ฝ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, Dirty Read๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

- Repetable Read

ํ•œ ๋ฒˆ ์กฐํšŒํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์กฐํšŒํ•ด๋„ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์กฐํšŒ๋œ๋‹ค. Dirty Read, Non Repeatable Read๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

- Serializable

๊ฐ€์žฅ ์—„๊ฒฉํ•œ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์œผ๋กœ Dirty Read, Non Repeatable Read, Phantom Read ๋ชจ๋‘ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค.

+ Recent posts