[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ๋™์‹œ์„ฑ ์ œ์–ด(Currency Control)

๐Ÿงช Computer Science/Database

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

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

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

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

๋ชจ์ˆœ์„ฑ(Inconsistency)

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

์—ฐ์‡„ ๋ณต๊ท€(Cascading Rollback)

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

ํŠธ๋žœ์žญ์…˜ ์Šค์ผ€์ค„(Transaction Schedule)

  • ์ง๋ ฌ ์Šค์ผ€์ค„(Serial Schedule)
    • ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜์–ด์•ผ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜ํ–‰
  • ๋น„์ง๋ ฌ ์Šค์ผ€์ค„(Nonserial Schedule)
    • ํŠธ๋žœ์žญ์…˜์˜ ์ง๋ ฌ ์ˆ˜ํ–‰ ์ˆœ์„œ์™€ ์ƒ๊ด€์—†์ด ๋ณ‘ํ–‰ ์ˆ˜ํ–‰ํ•˜๋Š” ์Šค์ผ€์ค„
  • ์ง๋ ฌ ๊ฐ€๋Šฅ ์Šค์ผ€์ค„(Serializable Schedule)
    • ์„œ๋กœ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๋Š” ์ง๋ ฌ ์Šค์ผ€์ค„์„์„ ๋น„์ง๋ ฌ์ ์œผ๋กœ ์ˆ˜ํ–‰

๋ฝ(Lock)

  • ํŠธ๋žœ์žญ์…˜๋“ค์ด ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์ž„์˜์ ์ธ ๋ณ‘ํ–‰ ์ ‘๊ทผ์„ ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ์ œ์–ดํ•˜๋Š” ๊ฒƒ
  • ์ฝ๊ธฐ๋ฅผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ณต์œ ๋ฝ(LS, Shared Lock)๊ณผ ์ฝ๊ณ  ์“ฐ๊ธฐ๋ฅผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ฒ ํƒ€๋ฝ(LX, Exclusive Lock)์œผ๋กœ ๋‚˜๋‰œ๋‹ค.

2๋‹จ๊ณ„ ๋ฝํ‚น

  • ๋กœํ‚น ๋‹จ์œ„: ๋กœํ‚น ๊ธฐ๋ฒ•์—์„œ ์‚ฌ์šฉํ•˜๋Š” lock ์—ฐ์‚ฐ์˜ ๋Œ€์ƒ
  • 2๋‹จ๊ณ„ ๋กœํ‚น ๊ทœ์•ฝ: ๋ฝ์„ ๊ฑธ๊ณ  ํ•ด์ œํ•˜๋Š” ์‹œ์ ์— ์ œํ•œ์„ ๋‘์ง€ ์•Š์œผ๋ฉด ๋‘ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์‹คํ–‰๋  ๋•Œ ์ผ๊ด€์„ฑ์ด ๊นจ์งˆ ์ˆ˜ ์žˆ์–ด ๋กœํ‚น ๋‹จ๊ณ„๋ฅผ 2๊ฐœ๋กœ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ํ™•์žฅ ๋‹จ๊ณ„(Growing Phase): ํŠธ๋žœ์žญ์…˜์€ ์ƒˆ๋กœ์šด lock ์—ฐ์‚ฐ๋งŒ ํ•  ์ˆ˜ ์žˆ๊ณ , unlock ์—ฐ์‚ฐ์€ ํ•  ์ˆ˜ ์—†๋Š” ๋‹จ๊ณ„
  • ์ถ•์†Œ ๋‹จ๊ณ„(Shrinking Phase): ํŠธ๋žœ์žญ์…˜์€ unlock ์—ฐ์‚ฐ๋งŒ ํ•  ์ˆ˜ ์žˆ๊ณ , lock ์—ฐ์‚ฐ์€ ํ•  ์ˆ˜ ์—†๋Š” ๋‹จ๊ณ„
  • ํŠธ๋žœ์žญ์…˜๋“ค์ด lockํ•˜๋Š” ์‹œ๊ฐ„๊ณผ unlock์„ ํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ตฌ๋ถ„ํ•˜์—ฌ ์ˆ˜ํ–‰

๋ฐ๋“œ๋ฝ(Deadlock, ๊ต์ฐฉ์ƒํƒœ)

  • ๋‘ ๊ฐœ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ๊ฐ ์ž์‹ ์˜ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•˜์—ฌ ๋ฝ์„ ํš๋“ํ•˜๊ณ  ์ƒ๋Œ€๋ฐฉ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•˜์—ฌ ๋ฝ์„ ์š”์ฒญํ•˜๋ฉด ๋ฌดํ•œ ๋Œ€๊ธฐ ์ƒํƒœ์— ๋น ์งˆ ์ˆ˜ ์žˆ๋Š” ํ˜„์ƒ