2021-07-15(Thu)
Last updated
Last updated
๊ฐ์ฌ์ผ๊ธฐ๋ฅผ 9์ผ์งธ ์ ๋ ๊ฒ์ ์ฑ๊ณตํ๋ค.
์ค๋ฌด๋ฅผ ์์?ํ์๋ค. ํ ์คํธ ๊ณผ์ ๋ถํฐ!
ํ์ ์ฌ์๋์ ํผ๋๋ฐฑ์ ๊ฐ๋ ๋ฐ์๋ค. ๋์์ฑ ์ฒ๋ฆฌ์ ๋ํด์ ๊นจ๋ฌ์์ ์ป์ ๊ฒ ๊ฐ์ ์ง๋ฆฟํ๋ค. ์ข์ ํ์ ๋ค์ด์๋ค๋ ๊ฒ์ ๋ค์ ํ๋ฒ ๊ฐ์ฌํ๋ค. ์ ๋๋ก ์ฑ์ฅํด์ผ์ง!
์ฌ์๋์ด ์ผํ๋ ๋ฐฉ์์์ ํ๋ก๊ฐ ์ผํ๋ ๋ฐฉ์์ด ์ด๋ ํด์ผํ๋์ง๋ฅผ ๋๊ผ๋ค. ์ํค๋ก ๊ตฌ์กฐํํด์ ์์ ์ ๊ณต์ ํ๊ณ ํ์ ์ฝ์ ํด์ฃผ๋ ์คํฌ์ด ์ต๊ณ ๋ค. ๊ฐ์ด ์ผํ๊ณ ์ถ์ ๋๋์ด ๋ค๊ฒ๋, ๋๋ ์ด ๋ถ๋ถ์ ์ ๊ทน ์ตํ์ผ๊ฒ ๋ค.
๋ด๊ฐ ๋ค๋ฅธ ๋ถ๋ค๊ณผ ์ค๋์ค๊ฐ ๊ฒน์น๋ ๊ฒฝ์ฐ๊ฐ ๊ฝค ์๋๋ฐ, ๋งํ๊ณ ์ถ์ผ๋ฉด ์ ๋ค๊ณ ์๋ค๊ฐ ์ค๋ฌด์คํ๊ฒ ๋ฐ์ธ ๊ธฐํ๋ฅผ ์ป์ด์ ๋ฐ์ธํ๋๋ก ํด๋ณด์๋ค. ํจ๊ณผ์ ์ด์๊ณ ์ค์ค๋ก๋ฅผ ๊ฐ์ ํ ๊ฒ ๊ฐ์ ๊ธฐ๋ถ ์ข๋ค.
Table lock๊ณผ Row lock์ ์ค์ฌ์ฉ ์๋ฅผ ์ฐพ๋ค๋ณด๋ lock๊ณผ ํธ๋์ญ์ ๊ด๋ จ ๊ธ๋ง ์์ญํธ ๋ณธ ๊ฒ ๊ฐ๋ค. ์ด์ ํธ๋์ญ์ ๋ ๋ฒจ์ ๋ฐ๋ผ ๋ฐ์๊ฐ๋ฅํ ์ ํฉ์ฑ ์๋ฌ ์ ํ๋ ์์ฐ์ค๋ฝ๊ฒ ๋จธ๋ฆฌ์ ๋ค์ด์จ ๊ฒ ๊ฐ๋ค. dirty read, non repeatable read, phantom read..
ํ ์คํธ ํ๊ฒฝ๊ณผ ์ค ํ๊ฒฝ์ด ๋ค๋ฅด๋ฏ๋ก ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง ์ ์๋ค๋ ๊ฒ์ ํญ์ ์ผ๋ํด๋ฌ์ผํ๋ ๊ฒ์ ๊นจ๋ฌ์๋ค.
ํธ๋์ญ์
์ฒ๋ฆฌ๋ฅผ ํ์ ๋์ ์ํ์ ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฌ๋ผ์ง๊ธฐ์, ํธ๋์ญ์
์ฒ๋ฆฌ๋ฅผ ํตํด ๋์์ฑ ์ด์๋ฅผ ํด๊ฒฐํ ์ค ์์๋๋ฐ ์คํดํ ๊ฒ์ด์๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก with_lock
์ ์จ์ ํด๊ฒฐํ๋ค.
rails lock
๊ณผ with_lock
๋ฉ์๋์ ์ฐจ์ด์ ์ ๋ํด ํ์ธํ๋ค.
์ฐจ์ด์ 2๊ฐ์ง
์์์ฑ์ ํ๋ณดํ๋์ง ์ฌ๋ถ
reload ์ฌ๋ถ
๋ณ๊ท๋๊ณผ์ ํ์ ์ ํตํด, ๊ฐ๋ ์ฑ์ ๋์ด๊ธฐ ์ํด์ O/X ๊ฐ์ ๊ธฐํธ๋ฅผ ์ฐ๋ ๊ฒ์ด ํจ๊ณผ์ ์์ ๋ฐฐ์ ๋ค.
๋๋ ๋ฌด์ง๋ฅผ ์ธ์งํ์ฌ ์ ๊ทน์ ์ผ๋ก ๋๋ฌ๋ด๊ณ ,
๋ฌด์ง๋ฅผ ์๋ ์์ญ์ผ๋ก ๋ฐ๊พธ์ด๋ด๋ฉฐ,
๊ฒฐ๊ตญ์ ์ฑ์ฅํ๋ ๊ฐ๋ฐ์๋ค.