๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ‡ฉ๐Ÿ‡ฆ๐Ÿ‡น๐Ÿ‡ฆ๐Ÿ‡ง๐Ÿ‡ฆ๐Ÿ‡ธ๐Ÿ‡ช

SQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(DB) ํŠธ๋žœ์žญ์…˜ ์ง๋ ฌ ์Šค์ผ€์ค„, ์ž ๊ธˆ (S-lock, X-lock)

์ง๋ ฌ ๊ฐ€๋Šฅํ•œ ์Šค์ผ€์ค„

- ์ง๋ ฌ ์Šค์ผ€์ค„๊ณผ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋™์ผํ•œ ์Šค์ผ€์ค„

 

โ• ์ง๋ ฌ ๊ฐ€๋Šฅํ•œ ์Šค์ผ€์ค„์ธ์ง€ ํŒ๋‹จํ•˜๋Š” ๋ฐฉ๋ฒ•

- ์Šค์ผ€์ค„์— ๋‚˜ํƒ€๋‚œ ์—ฐ์‚ฐ๋“ค์˜ ์ˆœ์„œ๋ฅผ ์ „์ฒด์ ์ธ ์‹คํ–‰ ๊ฒฐ๊ณผ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋„๋ก ๊ตํ™˜

- ์ด ๋•Œ ์ฃผ์–ด์ง„ ์Šค์ผ€์ค„์ด ์ง๋ ฌ ์Šค์ผ€์ค„๋กœ ๋ณ€ํ™˜๋˜๋ฉด ์ง๋ ฌ ๊ฐ€๋Šฅํ•œ ์Šค์ผ€์ค„

 

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

โœ” ๋ณ‘ํ–‰ ์ˆ˜ํ–‰์œผ๋กœ ์ธํ•œ ๋ฌธ์ œ์ ๋“ค์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ  ์ง๋ ฌ ๊ฐ€๋Šฅํ•œ ์Šค์ผ€์ค„์ด ๋˜๋„๋ก ํŠธ๋žœ์žญ์…˜์„ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

์ž ๊ธˆ(locking)

- ํŠธ๋žœ์žญ์…˜์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ๊ฐ•์ œ๋กœ ์ œ์–ด

 

ํƒ€์ž„์Šคํƒฌํ”„

- ์ตœ๋Œ€ํ•œ ๋ณ‘ํ–‰ ์ˆ˜ํ–‰์„ ๋ณด์žฅ

- ์ง๋ ฌ ๊ฐ€๋Šฅํ•œ ์Šค์ผ€์ค„์— ์œ„๋ฐฐ๋  ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ์œผ๋ฉด ์‹คํ–‰ ์ทจ์†Œ

 

์ž ๊ธˆ(Locking)

 

โ–ช ํ•˜๋‚˜์˜ ํŠธ๋žœ์žญ์…˜์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์•ˆ ํŠน์ • ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์ด ๋™์‹œ์— ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋…์ ํ•˜๋Š” ๊ธฐ๋ฒ•

โ–ช ์ž ๊ธˆ์ด ๊ฑธ๋ฆฐ ๋ฐ์ดํ„ฐ๋Š” ์ž ๊ธˆ์„ ์‹คํ–‰ํ•œ ํŠธ๋žœ์žญ์…˜๋งŒ ๋…์ ์ ์œผ๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅ

โ–ช ์ž ๊ธˆ์„ ์ˆ˜ํ–‰ํ•œ ํŠธ๋žœ์žญ์…˜ ๋งŒ์ด ํ•ด์ œ ๊ฐ€๋Šฅ

 

์ž ๊ธˆ์˜ ์ข…๋ฅ˜

  • ๊ณต์œ  ์ž ๊ธˆ (shared lock, S-lock)

- ํŠธ๋žœ์žญ์…˜ T๊ฐ€ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ x์— ๋Œ€ํ•ด S-lock์„ ๊ฑธ๋ฉด T๋Š” read(x) ์—ฐ์‚ฐ์€ ๊ฐ€๋Šฅํ•˜์ง€๋งŒ write(x) ์—ฐ์‚ฐ์€ ๋ถˆ๊ฐ€๋Šฅ

- ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ณต์œ  ์ž ๊ธˆ ๊ฐ€๋Šฅ

- ์—ฌ๋Ÿฌ ํŠธ๋žœ์žญ์…˜๋“ค์ด ๋™์ผํ•œ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด ๊ณต์œ  ์ž ๊ธˆ ๊ฐ€๋Šฅ

 

  • ๋ฐฐํƒ€ ์ž ๊ธˆ (exclusive lock, X-lock)

- ํŠธ๋žœ์žญ์…˜ T๊ฐ€ ๋ฐ์ดํ„ฐํ•ญ๋ชฉ x์— ๋Œ€ํ•ด X-lock์„ ๊ฑธ๋ฉด T๋Š” read(x), write(x) ์—ฐ์‚ฐ ๋ชจ๋‘ ๊ฐ€๋Šฅ

- ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ์— ๋Œ€ํ•ด์„œ๋Š” ํ•˜๋‚˜์˜ ๋ฐฐํƒ€ ์ž ๊ธˆ๋งŒ ๊ฐ€๋Šฅ

 

๋™์‹œ ์ž ๊ธˆ ๊ฐ€๋Šฅ ์—ฌ๋ถ€

์ž ๊ธˆ์˜ ํ•œ๊ณ„

โ• ๋‹จ์ˆœํ•œ ์ž ๊ธˆ ์—ฐ์‚ฐ๋งŒ์œผ๋กœ ์ง๋ ฌ ๊ฐ€๋Šฅํ•œ ์Šค์ผ€์ค„์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค

โ• ๊ต์ฐฉ์ƒํƒœ ๋ฐœ์ƒ ๊ฐ€๋Šฅ