์๋
ํ์ธ์ ์ฌ๋ฌ๋ถ. Vladislav Rodin๋์ด ์ฐ๋ฝ์ ์ฃผ์
จ์ต๋๋ค. ์ ๋ ํ์ฌ OTUS์ High Workload Architect ๊ณผ์ ์ ์ฝ์ค ๋ฆฌ๋์ด๋ฉฐ ์ํํธ์จ์ด ์ํคํ
์ฒ ๊ณผ์ ๋ ๊ฐ๋ฅด์น๊ณ ์์ต๋๋ค.
๊ฐ๋ฅด์น๋ ๊ฒ ์ธ์๋, ์์๋ค์ํผ ์ ๋ Habrรฉ์ OTUS ๋ธ๋ก๊ทธ์ ์๋ณธ ์๋ฃ๋ฅผ ์์ฑํ๊ณ ์์ผ๋ฉฐ, ๊ฐ์ข ๊ฐ์ค์ ๋ง์ถฐ ์ค๋์ ๊ธฐ์ฌ๋ ํจ๊ป ์์ฑํ๊ณ ์ถ์ต๋๋ค.
์๊ฐ
ะ
์ ์ฐ
๊ฒฉ๋ฆฌ๋ ๊ฒฝ์์ด ์น์ดํ ํ๊ฒฝ์์ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ฌ ๋ณธ์ง์ ์ผ๋ก ๊ฒฝ์ ์กฐ๊ฑด์ผ๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค. ์ด์์ ์ผ๋ก ๊ฒฉ๋ฆฌ๋ ํธ๋์ญ์ ์ ๋ณ๋ ฌ๋ก ์คํํ ๊ฒฐ๊ณผ๊ฐ ์์ฐจ์ ์ผ๋ก ์คํํ ๊ฒ๊ณผ ๋์ผํ๋๋ก ๋ณด์ฅํ๋ ์์ฑ์ธ ์ง๋ ฌํ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด ์์ฑ์ ์ฃผ์ ๋ฌธ์ ์ ์ ๊ธฐ์ ์ ์ผ๋ก ์ ๊ณตํ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต๊ณ ๊ฒฐ๊ณผ์ ์ผ๋ก ์์คํ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋์์ ์ค๋ช ํ ํน์ ๋ณ์น์ ์ํ์ ๊ฐ์ํ๋ฉด์ ๊ฒฉ๋ฆฌ๊ฐ ์ฝํ๋๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ํน์ ์ด์์ด ๋ฐ์ํ ๊ฐ๋ฅ์ฑ์ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ์ ํํ๊ฒ ๋ํ๋ ๋๋ค.
๊ฐ์ฅ ์ ์๋ ค์ง ์ด์ ํ์์ ๋ํฐ ์ฝ๊ธฐ(dirty read), ๋ฐ๋ณต ๋ถ๊ฐ๋ฅ ์ฝ๊ธฐ, ํฌํ ์ฝ๊ธฐ(phantom read)์ด์ง๋ง ์ค์ ๋ก๋ ๋ํฐ ์ฐ๊ธฐ, ์ปค์ ์ ๋ฐ์ดํธ ์์ค, ์ ๋ฐ์ดํธ ์์ค, ์ฝ๊ธฐ ํธํฅ, ์ฐ๊ธฐ ํธํฅ ๋ฑ 5๊ฐ์ง๊ฐ ๋ ์์ต๋๋ค.
๋๋ฌ์ด ์ฐ๊ธฐ
์ด์ ํ์์ ๋ณธ์ง์ ํธ๋์ญ์ ์ด ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ธ ์ ์๋ค๋ ๊ฒ์ ๋๋ค.
์ด ์์ธ๋ ๋ ํธ๋์ญ์
์ ๋ชจ๋ ์ปค๋ฐํ ํ ๋ฐ์ดํฐ๊ฐ ์ถฉ๋ํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์์์ฑ์ด ์๋ฐ๋๊ธฐ ๋๋ฌธ์ ์ํํฉ๋๋ค. ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ธ ์ ์์ผ๋ฏ๋ก ๋ค๋ฅธ ํธ๋์ญ์
์ ์ํฅ์ ์ฃผ์ง ์๊ณ ํ ํธ๋์ญ์
์ ๋กค๋ฐฑํ๋ ๋ฐฉ๋ฒ์ด ๋ช
ํํ์ง ์์ต๋๋ค. .
์ด์ ํ์์ ๋งค์ฐ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ๊ธฐ๋ก์ ์์ํ๊ธฐ ์ ์ ๋ ์ฝ๋์ ์ ๊ธ์ ์ฐ๊ฒฐํ์ฌ ์ ๊ธ์ด ์ ๊ฑฐ๋ ๋๊น์ง ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๊ธ์งํฉ๋๋ค.
๋๋ฌ์ด ์ฝ๊ธฐ
๋ํฐ ์ฝ๊ธฐ(Dirty Read)๋ ์ปค๋ฐ๋์ง ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ํ์ ๊ธฐ๋ฐ์ผ๋ก ์กฐ์น๋ ๊ฒฐ์ ์ ๋ด๋ ค์ผ ํ ๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด์ ํ์์ ์์ ํ๊ธฐ ์ํด ์ฝ๊ธฐ ์ ๊ธ์ ์ฐ๊ฒฐํ ์ ์์ง๋ง ์ด๋ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ํธ๋์ญ์ ๋กค๋ฐฑ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ์ ์ด๊ธฐ ์ํ(๊ธฐ๋ก ์์ ์ )๊ฐ ์์คํ ์ ์ ์ฅ๋์ด์ผ ํ๋ค๊ณ ๋งํ๋ ๊ฒ์ด ํจ์ฌ ๊ฐ๋จํฉ๋๋ค. ๊ฑฐ๊ธฐ๋ถํฐ ์ฝ์ด๋ณด๋ฉด ์ด๋จ๊น์? ๋๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ํฐ ์ฝ๊ธฐ๋ฅผ ์ ๊ฑฐํ ๋งํผ ์ถฉ๋ถํ ์ ๋ ดํฉ๋๋ค.
์ ๋ฐ์ดํธ ์์ค
์ ๋ฐ์ดํธ ์์ค์ ์ ๋ฐ์ดํธ ์์ค์ ์๋ฏธํ๋ฉฐ ๋ฒ์ญ์ ๋ฌธ์ ์ ๋ณธ์ง์ ๋งค์ฐ ์ ํํ๊ฒ ๋ฐ์ํฉ๋๋ค.
์ค์ ๋ก ํธ๋์ญ์
T2์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ ๋์์ต๋๋ค. ์ด ์ํฉ์ ๋ช
์์ ๋๋ ์์์ ์ฐ๊ธฐ ์ ๊ธ์ ํตํด ํด๊ฒฐ๋ ์ ์์ต๋๋ค. ์ฆ, ๋จ์ํ ๋ ์ฝ๋๋ฅผ ์
๋ฐ์ดํธํ ๋ค์ ์์์ ์ ๊ธ์ด ๋ฐ์ํ๊ฑฐ๋ ๋ค์์ ์ํํฉ๋๋ค. ์
๋ฐ์ดํธ๋ฅผ ์ํด ์ ํ, ์ฝ๊ธฐ ๋ฐ ์ฐ๊ธฐ ์ ๊ธ์ด ๋ฐ์ํฉ๋๋ค. ์ด๋ฌํ ์์
์ ๋งค์ฐ ์ํํ๋ค๋ ์ ์ ์ ์ํ์ญ์์ค. "์์งํ" ํ๋
์ผ๋ก ์ธํด ๋ค๋ฅธ ํ๋
์ด ์ฐจ๋จ๋ฉ๋๋ค. ์ผ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ ์์ ํ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ๊ณต์ ๋ฅผ ์ํด ์ ํ, ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์๋ ์์ง๋ง ์์ ํ ์๋ ์์ต๋๋ค.
์ปค์ ์ ๋ฐ์ดํธ๊ฐ ์์ค๋์์ต๋๋ค.
๋ณด๋ค ๋ฏธ์ธํ ์ ์ด๋ฅผ ์ํด ๋ฒ ์ด์ค๋ ์ปค์์ ๊ฐ์ ๋ค๋ฅธ ๋๊ตฌ๋ฅผ ์ ๊ณตํ ์ ์์ต๋๋ค. ์ปค์๋ ์ผ๋ จ์ ํ์ ํฌํจํ๊ณ ์ด๋ฅผ ๋ฐ๋ณตํ ์ ์๋ ๊ตฌ์กฐ์ ๋๋ค. select_statement์ ๋ํดcursor_name์ ์ ์ธํฉ๋๋ค.. ์ปค์์ ๋ด์ฉ์ ์ ํ์ผ๋ก ์ค๋ช ๋ฉ๋๋ค.
์ปค์๊ฐ ์ ํ์ํ๊ฐ์? ์ฌ์ค ์ผ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ select๋ก ์ ํํ ๋ชจ๋ ๋ ์ฝ๋(์ฝ๊ธฐ ์์ ์ฑ) ๋๋ ์ปค์๊ฐ ํ์ฌ ์์นํ ๋ ์ฝ๋(์ปค์ ์์ ์ฑ)์ ๋ํด์๋ง ์ ๊ธ์ ์ ๊ณตํฉ๋๋ค. ์ปค์ ์์ ์ฑ์ ํตํด ์งง์ ์ ๊ธ์ด ๊ตฌํ๋์ด ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ํ์ ๋ฐ๋ณตํ๋ ๊ฒฝ์ฐ ์ ๊ธ ์๋ฅผ ์ค์ผ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ๋ฐ์ดํธ ์์ค ์ด์ ํ์์ ์ปค์์ ๋ํด ๋ณ๋๋ก ๊ฒฉ๋ฆฌ๋ฉ๋๋ค.
๋ฐ๋ณต ๋ถ๊ฐ๋ฅํ ์ฝ๊ธฐ
๋ฐ๋ณต ๋ถ๊ฐ๋ฅ ์ฝ๊ธฐ๋ ํธ๋์ญ์ ์ ์คํํ๋ ๋์ ๋์ผํ ๋ ์ฝ๋๋ฅผ 2๋ฒ ์ฐ์์ผ๋ก ์ฝ์ผ๋ฉด ๋ค๋ฅธ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์ํ๋ค๋ ๊ฒ์ ๋๋ค. ์ด ๋ ์ฝ๊ธฐ ์ฌ์ด์ ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๊ฐ์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ปค๋ฐ๋์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด๊ฒ์ด ์ ๋ฌธ์ ๊ฐ ๋ฉ๋๊น? ๊ทธ๋ฆผ์์ ๊ฑฐ๋ T2์ ๋ชฉํ๋ ๊ฐ๊ฒฉ์ด 150 USD ๋ฏธ๋ง์ธ ๋ชจ๋ ์ํ์ ์ ํํ๋ ๊ฒ์ด๋ผ๊ณ ์์ํด ๋ณด์ธ์. ๋ค๋ฅธ ์ฌ๋์ด ๊ฐ๊ฒฉ์ 200๋ฌ๋ฌ๋ก ์
๋ฐ์ดํธํ์ต๋๋ค. ๋ฐ๋ผ์ ์ค์น๋ ํํฐ๊ฐ ์๋ํ์ง ์์์ต๋๋ค.
์ด๋ฌํ ์ด์ ํ์์ XNUMX์ ์ธํฐ๋ก์ ์ถ๊ฐํ๊ฑฐ๋ MVCC ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํ๋ฉด ๋ ์ด์ ๋ฐ์ํ์ง ์์ต๋๋ค. ์ด์ ๋ํด์๋ ๋ณ๋๋ก ๋ ผ์ํ๊ณ ์ถ์ต๋๋ค.
ํฌํ ์ฝ๊ธฐ
Phantom์ ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ํด ์ถ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋ ๊ฒ์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์ด๋ฌํ ์ด์์ด ๋ฐ์ํ ๋ ๊ฐ์ฅ ์ ๋ ดํ ์ ํ์ ์๋ชป ์ ํํ๋ ๊ฒ์ ๊ด์ฐฐํ ์ ์์ต๋๋ค.
ํฌํ ์ฝ๊ธฐ๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ์ด๋ฏธ ๋งค์ฐ ์ด๋ ต์ต๋๋ค. ์์ง ์กด์ฌํ์ง ์๋ ๊ฒ์ ์ฐจ๋จํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ๊ธฐ์ ์ธ ์ฐจ๋จ๋ง์ผ๋ก๋ ์ถฉ๋ถํ์ง ์์ต๋๋ค. 2PL ์์คํ ์ ์์ธก ์ ๊ธ์ ์ฌ์ฉํ๋ ๋ฐ๋ฉด MVCC ์์คํ ์๋ ์ฝ์ ์ผ๋ก ์ธํด ์ค๋จ๋ ์ ์๋ ํธ๋์ญ์ ์ ๋กค๋ฐฑํ๋ ํธ๋์ญ์ ์ค์ผ์ค๋ฌ๊ฐ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ ๋ฉ์ปค๋์ฆ์ ๋ชจ๋ ์๋นํ ๋ฌด๊ฒ์ต๋๋ค.
ํธํฅ ์ฝ๊ธฐ
์ฝ๊ธฐ ํธํฅ์ ๋ด์ฉ์ด ์ง์์ ์ผ๋ก ๋ณ๊ฒฝ๋์ด์ผ ํ๋ ์ฌ๋ฌ ํ ์ด๋ธ๋ก ์์ ํ ๋ ๋ฐ์ํฉ๋๋ค.
๊ฒ์๋ฌผ๊ณผ ํด๋น ๋ฉํ ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ํ ์ด๋ธ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
ํ ํธ๋์ญ์
์ ํ
์ด๋ธ์์ ์ฝ๊ณ ๋ค๋ฅธ ํธ๋์ญ์
์ ํ
์ด๋ธ์ ์์ ํฉ๋๋ค.
ํธ๋์ญ์
T1์ ๊ฒฐ๊ณผ๋ก ๊ฒ์๋ฌผ์ ์ ๋ชฉ์ ์ข์, ์
๋ฐ์ดํธ๋_by๋ T2์ด๋ฉฐ ์ด๋ ์ผ์ข
์ ๋ถ์ผ์น์
๋๋ค.
์ค์ ๋ก ์ด๋ ๋ฐ๋ณต ๋ถ๊ฐ๋ฅํ ์ฝ๊ธฐ์ด์ง๋ง ์ฌ๋ฌ ํ ์ด๋ธ์ ์ผ๋ถ์ ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด T1์ ์ฝ์ ๋ชจ๋ ํ์ ์ ๊ธ์ ์ค์ ํ์ฌ ํธ๋์ญ์ T2๊ฐ ์ ๋ณด๋ฅผ ๋ณ๊ฒฝํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. MVCC์ ๊ฒฝ์ฐ T2 ๊ฑฐ๋๊ฐ ์ทจ์๋ฉ๋๋ค. ์ปค์๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ฌํ ์ด์ ํ์์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ๊ฒ์ด ์ค์ํด์ง ์ ์์ต๋๋ค.
์ฐ๊ธฐ ์๊ณก
์ด ์ด์ ํ์์ ์๋ฅผ ๋ค์ด ์ค๋ช ํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค. ์ฐ๋ฆฌ ์์คํ ์์ ์ ์ด๋ ํ ๋ช ์ ์์ฌ๊ฐ ๊ทผ๋ฌดํด์ผ ํ์ง๋ง ๋ ์์ฌ ๋ชจ๋ ์ง๋ฌด๋ฅผ ์ทจ์ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค.
์ด์ ํ์์ ์์ฌ ์ค ๋๊ตฌ๋ ๊ทผ๋ฌดํ์ง ์์ ๊ฒ์์ ์๋ฏธํ์ต๋๋ค. ์ ์ด๋ฐ ์ผ์ด ์ผ์ด๋ฌ๋์? ํธ๋์ญ์
์ด ๋ค๋ฅธ ํธ๋์ญ์
์ ์ํด ์๋ฐ๋ ์ ์๋ ์กฐ๊ฑด์ ํ์ธํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ๊ฒฉ๋ฆฌ๋ก ์ธํด ์ด๋ฌํ ๋ณ๊ฒฝ ์ฌํญ์ ๋ณผ ์ ์์์ต๋๋ค.
์ด๋ ๋์ผํ ๋ฐ๋ณต ๋ถ๊ฐ๋ฅ ์ฝ๊ธฐ์ ๋๋ค. ๋๋ ์ ํํ๋ฉด ์ด๋ฌํ ๋ ์ฝ๋์ ์ ๊ธ์ ์ค์ ํ ์ ์์ต๋๋ค.
์ฐ๊ธฐ ํธํฅ๊ณผ ์ฝ๊ธฐ ํธํฅ์ ์ด์ ์ด์ ํ์์ ์กฐํฉ์ ๋๋ค. ๋ณธ์ง์ ์ผ๋ก ํฌํ ์ฝ๊ธฐ์ธ ์ฐ๊ธฐ ์๊ณก์ ๊ณ ๋ คํ ์ ์์ต๋๋ค. ์ง์์ ์ด๋ฆ, ๊ธ์ฌ, ์์ ํ๋ ํ๋ก์ ํธ๊ฐ ํฌํจ๋ ํ ์ด๋ธ์ ์๊ฐํด ๋ณด์ธ์.
๊ทธ ๊ฒฐ๊ณผ ๋ค์๊ณผ ๊ฐ์ ๊ทธ๋ฆผ์ ์ป์ ์ ์์ต๋๋ค. ๊ฐ ๊ด๋ฆฌ์๋ ์์ ์ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ์์ฐ ์ด๊ณผ๊ฐ ๋ฐ์ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ฌ ์ธ๋ ฅ ๋ณ๊ฒฝ์ ์ํํ์ผ๋ฉฐ ์ด๋ก ์ธํด ๋น์ฉ ์ด๊ณผ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ฌธ์ ์ ์์ธ์ ํฌํ ํ๋ ๊ณผ ์ ํํ ๋์ผํฉ๋๋ค.
์กฐ์ฌ ๊ฒฐ๊ณผ
๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํธ๋์ญ์ ๊ฒฉ๋ฆฌ ์์ค์ ์ํํ๋ ๊ฒ์ ๋ณด์๊ณผ ์ฑ๋ฅ ๊ฐ์ ๊ท ํ์ ๋ง์ถ๋ ๊ฒ์ ๋๋ค. ์ด ์์ค์ ์ ํ์ ํน์ ์ด์์ด ๋ฐ์ํ ๊ฒฝ์ฐ ๋น์ฆ๋์ค์ ๋ํ ์ ์ฌ์ ์ํ์ ๊ธฐ๋ฐ์ผ๋ก ์ ๊ทผํด์ผ ํฉ๋๋ค.
์ถ์ฒ : habr.com