๐Ÿ“’ Database

[Database] ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค Lock์˜ ๊ฐœ๋…, ์ƒ์„ฑ ๋ฐ ํ•ด์ œ ์›๋ฆฌ

a n u e 2022. 2. 26. 11:05
๋ชฉ์ฐจ
 Lock
 Lock์˜ ์ข…๋ฅ˜
 Lock์˜ ๋ฒ”์œ„

 Lock์˜ ํ•ด์ œ

 

์‹ค๋ฌด์—์„œ ๋ฌด์—‡๋ณด๋‹ค ๋‚˜๋ฅผ ๊ดด๋กญํžˆ๋˜ Lock์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž 


Lock?

Lock์€ DBMS์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ๋‹ค๋ฅธ ๋ง๋กœ ํ•˜๋ฉด, ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ์˜ ์ˆœ์ฐจ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•จ์ด๋‹ค.

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


Lock์˜ ์ข…๋ฅ˜

Lock์€ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜๋กœ ๋‚˜๋‰œ๋‹ค.

  • ๊ณต์œ  ๋ฝ(Shared Lock, ๋˜๋Š” Read Lock)

  ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋‚ด๊ฐ€ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— Lock์„ ๊ฑธ์—ˆ์–ด๋„, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ๊ณต์œ  ๋ฝ์„ ์„ค์ •ํ•œ ๊ฒฝ์šฐ์—” ๋ฐฐํƒ€ ๋ฝ์„ ์„ค์ •ํ•  ์ˆ˜ ์—†๋‹ค. ์ฆ‰, ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜๋Š” ์žˆ์œผ๋‚˜ ๋ณ€๊ฒฝ์€ ํ•  ์ˆ˜ ์—†๋‹ค. ์ฝ๊ธฐ ์ž ๊ธˆ์ด๋ผ๊ณ ๋„ ๋ถˆ๋ฆฐ๋‹ค. 

  • ๋ฐฐํƒ€ ๋ฝ(Exclusive Lock, ๋˜๋Š” Write Lock)

  ๋ฐ์ดํ„ฐ๋ฅผ ๋ณ€๊ฒฝํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋  ๋•Œ ๊นŒ์ง€ ์œ ์ง€๋œ๋‹ค. Lock์ด ํ•ด์ œ๋˜๊ธฐ ์ „ ๊นŒ์ง€๋Š” ๊ณต์œ  ๋ฝ๊ณผ ๋ฐฐํƒ€ ๋ฝ์„ ๋ชจ๋‘ ์„ค์ •ํ•  ์ˆ˜ ์—†๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ๋ณผ ์ˆ˜๋„ ์—†๊ณ  ๋ณ€๊ฒฝํ•  ์ˆ˜๋„ ์—†๋‹ค.

 


Lock์˜ ๋ฒ”์œ„

  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค  : ์ „์ฒด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ธฐ์ค€์œผ๋กœ Lock ์„ค์ •. 1๊ฐœ์˜ session๋งŒ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ์ดํ„ฐ๊ฐ€ ์ ‘๊ทผ ๊ฐ€๋Šฅ. DB ์†Œํ”„ํŠธ์›จ์–ด ์—…๊ทธ๋ ˆ์ด๋“œํ•  ๋•Œ ์‚ฌ์šฉ๋˜์–ด์ง„๋‹ค.
  • ํŒŒ์ผ : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํŒŒ์ผ ๊ธฐ์ค€์œผ๋กœ Lock ์„ค์ •. ์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฐ์ดํ„ฐ(table ๋“ฑ)๊ฐ€ ์“ฐ์—ฌ์ง€๋Š” ๋ฌผ๋ฆฌ์  ์ €์žฅ์†Œ ์˜๋ฏธ
  • ํ…Œ์ด๋ธ” : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ๊ธฐ์ค€์œผ๋กœ Lock ์„ค์ •. DDL Lock์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.
  • ์ปฌ๋Ÿผ
  • ํ–‰
  • ํŽ˜์ด์ง€/๋ธ”๋Ÿญ

Blocking

(์ด์ „์— ๋ธ”๋กœํ‚น์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…์„ ํ•œ ์ ์ด ์žˆ๋‹ค. https://itbox.tistory.com/34 )

 ๋ธ”๋กœํ‚น์€ Lock๊ณผ ๋–ผ์–ด๋†“์„ ์ˆ˜ ์—†๋Š” ๊ฐœ๋…์ด๋‹ค. Lock๊ฐ„ ๊ฒฝํ•ฉ(๊ณต์œ  ๋ฝ๏ผ๋ฐฐํƒ€ ๋ฝ, ๋ฐฐํƒ€ ๋ฝ๏ผ๋ฐฐํƒ€ ๋ฝ)์ด ๋ฐ”๋กœ ๋ธ”๋กœํ‚น์ด๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

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

 ๋ธ”๋กœํ‚น์„ ๋ฐœ์ƒ์‹œํ‚ค์ง€ ์•Š๊ธฐ ์œ„ํ•ด SQL ๋ฌธ์žฅ์˜ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๊ฑฐ๋‚˜, ํŠธ๋žœ์žญ์…˜์˜ ๋ฒ”์œ„๋ฅผ ์งง๊ฒŒ ์ง€์ •ํ•˜๋ฉด ์ข‹๋‹ค. ๋ฌด์—‡๋ณด๋‹ค ๊ฐ™์€ ์ž์›์— ๋Œ€ํ•ด ๋™์‹œ์— ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์„ ์ตœ๋Œ€ํ•œ ์ง€์–‘ํ•˜๋Š” ๊ฒƒ์ด ์ œ์ผ์ด๋‹ค. 


Dead Lock

(์ด์ „์— ๋ฐ๋“œ๋ฝ์— ๋Œ€ํ•ด ํฌ์ŠคํŒ…์„ ํ•œ ์ ์ด ์žˆ๋‹ค. https://itbox.tistory.com/51)

 ๊ต์ฐฉ์ƒํƒœ๋Š” ๋‘ ๊ฐœ์˜ ํŠธ๋žœ์žญ์…˜์ด ๊ฐ์ž Lock์„ ์„ค์ •ํ•˜๊ณ , ์„œ๋กœ์˜ Lock์— ์ ‘๊ทผํ•˜์—ฌ ๊ฐ’์„ ์–ป์–ด์˜ค๋ ค๊ณ  ํ•  ๋•Œ ๋ฐœ์ƒ๋œ๋‹ค. ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” Commit์ด๋‚˜ Rollback์ด ์•„๋‹Œ, DBMS์˜ ์—๋Ÿฌ ๋ฐœ์ƒ์œผ๋กœ ๋ฌธ์ œ๊ฐ€ ์ข…๋ฃŒ๋œ๋‹ค.

 

EX) ๋‘ ๊ฐœ์˜ ํ…Œ์ด๋ธ” A, B๊ฐ€ ์žˆ๋‹ค. ํŠธ๋žœ์žญ์…˜ T1์ด Aํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ–ˆ๊ณ , Bํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋™์‹œ์— ํŠธ๋žœ์žญ์…˜ T2๋Š” Bํ…Œ์ด๋ธ”์— ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ–ˆ๊ณ , ์ด์–ด์„œ Aํ…Œ์ด๋ธ”์„ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ์ด ๊ฒฝ์šฐ์— T1์€ Aํ…Œ์ด๋ธ”์— ๋ฒ ํƒ€ ๋ฝ์„ ์„ค์ •ํ–ˆ๊ณ , T2๋Š” Bํ…Œ์ด๋ธ”์— ๋ฒ ํƒ€ ๋ฝ์„ ์„ค์ •ํ•œ ์ƒํƒœ๋‹ค. ์ด ๊ฒฝ์šฐ T1, T2 ๋ชจ๋‘ ์ƒ๋Œ€์˜ ๋ฒ ํƒ€ ๋ฝ์ด ํ’€๋ฆด ๋•Œ ๊นŒ์ง€ ๋ฌดํ•œ์ •์œผ๋กœ ๋Œ€๊ธฐํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ์ด Lock์€ ์„œ๋กœ์˜ ํŠธ๋žœ์žญ์…˜์ด ์ข…๋ฃŒ๋˜๊ธฐ๋งŒ์„ ๊ธฐ๋‹ค๋ฆฌ๋ฏ€๋กœ ์˜์›ํžˆ ํ•ด์†Œ๋˜์ง€ ๋ชปํ•œ๋‹ค.