Skip to content

Latest commit

ย 

History

History
191 lines (108 loc) ยท 10.1 KB

File metadata and controls

191 lines (108 loc) ยท 10.1 KB

DB Dead Lock(๊ต์ฐฉ์ƒํƒœ) & Concurrency Control(๋™์‹œ์„ฑ ์ œ์–ด)

Transaction(ํŠธ๋žœ์žญ์…˜)

Concurrency Control(๋™์‹œ์„ฑ ์ œ์–ด)

Dead Lock(๊ต์ฐฉ ์ƒํƒœ)


Transaction

ํŠธ๋žœ์žญ์…˜์€ ์ž‘์—…์˜ ์™„์ „์„ฑ์„ ๋ณด์žฅํ•ด์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž‘์—…์„ ํ•˜๋‚˜์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ ๋ฌถ์–ด ๋ฐ˜์˜๊ณผ ์›์ƒ๋ณต๊ท€๋ฅผ ์กฐ์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค.

๋…ผ๋ฆฌ์ ์ธ ์ž‘์—… ์…‹์„ ๋ชจ๋‘ ์™„๋ฒฝํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋˜๋Š” ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ์—๋Š” ์› ์ƒํƒœ๋กœ ๋ณต๊ตฌํ•˜์—ฌ ์ž‘์—…์˜ ์ผ๋ถ€๋งŒ ์ ์šฉ๋˜๋Š” ํ˜„์ƒ์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ธฐ๋Šฅ์ด๋‹ค.

์‚ฌ์šฉ์ž์˜ ์ž…์žฅ์—์„œ๋Š” ์ž‘์—…์˜ ๋…ผ๋ฆฌ์  ๋‹จ์œ„๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ณ , ์‹œ์Šคํ…œ์˜ ์ž…์žฅ์—์„œ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์ ‘๊ทผ ๋˜๋Š” ๋ณ€๊ฒฝํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๋‹จ์œ„๊ฐ€ ๋œ๋‹ค.


Transaction์˜ ์ƒํƒœ

IMAGES

ํ™œ๋™(Active)ย :ย ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰ ์ค‘์ธ ์ƒํƒœ

์‹คํŒจ(Failed)ย : ํŠธ๋žœ์žญ์…˜ ์‹คํ–‰์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ค‘๋‹จ๋œ ์ƒํƒœ

์ฒ ํšŒ(Aborted)ย :ย ํŠธ๋žœ์žญ์…˜์ด ๋น„์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด Rollback ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ ์ƒํƒœ

๋ถ€๋ถ„ ์™„๋ฃŒ(Partially Committed)ย : ํŠธ๋žœ์žญ์…˜์˜ ๋งˆ์ง€๋ง‰ ์—ฐ์‚ฐ๊นŒ์ง€ ์‹คํ–‰ํ–ˆ์ง€๋งŒ, Commit ์—ฐ์‚ฐ์ด ์‹คํ–‰๋˜๊ธฐ ์ง์ „์˜ ์ƒํƒœ

์™„๋ฃŒ(Committed)ย : ํŠธ๋žœ์žญ์…˜์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ข…๋ฃŒ๋˜์–ด Commit ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•œ ํ›„์˜ ์ƒํƒœ

Commit

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

Rollback

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


Concurrency Control(๋™์‹œ์„ฑ ์ œ์–ด)

๋™์‹œ์— ์‹คํ–‰๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ์ž‘์—…์„ ์„ฑ๊ณต์ ์œผ๋กœ ๋งˆ์น  ์ˆ˜ ์žˆ๋„๋ก ํŠธ๋žœ์žญ์…˜์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์ œ์–ดํ•˜๋Š” ๊ธฐ๋ฒ•

  • ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์„ ์ง€์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜๋“ค์ด ์„ฑ๊ณต์ ์œผ๋กœ ๋™์‹œ์— ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ์ง€์›ํ•˜๋Š” ๊ธฐ๋Šฅ

  • ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์„ ์ง€์›ํ•˜๋Š” DB system์˜ ๊ฒฝ์šฐ ํ•„์ˆ˜์ ์œผ๋กœ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ์œผ๋กœ ๋ณ‘ํ–‰์ œ์–ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

  • ํŠธ๋žœ์žญ์…˜์˜ ์ง๋ ฌํ™” ์ˆ˜ํ–‰ ๋ณด์žฅ

IMAGES


๋™์‹œ์„ฑ ์ œ์–ด์˜ ๋ชฉ์ 

  • ํŠธ๋žœ์žญ์…˜์˜ ์ง๋ ฌ์„ฑ ๋ณด์žฅ

  • ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ ๋ฐ ์ผ๊ด€์„ฑ ๋ณด์žฅ

  • ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ณต์œ  ์ตœ๋Œ€ํ™”, ์‹œ์Šคํ…œ ํ™œ์šฉ๋„ ์ตœ๋Œ€ํ™”, ์‚ฌ์šฉ์ž ์‘๋‹ต์‹œ๊ฐ„ ์ตœ์†Œํ™”


๋™์‹œ์„ฑ ์ œ์–ด ๊ธฐ๋ฒ•์˜ ์ข…๋ฅ˜

  • Locking

    • ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ์— ์ž ๊ธˆ(lock)์„ ์„ค์ •ํ•˜๋ฉด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ž ๊ธˆ์ด ํ•ด์ œ(unlock)๋  ๋•Œ๊นŒ์ง€ ์ ‘๊ทผ/์ˆ˜์ •/์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€ํ•˜๋‹ค.
    • ๋กœํ‚น ๋‹จ์œ„๊ฐ€ ํฌ๋ฉด ๊ด€๋ฆฌํ•˜๊ธฐ ์šฉ์ด(๋กœํ‚น ์˜ค๋ฒ„ํ—ค๋“œ ๊ฐ์†Œ)ํ•˜์ง€๋งŒ ๋ณ‘ํ–‰์„ฑ ์ˆ˜์ค€(๋™์‹œ์„ฑ ์ˆ˜์ค€)์ด ๋‚ฎ์•„์ง„๋‹ค.
    • ํŠธ๋žœ์žญ์…˜์ด ์‚ฌ์šฉํ•˜๋Š” ์ž์›์— ๋Œ€ํ•˜์—ฌ ์ƒํ˜ธ ๋ฐฐ์ œ(Mutual Exclusive) ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ธฐ๋ฒ•
    • ์ƒํ˜ธ๋ฐฐ์ œ๋Š” ํŠน์ • ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•˜์—ฌ ์ž ๊ธˆ (Lock)์„ ์„ค์ •ํ•  ํŠธ๋žœ์žญ์…˜์ด ํ•ด์ œ(unlock) ํ•  ๋•Œ ๊นŒ์ง€ ๋ฐ์ดํ„ฐ๋ฅผ ๋…์ ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
    • ๋กœํ‚น ๋‹จ์œ„๊ฐ€ ์ž‘์œผ๋ฉด ๋ณ‘ํ–‰์„ฑ(๋™์‹œ์„ฑ ์ˆ˜์ค€)์ด ๋†’์•„์ง€์ง€๋งŒ ๊ด€๋ฆฌ๊ฐ€ ๊นŒ๋‹ค๋กญ๋‹ค.(๋กœํ‚น ์˜ค๋ฒ„ํ—ค๋“œ ์ฆ๊ฐ€)
    • ๋”ฐ๋ผ์„œ ์ž ๊ธˆ ๋‹จ์œ„๋ฅผ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ์ •ํ•ด ๋†“๊ณ  ํ•„์š”์— ๋”ฐ๋ผ ํ˜ผ์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค.

    ์ž ๊ธˆ ์—ฐ์‚ฐ์€ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์—ฐ์‚ฐ์˜ ์„ฑ๊ฒฉ์— ๋”ฐ๋ผ์„œ ๊ณต์œ ์ž ๊ธˆ(Shared lock: S-lock)๊ณผ ๋ฐฐํƒ€์ž ๊ธˆ(Exclusive lock: X-lock)์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค.

    • S-lock(๊ณต์œ ์ž ๊ธˆ)

      • ๊ณต์œ ์ž ๊ธˆ์„ ์„ค์ •ํ•œ ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ฝ๊ธฐ ์—ฐ์‚ฐ(read)๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
      • ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ณต์œ ์ž ๊ธˆ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
      • ๋‹ค๋ฅธ ํŠธ๋ž™์žญ์…˜๋„ ์ฝ๊ธฐ ์—ฐ์‚ฐ๋งŒ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • X-lock(๋ฐฐํƒ€์ž ๊ธˆ)

      • ๋ฐฐํƒ€์ž ๊ธˆ์„ ์„ค์ •ํ•œ ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด์„œ ์ฝ๊ธฐ ์—ฐ์‚ฐ(read)๊ณผ ์“ฐ๊ธฐ ์—ฐ์‚ฐ(write) ๋ชจ๋‘ ๊ฐ€๋Šฅํ•˜๋‹ค.
      • ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด์„œ๋Š” ํ•˜๋‚˜์˜ ๋ฐฐํƒ€์ž ๊ธˆ(X-lock)๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
      • ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์€ ์ฝ๊ธฐ ์—ฐ์‚ฐ๊ณผ ์“ฐ๊ธฐ ์—ฐ์‚ฐ ๋ชจ๋‘ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Two-Phase Locking Protocol(2๋‹จ๊ฒŒ ๋กœํ‚น ๊ทœ์•ฝ)

    • Lock๊ณผ Unlock์ด ๋™์‹œ์— ์ด๋ฃจ์–ด์ง€๋ฉด ์ผ๊ด€์„ฑ์ด ๋ณด์žฅ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ Lock๋งŒ ๊ฐ€๋Šฅํ•œ ๋‹จ๊ณ„์™€ Unlock๋งŒ ๊ฐ€๋Šฅํ•œ ๋‹จ๊ณ„๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค.
    • ํ™•์žฅ๋‹จ๊ณ„: ์ƒˆ๋กœ์šด Lock์€ ๊ฐ€๋Šฅํ•˜๊ณ  Unlock์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์ถ•์†Œ๋‹จ๊ณ„: Unlock์€ ๊ฐ€๋Šฅํ•˜๊ณ  ์ƒˆ๋กœ์šด Lock์€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์ง๋ ฌ ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์žฅํ•˜์ง€๋งŒ ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

IMAGES

  • Timestamp(ํƒ€์ž„์Šคํƒฌํ”„)

    • ์‹œ์Šคํ…œ์—์„œ ์ƒ์„ฑํ•˜๋Š” ๊ณ ์œ  ๋ฒˆํ˜ธ์ธ ํƒ€์ž„์Šคํƒฌํ”„๋ฅผ ํŠธ๋žœ์žญ์…˜์— ๋ถ€์—ฌํ•จ์œผ๋กœ์จ ํŠธ๋žœ์žญ์…˜๊ฐ„์˜ ์ ‘๊ทผ ์ˆœ์„œ๋ฅผ ๋ฏธ๋ฆฌ ์ •ํ•œ๋‹ค.
  • Validation(์ ํ•ฉ์„ฑ ๊ฒ€์ฆ)

    • ๋จผ์ € ํŠธ๋žœ์žญ์…˜์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ํŠธ๋žœ์žญ์…˜์„ ์ข…๋ฃŒํ•  ๋•Œ ์ ํ•ฉ์„ฑ์„ ๊ฒ€์ฆํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ตœ์ข… ๋ฐ˜์˜ํ•œ๋‹ค.

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

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

๋™์‹œ์„ฑ ์ œ์–ด๋ฅผ ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ 

  • Lost Update(๊ฐฑ์‹  ์†์‹ค)

    • ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ๊ฐฑ์‹ ํ•œ ๋‚ด์šฉ์„ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๋ฎ์–ด์”€์œผ๋กœ์จ ๊ฐฑ์‹ ์ด ๋ฌดํšจํ™”๊ฐ€ ๋˜๋Š” ๊ฒƒ์„ ์˜๋ฏธ
    • ๋‘ ๊ฐœ์ด์ƒ ํŠธ๋žœ์žญ์…˜์ด ํ•œ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ๊ฐฑ์‹ (Update)ํ•  ๋•Œ ๋ฐœ์ƒ
  • Dirty Read(ํ˜„ํ™ฉํŒŒ์•…์˜ค๋ฅ˜)

    • ์ฝ๊ธฐ ์ž‘์—…์„ ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜ 1์ด ์“ฐ๊ธฐ ์ž‘์—…์„ ํ•˜๋Š” ํŠธ๋žœ์žญ์…˜2๊ฐ€ ์ž‘์—…ํ•œ ์ค‘๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ
    • ์ž‘์—…์ค‘์ธ ํŠธ๋žœ์žญ์…˜2๊ฐ€ ์ž‘์—…์„ Rollbackํ•œ ๊ฒฝ์šฐ ํŠธ๋žœ์žญ์…˜1์€ ๋ฌดํšจ๊ฐ€ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฒŒ ๋˜๊ณ  ์ž˜๋ชป๋œ ๊ฒฐ๊ณผ๋ฅผ ๋„์ถœํ•œ๋‹ค.
  • Inconsistency(๋ชจ์ˆœ์„ฑ)

    • ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜๋“ค์ด ํ•ด๋‹น ํ•ญ๋ชฉ ๊ฐ’์„ ๊ฐฑ์‹ ํ•˜๋Š” ๋™์•ˆ ํ•œ ํŠธ๋žœ์žญ์…˜์ด ๋‘ ๊ฐœ์˜ ํ•ญ๋ชฉ ๊ฐ’ ์ค‘ ์–ด๋–ค ๊ฒƒ์€ ๊ฐฑ์‹ ๋˜๊ธฐ ์ „์˜ ๊ฐ’์„ ์ฝ๊ณ  ๋‹ค๋ฅธ ๊ฒƒ์€ ๊ฐฑ์‹ ๋œ ํ›„์˜ ๊ฐ’์„ ์ฝ๊ฒŒ ๋˜์–ด ๋ฐ์ดํ„ฐ์˜ ๋ถˆ์ผ์น˜๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ƒํ™ฉ
  • Cascading Rollback(์—ฐ์‡„๋ณต๊ท€)

    • ๋‘ ํŠธ๋žœ์žญ์…˜์ด ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ๋‚ด์šฉ์„ ์ ‘๊ทผํ•  ๋•Œ ๋ฐœ์ƒ
    • ํ•œ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•œ ๋‹ค์Œ ์‹คํŒจํ•˜์—ฌ Rollback ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ฐฑ์‹ ๊ณผ Rollback ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•˜๊ณ  ์žˆ๋Š” ์‚ฌ์ด์— ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์„œ ์‚ฌ์šฉํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ

Dead Lock(๊ต์ฐฉ ์ƒํƒœ)

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๊ต์ฐฉ ์ƒํƒœ(Dead Lock)๋ž€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜๋“ค์ด ์‹คํ–‰์„ ํ•˜์ง€ ๋ชปํ•˜๊ณ  ์„œ๋กœ ๋ฌดํ•œ์ • ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด TRANSACTION A๋Š” ์‚ฌ์› ํ…Œ์ด๋ธ”์˜ 1๋ฒˆ ์‚ฌ์›์— ๋Œ€ํ•œ UPDATE๋ฅผ ํ•˜๊ณ , TRANSACTION B๋Š” 2๋ฒˆ ์‚ฌ์›์— ๋Œ€ํ•œ UPDATE ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜์ž. 1๋ฒˆ ์‚ฌ์›์˜ row๋Š” TRANSACTION A๊ฐ€, 2๋ฒˆ ์‚ฌ์›์˜ row๋Š” TRANSACTION B๊ฐ€ LOCK์„ ํ•˜๊ณ  ์žˆ๋Š” ์ƒํƒœ์ด๋‹ค. ๋‘ ํŠธ๋žœ์žญ์…˜ ๋ชจ๋‘ ๋๋‚˜์ง€ ์•Š์€ ์ƒํƒœ์—์„œ TRANSACTION A๊ฐ€ 2๋ฒˆ ์‚ฌ์›์„ UPDATE ์‹œ๋„ํ•˜๊ณ  TRANSACTION B๊ฐ€ 1๋ฒˆ ์‚ฌ์›์„ UPDATEํ•˜๋ ค๊ณ  ํ•˜๋ฉด ๋‘๊ฐœ์˜ TRANSACTION ๋ชจ๋‘ WAITING์— ๋“ค์–ด๊ฐ€๊ณ  Dead Lock (๊ต์ฐฉ์ƒํƒœ) ์— ๋น ์ง€๊ฒŒ ๋œ๋‹ค.

๊ต์ฐฉ์ƒํƒœ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•

  • ์˜ˆ๋ฐฉ ๊ธฐ๋ฒ•

    • ๊ฐ ํŠธ๋žœ์žญ์…˜์ด ์‹คํ–‰๋˜๊ธฐ ์ „์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ locking ํ•ด์ฃผ๋Š” ๊ฒƒ
    • ๋‹ค๋งŒ ์˜ˆ๋ฐฉ ๊ธฐ๋ฒ•์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์ด ํ•„์š”ํ•˜๋ฉด ์‚ฌ์‹ค์ƒ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋ถ€ locking ํ•ด์ฃผ์–ด์•ผ ํ•˜๋ฏ€๋กœ ํŠธ๋žœ์žญ์…˜์˜ ๋ณ‘ํ–‰์„ฑ์„ ๋ณด์žฅํ•˜์ง€ ๋ชปํ• ๋ฟ ์•„๋‹ˆ๋ผ ๋ช‡๋ช‡ ํŠธ๋žœ์žญ์…˜์€ ๊ณ„์†ํ•ด์„œ ์ฒ˜๋ฆฌ๋ฅผ ๋ชปํ•˜๊ฒŒ ๋œ๋‹ค.
  • ํšŒํ”ผ ๊ธฐ๋ฒ•

    • ์ž์›์„ ํ• ๋‹นํ•  ๋•Œ timestamp๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ต์ฐฉ์ƒํƒœ๊ฐ€ ์ผ์–ด๋‚˜์ง€ ์•Š๋„๋ก ํšŒํ”ผํ•˜๋Š” ๋ฐฉ๋ฒ•
    • Wait-Die ๋ฐฉ์‹๊ณผ Wound-Wait ๋ฐฉ์‹์ด ์žˆ๋‹ค.
    • Wait-Die: ํŠธ๋žœ์žญ์…˜ Ti๊ฐ€ Tj์— ์˜ํ•ด locking๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ Ti๊ฐ€ ๋จผ์ € ๋“ค์–ด์˜จ ํŠธ๋žœ์žญ์…˜์ด๋ผ๋ฉด ๊ธฐ๋‹ค๋ฆฐ๋‹ค. ๋ฐ˜๋ฉด Ti๊ฐ€ ๋‚˜์ค‘์— ๋“ค์–ด์˜จ ํŠธ๋žœ์žญ์…˜์ด๋ผ๋ฉด ํฌ๊ธฐ(Die)ํ•˜๊ณ  ๋‚˜์ค‘์— ๋‹ค์‹œ ์š”์ฒญํ•œ๋‹ค. ์ฆ‰, ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ์„ ๋•Œ ๊ธฐ๋‹ค๋ฆฌ๊ฑฐ๋‚˜(Wait) ํฌ๊ธฐ(Die)ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
    • Wound-Wait: ํŠธ๋žœ์žญ์…˜ Ti๊ฐ€ Tj์— ์˜ํ•ด locking๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•  ๋•Œ Ti๊ฐ€ ๋จผ์ € ๋“ค์–ด์˜จ ํŠธ๋žœ์žญ์…˜์ด๋ผ๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ์„ ์ (Wound)ํ•œ๋‹ค. ๋ฐ˜๋ฉด์— Ti๊ฐ€ ๋‚˜์ค‘์— ๋“ค์–ด์˜จ ํŠธ๋žœ์žญ์…˜์ด๋ผ๋ฉด ๊ธฐ๋‹ค๋ฆฐ๋‹ค(Wait). ์ฆ‰, ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ ์œ ํ•˜๊ณ  ์žˆ์„ ๋•Œ ๋นผ์•—๊ฑฐ๋‚˜(Wound) ๊ธฐ๋‹ค๋ฆฌ๋Š”(Wait) ๋ฐฉ์‹์ด๋‹ค.

๐Ÿ“š ์ฐธ๊ณ 

๋™์‹œ์„ฑ ์ œ์–ด

transaction & deadlock

locking

๊ต์ฐฉ์ƒํƒœ



Summary



โ‰๏ธ ๋ฉด์ ‘ ์˜ˆ์ƒ ์งˆ๋ฌธ

  1. ์ž ๊ธˆ๊ธฐ๋ฒ•(Locking)์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์‹œ์˜ค. -> ์ž ๊ธˆ ๊ธฐ๋ฒ•์˜ ๋ฌธ์ œ์ ์ด ๋ญ”๊ฐ€์š”?
  1. ๊ต์ฐฉ์ƒํƒœ(DeadLock)๋ž€ ๋ฌด์—‡์ธ๊ฐ€์š”? -> ๊ต์ฐฉ์ƒํƒœ์˜ ๋นˆ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ๋ฐฉ๋ฒ•์—๋Š” ๋ฌด์—‡์ด ์žˆ๋‚˜์š”?