Skip to content

Latest commit

ย 

History

History
96 lines (68 loc) ยท 7.24 KB

concurrencyControl.md

File metadata and controls

96 lines (68 loc) ยท 7.24 KB

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

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

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

์—ฌ๊ธฐ์„œ ๋‹ค์ค‘ clientํ™˜๊ฒฝ์€ ์—ฌ๋Ÿฌ๋ช…์˜ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒ ๋ฐ ์กฐ์ž‘ํ•˜๋Š” ํ™˜๊ฒฝ์„ ๋งํ•œ๋‹ค. (ex. ์€ํ–‰, ์ฆ๊ถŒ์‚ฌ)

  • ๋‹ค์ค‘ client(๋งŽ์€ ์‚ฌ์šฉ์ž)๊ฐ€ ์žˆ์–ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•ˆ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์ ‘๊ทผ์ œ์–ด๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ํ•˜์ง€ ์•Š์œผ๋ฉด, ๋ถ€์ •ํ™•ํ•œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋˜๋ฒ„๋ฆฐ๋‹ค.
  • ํ•„์ˆ˜์ ์œผ๋กœ ์ง€์›ํ•ด์•ผ ํ•˜๋Š” ๊ธฐ๋Šฅ
  • ๋ณ‘ํ–‰์ œ์–ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค.

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

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

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

  1. ํŠธ๋žœ์žญ์…˜1์ด ์—ฐ์‚ฐ(X=X-100000)์„ ํ•˜๊ณ  ์žˆ๋Š”์ค‘์— (๋ณ€์ˆ˜ X์— ์ €์žฅ๋˜์–ด ์žˆ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ์ด ์•ˆ๋จ)
  2. ํŠธ๋žœ์žญ์…˜2๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์œผ๋ฉด ๊ธฐ์กด์— ์žˆ๋˜ X=300000์„ ์ฝ์–ด์˜จ๋‹ค. ๊ทธ๋ฆฌ๊ณ  X์˜ ๊ฐ’์„ X = X+50000์œผ๋กœ ๊ณ„์‚ฐ์„ ํ•œ๋‹ค.(๋ณ€์ˆ˜ X์— ์ €์žฅ๋˜์–ด ์žˆ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ์ด ์•ˆ๋จ)
  3. ๊ทธ ํ›„ write_item(X)๋ฅผ ํŠธ๋žœ์žญ์…˜1์ด ์ˆ˜ํ–‰ํ•˜๋ฉด X์˜ ๊ฐ’์ด 1์—์„œ ๊ณ„์‚ฐํ•œ ๊ฐ’ X=200000์œผ๋กœ ๋ณ€ํ•œ๋‹ค.(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ)
  4. ํŠธ๋žœ์žญ์…˜2๊ฐ€ write_item(X)๋ฅผ ์ˆ˜ํ–‰ํ•ด X์˜ ๊ฐ’์ด X=35000์œผ๋กœ ๋ณ€ํ•œ๋‹ค.(๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ์šฉ)
    => ์—ฌ๊ธฐ์„œ ํŠธ๋žœ์žญ์…˜1์ด ์ˆ˜ํ–‰ํ•œ ๋‚ด์šฉ์„ ํŠธ๋žœ์žญ์…˜2๊ฐ€ ์ˆ˜ํ–‰ํ•œ ๋‚ด์šฉ์œผ๋กœ ๋ฎ์–ด์“ฐ๊ฒŒ ๋˜์–ด์„œ ํŠธ๋žœ์žญ์…˜1์˜ ๊ฐฑ์‹ ์ด ์‚ฌ์‹ค์ƒ ๋ฌดํšจํ™”๊ฐ€ ๋˜์—ˆ๋‹ค.

ํ˜„ํ™ฉ ํŒŒ์•… ์˜ค๋ฅ˜(dirty read)

  • ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜์ •์„ ํ•˜๊ณ  ๊ทธ ์ˆ˜์ •์‚ฌํ•ญ์„ ์ปค๋ฐ‹ํ•˜์ง€ ์•Š์•˜์„๋•Œ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ ‘๊ทผํ• ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ


์‚ฌ์šฉ์ž A์˜ ํŠธ๋žœ์žญ์…˜์—์„œ X,Y๊ฐ’์„ ์ฝ๊ณ  X๊ฐ’์— 100์„ ๋”ํ•œ๋‹ค. ์ด๊ณผ์ • ๋’ค์— ์‚ฌ์šฉ์ž B์˜ ํŠธ๋žœ์žญ์…˜์ด X๋ฅผ ์ฝ์€ํ›„ X์˜ ๊ฐ’์— *2๋ฅผ ํ•ด์ค€๋‹ค.(๊ทธ๋Ÿฌ๋ฉด X=2200์ด ๋จ). Y์˜ ๊ฐ’์„ ์‚ฌ์šฉ์ž A์˜ ํŠธ๋žœ์žญ์…˜์ด ์ฝ์€ ํ›„ ๋ณ€๊ฒฝํ•œ๋‹ค(Y+100).


A์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํŠธ๋žœ์žญ์…˜์—์„œ ์˜๋„ ํ•œ๊ฐ’์€ X=1100, Y=1100์ธ๊ณ 
B์˜ ์‚ฌ์šฉ์ž๊ฐ€ ํŠธ๋žœ์žญ์…˜์—์„œ ์˜๋„ ํ•œ๊ฐ’์€ X=2200, Y=1000์ด๋‹ค. ํ•˜์ง€๋งŒ, ์ตœ์ข… ๊ฒฐ๊ณผ๋Š” X=2200, Y=1100์ด ๋œ๊ฒƒ.

์ด๋ ‡๊ฒŒ ๋‘ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ํ•œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•ด์„œ ์˜๋„ํ•œ๊ฒƒ๊ณผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๋Š”๊ฒƒ.

  1. Non Repeatable read
    ํ•œ ํŠธ๋žœ์žญ์…˜์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‘๋ฒˆ์ด์ƒ ์ฝ๋Š”๋ฐ ๊ทธ ํ•œ ํŠธ๋žœ์žญ์…˜์—์„œ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค๋ฅธ ๊ฐ’์„ ์ฝ์„ ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ค.


ํŠธ๋žœ์žญ์…˜2๊ฐ€ X๋ฅผ ์ฝ์€ ํ›„ ํŠธ๋žœ์žญ์…˜1์ด ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๊พผ๋‹ค. ์ดํ›„ ๋˜ ํŠธ๋žœ์žญ์…˜2๊ฐ€ X๋ฅผ ์ฝ์œผ๋ฉด ํŠธ๋žœ์žญ์…˜1์ด ๋ฐ”๊พผ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด ๊ฐ™์€ ํŠธ๋žœ์žญ์…˜์ž„์—๋„ ๋‹ค๋ฅธ ๊ฐ’์„ ์ฝ๊ฒŒ ๋œ๋‹ค.

  1. Phantom Read
    ํ•œ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ•œ๋ฒˆ ์ฝ๊ณ  ์ดํ›„ ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์—ˆ์„๋•Œ ๊ทธ ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๊ฒƒ

  2. Incorrect Summary
    ํ•œ ํŠธ๋žœ์žญ์…˜์ด ์ผ๋ถ€ ๋ ˆ์ฝ”๋“œ์— ์ง‘๊ณ„ ํ•จ์ˆ˜๋ฅผ ์ ์šฉํ•˜๋Š” ๋™์•ˆ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด ๋ณด์ž. ์—…๋ฐ์ดํŠธํ•˜๋Š” ํŠธ๋žœ์žญ์…˜์˜ ๋ช‡๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ณ€๊ฒฝ์„ ํ–ˆ๊ณ  ์•„์ง ๋‹ค๋ฅธ ๋ช‡๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋Š” ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•œ์ƒํ™ฉ์—์„œ ์ง‘๊ณ„ ํ•จ์ˆ˜๋Š” ๊ฐ’์ด ์—…๋ฐ์ดํŠธ๋˜๊ธฐ ์ „์— ๊ฐ’์„ ๊ณ„์‚ฐํ•˜๊ณ  ์—…๋ฐ์ดํŠธ๋œ ํ›„์— ๊ฐ’์„ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.


ํŠธ๋žœ์žญ์…˜2๊ฐ€ ์ง‘๊ณ„๋ฅผ ํ•˜๊ณ  ์žˆ๋Š” ์™€์ค‘์— ํŠธ๋žœ์žญ์…˜1์ด X์˜ ๊ฐ’์„ ๋ฐ”๊พผ๋‹ค. ๊ทธ ํ›„ ์ง‘๊ณ„๊ฐ€ ๋˜๊ณ  ํŠธ๋žœ์žญ์…˜1์ด ๋งˆ์ € Y๋ฅผ ๋ฐ”๊พผ๋‹ค. ์ง‘๊ณ„์— X์™€ Y์˜ ๊ฐ’์ด ๋‘˜๋‹ค ํ•œ๋ฒˆ์— ์ ์šฉ๋œ๊ฐ’์ด์—ฌ์•ผ ํ•˜์ง€๋งŒ ๋”ฐ๋กœ ์ ์šฉ์ด ๋˜์–ด๋ฒ„๋ฆฐ๋‹ค.

๋™์‹œ์„ฑ ์ œ์–ด ๋ฐฉ๋ฒ•

ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ์— ์ž ๊ธˆ(lock)์„ ์„ค์ •ํ•˜๋ฉด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์ž ๊ธˆ์ด ํ•ด์ œ(unlock)๋  ๋•Œ๊นŒ์ง€ ์ ‘๊ทผ/์ˆ˜์ •/์‚ญ์ œ๊ฐ€ ๋ถˆ๊ฐ€ํ•˜๋‹ค.

Two-phase locking


lock์„ ๋‘๋‹จ๊ณ„๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ง„ํ–‰ํ•œ๋‹ค.

์ด ๋ฐฉ๋ฒ•์€ ํ•œ ํŠธ๋žœ์žญ์…˜์„ 3๊ฐ€์ง€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆˆ๋‹ค.

  1. ์ฒซ๋ฒˆ์งธ๋Š” ํŠธ๋žœ์žญ์…˜์ด ์‹œ์ž‘๋˜๋ฉด ๋ชจ๋“  lock์„ ๋ชจ์€๋‹ค. (growing phase)
  2. ๋‘๋ฒˆ์งธ๋Š” ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์ด ๋ชจ๋“  lock์„ ๋ชจ์€ ์‹œ์ ์ด๋‹ค. ์ฒซ๋ฒˆ์งธ lock์ด ํ•ด์ œ๋ ๋•Œ ๋ถ€ํ„ฐ ์„ธ๋ฒˆ์งธ ๋ถ€๋ถ„์ด๋‹ค.
  3. ์…‹์งธ๋Š” lock์„ ํ•ด์ œํ•˜๋Š” ์‹œ์ ์ด๋‹ค. ์ด ์‹œ์ ์—๋Š” ์ƒˆ๋กœ์šด lock์„ ๊ฑธ ์ˆ˜ ์—†๋‹ค. (shrinking phase)

two phase locking์€ ๊ฐ ํŠธ๋žœ์žญ์…˜์ด ๋‘ ๋‹จ๊ณ„๋กœ ์ž ๊ธˆ ๋˜๋Š” ์ž ๊ธˆ ํ•ด์ œ๋ฅผ ์š”์ฒญํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค.

  • growing phase: ์ž ๊ธˆ์„ ์–ป๋Š” ๋‹จ๊ณ„์ด๋‹ค.(์ž ๊ธˆ์„ ํ•ด์ œํ•  ์ˆ˜ ์—†๋‹ค.)
  • shrinking phase: ์ž ๊ธˆ์€ ํ•ด์ œํ•˜๋Š” ๋‹จ๊ณ„์ด๋‹ค. (์ž ๊ธˆ์„ ์–ป์„ ์ˆ˜ ์—†๋‹ค.)


T1 ํŠธ๋žœ์žญ์…˜์€ 1์—์„œ 3๊นŒ์ง€ lock์„ ๊ฑธ๊ธฐ๋งŒ ํ•˜๊ณ (growing phase) ์ดํ›„ 5์—์„œ 7๊นŒ์ง€๋Š” ์ž ๊ธˆ์„ ํ’€๊ธฐ๋งŒ ํ•œ๋‹ค(release phase).-> 3์ด ์ž ๊ธˆ์„ ๋‹ค ๋ชจ์€ ์‹œ์ ์ธ lock point
T2 ํŠธ๋žœ์žญ์…˜์€ 2์—์„œ 6๊นŒ์ง€ lock์„ ๊ฑธ๊ธฐ๋งŒ ํ•˜๊ณ (growing phase) ์ดํ›„์—๋Š” 8๋ถ€ํ„ฐ๋Š” ์ž ๊ธˆ์„ ํ’€๊ธฐ๋งŒ ํ•œ๋‹ค(release phase).-> 6์ด ์ž ๊ธˆ์„ ๋‹ค ๋ชจ์€ ์‹œ์ ์ธ lock point

ํŠธ๋žœ์žญ์…˜ ์ง๋ ฌํ™”๋ฅผ ์‹œ์ผœ์ฃผ์ง€๋งŒ ๊ต์ฐฉ์ƒํƒœ๋ž‘ ๊ธฐ์•„์ƒํƒœ๊ฐ€ ์ผ์–ด๋‚  ์ˆ˜ ์žˆ๋‹ค.

2. Timestamp

์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ์—ฐ์‚ฐ์„ ๋จผ์ € ๋“ค์–ด์˜จ ํŠธ๋žœ์žญ์…˜ ์ˆœ์„œ๋กœ ์ˆ˜ํ–‰๋œ๋‹ค. ๋จผ์ € ๋“ค์–ด์˜จ ํŠธ๋žœ์žญ์…˜์ด ํ•ญ์ƒ ๋” ๋นจ๋ฆฌ ์ˆ˜ํ–‰๋จ.

3. Validation

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

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

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

์ฐธ๊ณ ์ž๋ฃŒ