View

[DB] ๋ฝ(Lock)์ด๋ž€?

์ฑ…์ฝ๋Š” ๊ฐ์ž 2022. 9. 8. 15:57
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ๋ฝ(Lock)์ด๋ž€?

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๋“ค์ด ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ์ ‘๊ทผํ•˜๋Š” ์ƒํ™ฉ์—์„œ, ๋ฐ์ดํ„ฐ์˜ ๋ฌด๊ฒฐ์„ฑ๊ณผ ์ผ๊ด€์„ฑ์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ

๐Ÿ’ก ๋ฝ(Lock)์˜ ์ข…๋ฅ˜

ํฌ๊ฒŒ๋Š” ๊ณต์œ ๋ฝ๊ณผ ๋ฐฐํƒ€์ ๋ฝ์œผ๋กœ ๋‚˜๋ˆ„์–ด์ง€๊ธดํ•จ

๊ณต์œ  ๋ฝ(Shared Lock)

๊ณต์œ  ๋ฝ์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๋Š” ์ฝ๊ธฐ ๋ช…๋ น์— ๋Œ€ํ•ด ์ฃผ์–ด์ง€๋Š” ๋ฝ์œผ๋กœ Read Lock์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฌ๋ฉฐ Shared์˜ ์•ž ๊ธ€์ž๋ฅผ ๋”ฐ์„œ ์ฃผ๋กœ S๋กœ ํ‘œ๊ธฐํ•œ๋‹ค

์—ฌ๋Ÿฌ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด๋„ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์—๋Š” ์•„๋ฌด๋Ÿฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๊ณต์œ  ๋ฝ๋ผ๋ฆฌ๋Š” ๋™์‹œ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ → ์ฆ‰, ๋‚ด๊ฐ€ ๋ณด๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋Š” ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ณ€๊ฒฝํ•  ์ˆ˜๋Š” ์—†์Œ

๋ฒ ํƒ€ ๋ฝ(Exclusive Lock)

๋ฒ ํƒ€ ๋ฝ์€ ๋ฐ์ดํ„ฐ์— ๋ณ€๊ฒฝ์„ ๊ฐ€ํ•˜๋Š” ์“ฐ๊ธฐ ๋ช…๋ น๋“ค์— ๋Œ€ํ•ด ์ฃผ์–ด์ง€๋Š” ๋ฝ์œผ๋กœ Write Lock์œผ๋กœ๋„ ๋ถˆ๋ฆฌ๋ฉฐ, X๋กœ ํ‘œ๊ธฐํ•œ๋‹ค

๋ฒ ํƒ€ ๋ฝ์€ ์ด๋ฆ„์ฒ˜๋Ÿผ ๋‹ค๋ฅธ ์„ธ์…˜์ด ํ•ด๋‹น ์ž์›์— ์ ‘๊ทผ(ex, SELECT, INSERT..) ํ•˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š”๋‹ค. ์ด๋Ÿฌํ•œ ์ ์—์„œ ๋ฒ ํƒ€ ๋ฝ์€ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋”ฉ ํ™˜๊ฒฝ์—์„œ, ์ž„๊ณ„ ์˜์—ญ์„ ์•ˆ์ „ํ•˜๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํ™œ์šฉ๋˜๋Š” ๋ฎคํ…์Šค์™€ ์œ ์‚ฌํ•˜๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

๋ฒ ํƒ€ ๋ฝ์€ ํŠธ๋žœ์žญ์…˜ ๋™์•ˆ ์œ ์ง€ → ์ฆ‰, ์ฝ๊ธฐ์™€ ์“ฐ๊ธฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅ

์—…๋ฐ์ดํŠธ ๋ฝ(Update Lock)

์—…๋ฐ์ดํŠธ ๋ฝ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด ๋ฒ ํƒ€ ๋ฝ(X)์„ ๊ฑธ๊ธฐ ์ „, ๋ฐ๋“œ ๋ฝ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฝ์ด๋‹ค

์ผ๋ฐ˜์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ๋ฝ์€ UPDATE ์ฟผ๋ฆฌ์˜ ํ•„ํ„ฐ(WHERE)๊ฐ€ ์‹คํ–‰๋˜๋Š” ๊ณผ์ •์—์„œ ์ ์šฉ๋œ๋‹ค

๋‚ด์žฌ ๋ฝ(Intent Lock)

๋‚ด์žฌ ๋ฝ์€ ์•ž์„œ ์†Œ๊ฐœํ•œ ๋ฝ๋“ค๊ณผ ์‚ฌ๋ญ‡ ๋‹ค๋ฅธ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค

๋‚ด์žฌ ๋ฝ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ๋ฒ”์œ„์— ๋Œ€ํ•œ ๋ฝ(ex, ํ…Œ์ด๋ธ” ๋ฝ)์„ ๊ฑธ ์ˆ˜ ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ๋น ๋ฅด๊ฒŒ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฝ์ด๋‹ค. ๋‚ด์žฌ ๋ฝ์€ ๊ณต์œ  ๋ฝ๊ณผ ๋ฒ ํƒ€ ๋ฝ ์•ž์— I ๊ธฐํ˜ธ๋ฅผ ๋ถ™์ธ IS, IX, SIX ๋“ฑ์ด ์žˆ๋‹ค


๐Ÿ’ก๋ธ”๋กœํ‚น (Blocking)

: Lock ๊ฐ„์˜ ๊ฒฝํ•ฉ(Race Condition)์ด ๋ฐœ์ƒํ•˜์—ฌ ํŠน์ • Transaction์ด ์ž‘์—…์„ ์ง„ํ–‰ํ•˜์ง€ ๋ชปํ•˜๊ณ  ๋ฉˆ์ถฐ์„  ์ƒํƒœ๋ฅผ ๋งํ•œ๋‹ค. ๊ณต์œ ๋ฝ๋ผ๋ฆฌ๋Š” ๋ธ”๋กœํ‚น์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š์ง€๋งŒ, ๋ฒ ํƒ€๋ฝ์€ ๋ธ”๋กœํ‚น์„ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

๋ธ”๋กœํ‚น์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด์ „ ํŠธ๋ž™์žญ์…˜์ด ์™„๋ฃŒ(commit or rollback) ๋˜์–ด์•ผ ํ•จ!!

  • ๋’ค์— ๋“ค์–ด์˜จ ํŠธ๋žœ์žญ์…˜์€ ์ด์ „ ํŠธ๋žœ์žญ์…˜์ด ๋งˆ๋ฌด๋ฆฌ๋˜์–ด์•ผ ์ดํ›„ ์ง„ํ–‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์„ฑ๋Šฅ์— ์ข‹์ง€ ์•Š์€ ์˜ํ–ฅ์„ ๋ฏธ์นœ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฒฝํ•ฉ์„ ์ตœ์†Œํ™” ํ•  ํ•„์š” → ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์„ ์งง๊ฒŒ

๐Ÿ’ก๊ต์ฐฉ์ƒํƒœ (DeadLock)

: ๊ต์ฐฉ์ƒํƒœ๋Š” ๋‘ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ๊ฐ Lock์„ ์„ค์ •ํ•˜๊ณ  ์„œ๋กœ์˜ Lock์— ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์„ ์–ป์–ด์˜ค๋ ค๊ณ  ํ•  ๋•Œ ์ด๋ฏธ ๊ฐ๊ฐ์˜ ํŠธ๋žœ์žญ์…˜์— ์˜ํ•ด Lock์ด ์„ค์ •๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์–‘์ชฝ ํŠธ๋žœ์žญ์…˜ ๋ชจ๋‘ ์˜์›ํžˆ ์ฒ˜๋ฆฌ๊ฐ€ ๋˜์ง€์•Š๊ฒŒ ๋˜๋Š” ์ƒํƒœ

 

์œ„์™€ ๊ฐ™์ด ๊ฐ๊ฐ์˜ ํŠธ๋žœ์žญ์…˜์— Lock์„ ๊ฑธ๊ณ  ์ƒ๋Œ€๋ฐฉ Lock์— ์ ‘๊ทผํ•˜์—ฌ ๋ฐ˜ํ™˜ ๋ฐ›์ง€ ๋ชปํ•˜๋Š” ์ƒํ™ฉ์—์„œ Dead Lock์ด ๋ฐœ์ƒํ•˜๊ฒŒ ๋œ๋‹ค

์ถœ์ฒ˜: https://devfunny.tistory.com/668

(์ƒํ™ฉ ์˜ˆ์‹œ)1) Shared Lock + Exclusive Lock

= ํŠธ๋žœ์žญ์…˜ A๊ฐ€ Shared Lock์„ ์„ค์ •ํ•˜๊ณ  sleep ๋˜์—ˆ์„๋•Œ, ํŠธ๋žœ์žญ์…˜ B๊ฐ€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— Exclusive Lock์„ ๊ฑธ๋ ค๊ณ  ํ•˜๋ฉด ๋ฌด๊ธฐํ•œ ๊ธฐ๋‹ค๋ ค์•ผํ•˜๋Š” ๊ต์ฐฉ์ƒํƒœ์— ๋น ์ง€๊ฒŒ๋œ๋‹ค.

2) Exclusive Lock + Exclusive Lock

= ํŠธ๋žœ์žญ์…˜ A์—์„œ Exclusive Lock์„ ๊ฑธ์—ˆ์„๋•Œ ํŠธ๋žœ์žญ์…˜ B์—์„œ๋„ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์— Exclusive Lock์„ ๊ฑธ์—ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ์„œ๋กœ์˜ Lock๋œ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋ ค๊ณ ํ•  ๋•Œ ๊ธฐ์กด์˜ Lock์ด ํ•ด์ œ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ๋œ๋‹ค.

 

๐Ÿ’ก๊ต์ฐฉ์ƒํƒœ (DeadLock) ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

1. Dead Lock์ด ๊ฐ์ง€๋˜๋ฉด ๋‘˜ ์ค‘ ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์„ ๊ฐ•์ œ ์ข…๋ฃŒํ•œ๋‹ค

์‹ค์ œ๋กœ, Oracle ์—์„œ๋Š” ๋ฐ๋“œ๋ฝ์ด ๊ฐ์ง€๋˜๋ฉด ํ•œ์ชฝ Transaction์„ ๊ฐ•์ œ๋กœ ํ’€์–ด๋ฒ„๋ฆฐ๋‹ค

์ด๋ ‡๊ฒŒ ๋˜๋ฉด ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜A์˜ ๋งˆ์ง€๋ง‰ ์‹คํ–‰ ๋‚ด์šฉ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒ๋˜๊ณ  ์ปค๋ฐ‹์ด ๋ฐœ์ƒ๋˜๋„๋ก ์œ ์ง€ํ•œ๋‹ค

๋˜ ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜ B๋Š” ์•„์ง ๋Œ€๊ธฐ์ค‘์ด๋ฉฐ, ํŠธ๋žœ์žญ์…˜ A์˜ ์ปค๋ฐ‹์„ ๊ธฐ๋‹ค๋ฆฐ๋‹ค

2. Dead Lock ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ์ ‘๊ทผ ์ˆœ์„œ๋ฅผ ๋™์ผํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š” →์ ‘๊ทผ ์ˆœ์„œ ๊ทœ์น™์„ ์ •ํ•ด์•ผ ํ•จ

 


์ถœ์ฒ˜ ๋ฐ ์ฐธ๊ณ ์ž๋ฃŒ

[DB] Lock์ด๋ž€?

DB Lock

DB Lock

๋ฐ˜์‘ํ˜•
Share Link
reply
๋ฐ˜์‘ํ˜•
ยซ   2024/09   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30