2021-07-15(Thu)

Facts (์‚ฌ์‹ค, ๊ฐ๊ด€)

  • ๊ฐ์‚ฌ์ผ๊ธฐ๋ฅผ 9์ผ์งธ ์ ๋Š” ๊ฒƒ์„ ์„ฑ๊ณตํ–ˆ๋‹ค.

  • ์‹ค๋ฌด๋ฅผ ์‹œ์ž‘?ํ•˜์˜€๋‹ค. ํ…Œ์ŠคํŠธ ๊ณผ์ œ๋ถ€ํ„ฐ!

Feelings (๋А๋‚Œ, ์ฃผ๊ด€)

ํ›„์•„ ์žฌ์›๋‹˜์˜ ํ”ผ๋“œ๋ฐฑ์— ๊ฐ๋™ ๋ฐ›์•˜๋‹ค. ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•ด์„œ ๊นจ๋‹ฌ์Œ์„ ์–ป์€ ๊ฒƒ ๊ฐ™์•„ ์งœ๋ฆฟํ–ˆ๋‹ค. ์ข‹์€ ํŒ€์— ๋“ค์–ด์™”๋‹ค๋Š” ๊ฒƒ์— ๋‹ค์‹œ ํ•œ๋ฒˆ ๊ฐ์‚ฌํ•œ๋‹ค. ์ œ๋Œ€๋กœ ์„ฑ์žฅํ•ด์•ผ์ง€!

์žฌ์›๋‹˜์ด ์ผํ•˜๋Š” ๋ฐฉ์‹์—์„œ ํ”„๋กœ๊ฐ€ ์ผํ•˜๋Š” ๋ฐฉ์‹์ด ์–ด๋– ํ•ด์•ผํ•˜๋Š”์ง€๋ฅผ ๋А๊ผˆ๋‹ค. ์œ„ํ‚ค๋กœ ๊ตฌ์กฐํ™”ํ•ด์„œ ์ž‘์—…์„ ๊ณต์œ ํ•˜๊ณ  ํ˜‘์—…์ฝœ์„ ํ•ด์ฃผ๋Š” ์Šคํ‚ฌ์ด ์ตœ๊ณ ๋‹ค. ๊ฐ™์ด ์ผํ•˜๊ณ  ์‹ถ์€ ๋А๋‚Œ์ด ๋“ค๊ฒŒ๋”, ๋‚˜๋„ ์ด ๋ถ€๋ถ„์„ ์ ๊ทน ์ตํ˜€์•ผ๊ฒ ๋‹ค.

๋‚ด๊ฐ€ ๋‹ค๋ฅธ ๋ถ„๋“ค๊ณผ ์˜ค๋””์˜ค๊ฐ€ ๊ฒน์น˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๊ฝค ์žˆ๋Š”๋ฐ, ๋งํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์† ๋“ค๊ณ  ์žˆ๋‹ค๊ฐ€ ์Šค๋ฌด์Šคํ•˜๊ฒŒ ๋ฐœ์–ธ ๊ธฐํšŒ๋ฅผ ์–ป์–ด์„œ ๋ฐœ์–ธํ•˜๋„๋ก ํ•ด๋ณด์•˜๋‹ค. ํšจ๊ณผ์ ์ด์—ˆ๊ณ  ์Šค์Šค๋กœ๋ฅผ ๊ฐœ์„ ํ•œ ๊ฒƒ ๊ฐ™์•„ ๊ธฐ๋ถ„ ์ข‹๋‹ค.

Table lock๊ณผ Row lock์˜ ์‹ค์‚ฌ์šฉ ์˜ˆ๋ฅผ ์ฐพ๋‹ค๋ณด๋‹ˆ lock๊ณผ ํŠธ๋žœ์žญ์…˜ ๊ด€๋ จ ๊ธ€๋งŒ ์ˆ˜์‹ญํŽธ ๋ณธ ๊ฒƒ ๊ฐ™๋‹ค. ์ด์   ํŠธ๋žœ์žญ์…˜ ๋ ˆ๋ฒจ์— ๋”ฐ๋ผ ๋ฐœ์ƒ๊ฐ€๋Šฅํ•œ ์ •ํ•ฉ์„ฑ ์—๋Ÿฌ ์œ ํ˜•๋„ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋จธ๋ฆฌ์— ๋“ค์–ด์˜จ ๊ฒƒ ๊ฐ™๋‹ค. dirty read, non repeatable read, phantom read..

Findings (๋ฐฐ์šด ์ )

ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ๊ณผ ์‹ค ํ™˜๊ฒฝ์ด ๋‹ค๋ฅด๋ฏ€๋กœ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ํ•ญ์ƒ ์—ผ๋‘ํ•ด๋‘ฌ์•ผํ•˜๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค.

rspec์€ ์ž˜ ํ†ต๊ณผํ•ด์„œ ๊ดœ์ฐฎ์€์ค„ ์•Œ์•˜๋‹ค.

ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ํ–ˆ์„ ๋•Œ์™€ ์•ˆํ–ˆ์„ ๋•Œ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ธฐ์—, ํŠธ๋žœ์žญ์…˜ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ๋™์‹œ์„ฑ ์ด์Šˆ๋ฅผ ํ•ด๊ฒฐํ•œ ์ค„ ์•Œ์•˜๋Š”๋ฐ ์˜คํ•ดํ•œ ๊ฒƒ์ด์—ˆ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ with_lock ์„ ์จ์„œ ํ•ด๊ฒฐํ–ˆ๋‹ค.

rails lock๊ณผ with_lock ๋ฉ”์†Œ๋“œ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ํ™•์ธํ–ˆ๋‹ค.

  • ์ฐจ์ด์  2๊ฐ€์ง€

    • ์›์ž์„ฑ์„ ํ™•๋ณดํ•˜๋Š”์ง€ ์—ฌ๋ถ€

    • reload ์—ฌ๋ถ€

๋ณ‘๊ทœ๋‹˜๊ณผ์˜ ํ˜‘์—…์„ ํ†ตํ•ด, ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด์„  O/X ๊ฐ™์€ ๊ธฐํ˜ธ๋ฅผ ์“ฐ๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ž„์„ ๋ฐฐ์› ๋‹ค.

Affimation (์ž๊ธฐ ์„ ์–ธ)

  • ๋‚˜๋Š” ๋ฌด์ง€๋ฅผ ์ธ์ง€ํ•˜์—ฌ ์ ๊ทน์ ์œผ๋กœ ๋“œ๋Ÿฌ๋‚ด๊ณ ,

  • ๋ฌด์ง€๋ฅผ ์•„๋Š” ์˜์—ญ์œผ๋กœ ๋ฐ”๊พธ์–ด๋‚ด๋ฉฐ,

  • ๊ฒฐ๊ตญ์—” ์„ฑ์žฅํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋‹ค.

Last updated

Was this helpful?