software engineering/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์„ค๊ณ„

[DB] ๋ฝ๊ณผ ๋ฐ๋“œ๋ฝ (Dead Lock)

jjingle 2023. 11. 6. 15:45

* ๋ฝ(Lock)

- ํŠธ๋žœ์žญ์…˜ ์‚ฌ์ด์˜ ๊ฐ„์„ญ์„ ๋ง‰๊ณ  ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ํ•ต์‹ฌ์š”์†Œ
- ํ•œ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๊ฒฝ์šฐ, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ๋ชปํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ 
๋ฝ ์„ค๋ช…
๊ณต์œ ๋ฝ(S; Shared Lock) - SELECT ๋ฌธ์ฒ˜๋Ÿผ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์ž‘์—…์— ์‚ฌ์šฉ
- ๊ณต์œ ๋ฝ๋ผ๋ฆฌ๋Š” ์„œ๋กœ ํ˜ธํ™˜๋จ(๋™์‹œ์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ SELECT ๊ฐ€๋Šฅ)
๋ฐฐํƒ€๋ฝ(E; Exclusive Lock) - ๋ฐ์ดํ„ฐ ์ˆ˜์ • ์ž‘์—…์ด ๋ฐœ์ƒ๋˜๋Š” INSERT, UPDATE, DELETE์—์„œ ์‚ฌ์šฉ
- ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์—…๋ฐ์ดํŠธ ์ž‘์—…์ด ํ•˜๋‚˜์˜ ๋ฆฌ์†Œ์Šค์— ๋™์‹œ์— ์ˆ˜ํ–‰๋˜์ง€ ๋ชปํ•˜๋„๋ก ๋ฐฉ์ง€
์—…๋ฐ์ดํŠธ๋ฝ
(U; Update Lock)
- ๊ณต์œ ๋ฝ์ด ์žˆ๋Š” ์ž์›์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ ์‹œ ์‚ฌ์šฉ
์˜๋„๋ฝ(Intent Lock) - ๋ฝ์˜ ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ์‚ฌ์šฉ
- ์˜๋„๊ณต์œ (IS), ์˜๋„๋ฐฐํƒ€(IX), ์˜๋„๋ฐฐํƒ€๊ณต์œ (SIX)๊ฐ€ ์žˆ์Œ
์Šคํ‚ค๋งˆ๋ฝ(Schema Lock) - ํ…Œ์ด๋ธ”์ด๋‚˜ ์ธ๋ฑ์Šค๊ฐ€ ๋‹ค๋ฅธ ์„ธ์…˜์— ์˜ํ•ด ์ฐธ์กฐ๋˜๊ณ  ์žˆ์„ ๋™์•ˆ ์‚ญ์ œ๋‚˜ ๋ณ€๊ฒฝ์„ ๋ง‰์Œ
๋Œ€๋Ÿ‰ ์—…๋ฐ์ดํŠธ๋ฝ
(Bulk Update Lock)
- ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”๋กœ ๋Œ€๋Ÿ‰ ๋ณต์‚ฌํ•˜๋Š” ๊ฒฝ์šฐ์™€ TABLOCK ํžŒํŠธ๊ฐ€ ์ง€์ •๋œ ๊ฒฝ์šฐ

 


* ๋ฐ๋“œ๋ฝ(Dead Lock; ๊ต์ฐฉ์ƒํƒœ)

๋‘˜ ์ด์ƒ์˜ ํŠธ๋žœ์žญ์…˜๋“ค์˜ ์ž ๊ธˆ์ด ์„œ๋กœ ์–ฝํ˜€์„œ ์˜์›ํžˆ ํ’€๋ฆฌ์ง€ ์•Š๋Š” ์ƒํƒœ

 

* ๋ฐ๋“œ๋ฝ์˜ ํ•ด์†Œ

  • ๋ฐ๋“œ๋ฝ ์ƒํƒœ์— ์žˆ๋Š” ํŠธ๋žœ์žญ์…˜๋“ค ์ค‘ ๊ฐ€์žฅ ์ ์€ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์ด ํˆฌ์ž๋œ ํŠธ๋žœ์žญ์…˜์„ ๋ฐ๋“œ๋ฝ ํฌ์ƒ์ž(victim)๋กœ ์ง€์ •
  • ๋ฐ๋“œ๋ฝ์„ ๋ฐœ์ƒ์‹œํ‚จ ๋ฌธ์žฅ์„ ๋กค๋ฐฑ
  • ์—๋Ÿฌ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๊ณ  ํŠธ๋žœ์žญ์…˜์„ ๊ณ„์† ์ง„ํ–‰