Bruce Momjian์ 2020๋ ๊ฐ์ฐ "Postgres ์ ๊ธ ๊ด๋ฆฌ์ ์ ๊ธ ํด์ "์ ๋ด์ฉ์ ๋๋ค.
(์ฐธ๊ณ : ์ฌ๋ผ์ด๋์ ๋ชจ๋ SQL ์ฟผ๋ฆฌ๋ ๋ค์ ๋งํฌ์์ ์ป์ ์ ์์ต๋๋ค.
์๋ ํ์ธ์! ์ฌ๊ธฐ ๋ฌ์์์ ๋ค์ ์ค๊ฒ ๋์ด ๋ฐ๊ฐ์ต๋๋ค. ์๋ ์ ๋ชป๊ฐ์ ์์ฝ์ง๋ง ์ฌํด Ivan๊ณผ ์ ๋ ํฐ ๊ณํ์ด ์์ด์. ๋๋ ์ฌ๊ธฐ์ ํจ์ฌ ๋ ์์ฃผ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋๋ ๋ฌ์์์ ์ค๋ ๊ฒ์ ์ข์ํฉ๋๋ค. ํธ๋ฒ ๋ฆฌ์ ํ๋ฉ์ ๋ฐฉ๋ฌธํ๊ฒ ์ต๋๋ค. ๋๋ ์ด ๋์๋ค์ ๋ฐฉ๋ฌธํ ์ ์๊ฒ ๋์ด ๋งค์ฐ ๊ธฐ์ฉ๋๋ค.
์ ์ด๋ฆ์ ๋ธ๋ฃจ์ค ๋ง์ง์์
๋๋ค. ์ ๋ EnterpriseDB์์ ์ผํ๊ณ ์์ผ๋ฉฐ 23๋
๋๊ฒ Postgres๋ฅผ ์ฌ์ฉํด ์์ต๋๋ค. ์ ๋ ๋ฏธ๊ตญ ํ๋ผ๋ธํผ์์ ์ด๊ณ ์์ต๋๋ค. ์ ๋ ์ผ๋
์ 90์ผ ์ ๋ ์ฌํ์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ 40๊ฐ ์ ๋์ ์ปจํผ๋ฐ์ค์ ์ฐธ์ํฉ๋๋ค. ๋์
์ ๋ Postgres๋ฅผ ์ฌ์ฉํ๊ธฐ ์ ์ ๊ต์ฌ์ด์ ๊ต์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ์ ๊ฐ ๋งํ๋ ค๋ ๋ด์ฉ์ ์ฌ๋ฌ๋ถ์๊ฒ ๋งํ ์ ์๊ฒ ๋์ด ๋งค์ฐ ๊ธฐ์ฉ๋๋ค. ์ด๊ฒ์ ๋์ ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ํ๋ ์ ํ ์ด์ ์ค ํ๋์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํ๋ ์ ํ ์ด์ ์๋ 110๊ฐ์ ์ฌ๋ผ์ด๋๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ๋จํ ๊ฒ๋ถํฐ ์ด์ผ๊ธฐํ๊ธฐ ์์ํ ๊ฒ์ด๊ณ , ๊ฒฐ๊ตญ ๋ณด๊ณ ์๋ ์ ์ ๋ ๋ณต์กํด์ง๊ณ ์๋นํ ๋ณต์กํด์ง ๊ฒ์ ๋๋ค.
์ด๊ฒ์ ๋ค์ ๋ถ์พํ ๋ํ์ ๋๋ค. ์ฐจ๋จ์ ๊ฐ์ฅ ์ธ๊ธฐ ์๋ ์ฃผ์ ๊ฐ ์๋๋๋ค. ์ฐ๋ฆฌ๋ ์ด๊ฒ์ด ์ด๋๊ฐ์์ ์ฌ๋ผ์ง๊ธฐ๋ฅผ ์ํฉ๋๋ค. ์น๊ณผ์ ๊ฐ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค.
- ์ ๊ธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์์ ํ๊ณ ๋์์ ์ฌ๋ฌ ํ๋ก์ธ์ค๋ฅผ ์คํํ๋ ๋ง์ ์ฌ๋๋ค์๊ฒ ๋ฌธ์ ์ ๋๋ค. ์ฐจ๋จ์ด ํ์ํฉ๋๋ค. ์ฆ, ์ค๋์ ์ฐจ๋จ์ ๋ํ ๊ธฐ๋ณธ ์ง์์ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
- ๊ฑฐ๋ ID. ์ด๊ฒ์ ํ๋ ์ ํ ์ด์ ์์ ๋ค์ ์ง๋ฃจํ ๋ถ๋ถ์ด์ง๋ง ์ดํดํด์ผ ํฉ๋๋ค.
- ๋ค์์ผ๋ก ์ฐจ๋จ ์ ํ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ์ด๊ฒ์ ์๋นํ ๊ธฐ๊ณ์ ์ธ ๋ถ๋ถ์ ๋๋ค.
- ์๋์๋ ์ฐจ๋จ์ ๋ํ ๋ช ๊ฐ์ง ์๊ฐ ๋์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์ดํดํ๊ธฐ ๋งค์ฐ ์ด๋ ค์ธ ๊ฒ์ ๋๋ค.
์ฐจ๋จ์ ๋ํด ์ด์ผ๊ธฐํด๋ณด๊ฒ ์ต๋๋ค.
์ฐ๋ฆฌ์ ์ฉ์ด๋ ์๋นํ ๋ณต์กํฉ๋๋ค. ์ด ๊ตฌ์ ์ด ์ด๋์ ๋์จ ๊ฒ์ธ์ง ์๋ ์ฌ๋์ด ์ผ๋ง๋ ๋ฉ๋๊น? ๋ ์ฌ๋. Colossal Cave Adventure๋ผ๋ ๊ฒ์์์ ๋์จ ๋ด์ฉ์ ๋๋ค. 80๋ ๋์๋ ํ ์คํธ ๊ธฐ๋ฐ์ ์ปดํจํฐ ๊ฒ์์ด์๋ ๊ฒ ๊ฐ์์. ๊ทธ๊ณณ์์ ๋๊ตด๋ก, ๋ฏธ๋ก๋ก ๋ค์ด๊ฐ์ผ ํ๋๋ฐ, ํ ์คํธ๋ ๋ฐ๋์์ง๋ง ๋ด์ฉ์ ๋งค๋ฒ ๊ฑฐ์ ๊ฐ์์ต๋๋ค. ์ ๋ ์ด ๊ฒ์์ ๊ทธ๋ ๊ฒ ๊ธฐ์ตํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ Oracle์์ ์ฐ๋ฆฌ์๊ฒ ์จ ์ ๊ธ์ ์ด๋ฆ์ ๋ณผ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ๋ค์ ์ฌ์ฉํฉ๋๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ๋๋ฅผ ํผ๋์ค๋ฝ๊ฒ ํ๋ ์ฉ์ด๋ฅผ ๋ด ๋๋ค. ์๋ฅผ ๋ค์ด SHARE UPDATE ECXLUSIVE์ ๋๋ค. ๋ค์ RAW ECXLUSIVE๋ฅผ ๊ณต์ ํ์ธ์. ์์งํ ๋งํด์, ์ด ์ด๋ฆ๋ค์ ๊ทธ๋ค์ง ๋ช ํํ์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ๋ค์ ๋ ์์ธํ ๊ณ ๋ คํ๋ ค๊ณ ๋ ธ๋ ฅํ ๊ฒ์ ๋๋ค. ์ผ๋ถ์๋ ๋ถ๋ฆฌ๋ฅผ ์๋ฏธํ๋ "๊ณต์ "๋ผ๋ ๋จ์ด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ผ๋ถ์๋ "๋ ์ "์ด๋ผ๋ ๋จ์ด๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์ผ๋ถ์๋ ์ด ๋ ๋จ์ด๊ฐ ๋ชจ๋ ํฌํจ๋์ด ์์ต๋๋ค. ์ ๋ ์ด ์๋ฌผ์ ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง๋ถํฐ ์์ํ๊ณ ์ถ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ '์ก์ธ์ค'๋ผ๋ ๋จ์ด๋ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ "row"๋ผ๋ ๋จ์ด๋ ๋ฌธ์์ด์ ๋๋ค. ์ฆ, ์ก์ธ์ค ๋ถ์ฐ, ํ ๋ถ์ฐ์ ๋๋ค.
์ํ๊น๊ฒ๋ Postgres์์ ์ดํดํด์ผ ํ ๋ ๋ค๋ฅธ ๋ฌธ์ ๋ MVCC์ ๋๋ค. ์ํ๊น๊ฒ๋ ์ ๊ฐ์ฐ์์๋ ๋ค๋ฃจ์ง ๋ชปํ ๊ฒ์ ๋๋ค. ๋ด ์น์ฌ์ดํธ์ ์ด ์ฃผ์ ์ ๋ํ ๋ณ๋์ ํ๋ ์ ํ ์ด์ ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํ๋ ์ ํ ์ด์ ์ด ์ด๋ ต๋ค๊ณ ์๊ฐํ์ ๋ค๋ฉด ์๋ง๋ MVCC๊ฐ ์ ๊ฒ ๊ฐ์ฅ ์ด๋ ค์ธ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ด์ฌ์ด ์์ผ์๋ฉด ์น์ฌ์ดํธ์์ ์์ฒญํ์ค ์ ์์ต๋๋ค. ์์์ ๋ณด์ค ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ดํดํด์ผ ํ ๋ ๋ค๋ฅธ ์ฌํญ์ ๊ฑฐ๋ ID์ ๋๋ค. ๋ง์ ๊ฑฐ๋๋ ๊ณ ์ ์๋ณ์ ์์ด๋ ์๋ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ๊ฑฐ๋๊ฐ ๋ฌด์์ธ์ง์ ๋ํ ์ค๋ช ์ด ์์ต๋๋ค. Postgres์๋ ๋ ๊ฐ์ง ํธ๋์ญ์ ๋ฒํธ ์ง์ ์์คํ ์ด ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ด ๊ทธ๋ค์ง ์ข์ ํด๊ฒฐ์ฑ ์ด ์๋๋ผ๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค.
๋ํ ์ฌ๋ผ์ด๋๋ ์ดํดํ๊ธฐ ์๋นํ ์ด๋ ค์ธ ์ ์์ผ๋ฏ๋ก ๋นจ๊ฐ์์ผ๋ก ๊ฐ์กฐ ํ์๋ ๋ถ๋ถ์ด ์ฃผ์๊ฐ ํ์ํ ๋ถ๋ถ์ด๋ผ๋ ์ ์ ๋ช ์ฌํ์ธ์.
์ด๋ ๋ณด์. ๊ฑฐ๋ ๋ฒํธ๊ฐ ๋นจ๊ฐ์์ผ๋ก ๊ฐ์กฐ ํ์๋ฉ๋๋ค. SELECT pg_back ํจ์๊ฐ ์ฌ๊ธฐ์ ํ์๋ฉ๋๋ค. ๋ด ๊ฑฐ๋์ ๊ฑฐ๋ ID๋ฅผ ๋ฐํํฉ๋๋ค.
ํ ๊ฐ์ง ๋, ์ด ํ๋ฆฌ์ ํ ์ด์ ์ด ๋ง์์ ๋ค๊ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์คํํ๊ณ ์ถ๋ค๋ฉด ๋ถํ์ ๋งํฌ๋ก ์ด๋ํ์ฌ ์ด ํ๋ฆฌ์ ํ ์ด์ ์ ๋ํ SQL์ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. PSQL์์ ๊ฐ๋จํ ์คํํ๋ฉด ์ ์ฒด ํ๋ ์ ํ ์ด์ ์ด ํ๋ฉด์ ์ฆ์ ํ์๋ฉ๋๋ค. ๊ฝ์ ํฌํจ๋์ง ์์ง๋ง ์ ์ด๋ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ด ๊ฒฝ์ฐ ๊ฑฐ๋ ID๊ฐ ํ์๋ฉ๋๋ค. ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๊ทธ๋ ์๊ฒ ํ ๋นํ ๋ฒํธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ Postgres์๋ ๊ฐ์ ํธ๋์ญ์ ID๋ผ๊ณ ํ๋ ๋ ๋ค๋ฅธ ์ ํ์ ํธ๋์ญ์ ID๊ฐ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด๊ฒ์ ์ดํดํด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด Postgres์ ์ ๊ธ์ ์ดํดํ ์ ์์ต๋๋ค.
๊ฐ์ ํธ๋์ญ์ ID๋ ์ง์์ ์ธ ๊ฐ์ ํฌํจํ์ง ์๋ ํธ๋์ญ์ ID์ ๋๋ค. ์๋ฅผ ๋ค์ด, SELECT ๋ช ๋ น์ ์คํํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์๋ฌด ๊ฒ๋ ์ ๊ทธ์ง ์์ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋จํ SELECT๋ฅผ ์คํํ ๋ ํด๋น ํธ๋์ญ์ ์ ์๊ตฌ ID๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๊ณณ์์ ๊ทธ๋ ์๊ฒ ๊ฐ์ ID๋ง ์ ๊ณตํฉ๋๋ค.
์ด๋ Postgres ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ์ ๋ฆฌ ๊ธฐ๋ฅ์ ํฅ์์ํค๋ฏ๋ก ๊ฐ์ ํธ๋์ญ์ ID๋ ๋ ๊ฐ์ ์ซ์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ์ฌ๋์ ์์ ์ฒซ ๋ฒ์งธ ์ซ์๋ ๋ฐฑ์๋ ID์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋ฅธ์ชฝ์๋ ์นด์ดํฐ๋ง ๋ณด์ ๋๋ค.
๋ฐ๋ผ์ ์์ฒญ์ ์คํํ๋ฉด ๋ฐฑ์๋ ID๊ฐ 2๋ผ๊ณ ํ์๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์ผ๋ จ์ ํธ๋์ญ์ ์ ์คํํ๋ฉด ์ฟผ๋ฆฌ๋ฅผ ์คํํ ๋๋ง๋ค ์นด์ดํฐ๊ฐ ์ฆ๊ฐํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด 2/10, 2/11, 2/12 ๋ฑ์ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด
์ฌ๊ธฐ์๋ ๋ ๊ฐ์ ์ด์ด ์๋ค๋ ์ ์ ๋ช ์ฌํ์ธ์. ์ผ์ชฝ์๋ ๊ฐ์ ๊ฑฐ๋ ID(2/12)๊ฐ ํ์๋ฉ๋๋ค. ์ค๋ฅธ์ชฝ์๋ ์๊ตฌ ๊ฑฐ๋ ID๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํ๋๋ ๋น์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํธ๋์ญ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์์ ํ์ง ์์ต๋๋ค. ๊ทธ๋์ ์๊ตฌ ๊ฑฐ๋ ID๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค.
๋ถ์ ๋ช ๋ น((ANALYZE))์ ์คํํ์๋ง์ ๋์ผํ ์ฟผ๋ฆฌ๊ฐ ์๊ตฌ ํธ๋์ญ์ ID๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ์๊ฒ ์ด๋ป๊ฒ ๋ณํ๋์ง ๋ณด์ธ์. ์ด์ ์๋ ์ด ID๊ฐ ์์์ผ๋ ์ง๊ธ์ ์์ต๋๋ค.
์ฌ๊ธฐ ๋ ๋ค๋ฅธ ์์ฒญ, ๋ ๋ค๋ฅธ ๊ฑฐ๋๊ฐ ์์ต๋๋ค. ๊ฐ์๊ฑฐ๋๋ฒํธ๋ 2/13 ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๊ตฌ ํธ๋์ญ์ ID๋ฅผ ์์ฒญํ๋ฉด ์ฟผ๋ฆฌ๋ฅผ ์คํํ ๋ ์ด๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ผ, ํ ๋ฒ ๋. ๊ฐ์ ๊ฑฐ๋ ID์ ์๊ตฌ ๊ฑฐ๋ ID๊ฐ ์์ต๋๋ค. Postgres ๋์์ ์ดํดํ๋ ค๋ฉด ์ด ์ ์ ์ดํดํ์ญ์์ค.
์ธ ๋ฒ์งธ ์น์ ์ผ๋ก ๋์ด๊ฐ๋๋ค. ์ฌ๊ธฐ์๋ Postgres์ ๋ค์ํ ์ ๊ธ ์ ํ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ค์ง ํฅ๋ฏธ๋กญ์ง ์์ต๋๋ค. ๋ง์ง๋ง ์น์ ์ ํจ์ฌ ๋ ํฅ๋ฏธ๋ก์ธ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๊ธฐ๋ณธ์ ์ธ ๊ฒ๋ค์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ๋ค์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ์ง ์ดํดํ์ง ๋ชปํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ด ์น์ ์ ์ดํด๋ณด๋ฉด์ ๊ฐ ์ ํ์ ์ ๊ธ ์ฅ์น๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์น ๋ฐฉ๋ฒ๊ณผ ์๋ ๋ฐฉ์์ ๋ํ ์๋ฅผ ๋ณด์ฌ์ฃผ๊ณ Postgres์์ ์ ๊ธ์ด ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ธํ๋ ๋ฐ ์ฌ์ฉํ ์ ์๋ ๋ช ๊ฐ์ง ์ฟผ๋ฆฌ๋ ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค.
์ฟผ๋ฆฌ๋ฅผ ์์ฑํ๊ณ Postgres์์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ํ์ธํ๋ ค๋ฉด ์์คํ ๋ณด๊ธฐ์์ ์ฟผ๋ฆฌ๋ฅผ ์คํํด์ผ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ pg_lock์ ๋นจ๊ฐ์์ผ๋ก ๊ฐ์กฐ ํ์๋ฉ๋๋ค. Pg_lock์ ํ์ฌ Postgres์์ ์ฌ์ฉ ์ค์ธ ์ ๊ธ์ด ๋ฌด์์ธ์ง ์๋ ค์ฃผ๋ ์์คํ ํ ์ด๋ธ์ ๋๋ค.
๊ทธ๋ฌ๋ pg_lock ์์ฒด๋ ๋งค์ฐ ๋ณต์กํ๊ธฐ ๋๋ฌธ์ ๋ณด์ฌ๋๋ฆฌ๊ธฐ๊ฐ ๋งค์ฐ ์ด๋ ต์ต๋๋ค. ๊ทธ๋์ pg_locks๋ฅผ ๋ณด์ฌ์ฃผ๋ ๋ทฐ๋ฅผ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ํ ๋ด๊ฐ ๋ ์ ์ดํดํ ์ ์๊ฒ ํด์ฃผ๋ ๋ช ๊ฐ์ง ์์ ์ ์ํํฉ๋๋ค. ์ฆ, ๋ด ์ ๊ธ, ๋ด ์ธ์ ๋ฑ์ ์ ์ธํฉ๋๋ค. ์ด๋ ๋จ์ง ํ์ค SQL์ผ ๋ฟ์ด๋ฉฐ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋ ์ ๋ณด์ฌ์ค ์ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ๋ฌธ์ ๋ ์ด ๋ณด๊ธฐ๊ฐ ๋งค์ฐ ๋๊ธฐ ๋๋ฌธ์ ๋ ๋ฒ์งธ ๋ณด๊ธฐ์ธ lockview2๋ฅผ ๋ง๋ค์ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ ์ด๋ธ์ ๋ ๋ง์ ์ด์ด ํ์๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋จธ์ง ์ด์ ๋ณด์ฌ์ฃผ๋ ๋ ๋ค๋ฅธ ํ๋์ ๋๋ค. ๋ด์ฉ์ด ๊ฝค ๋ณต์กํด์ ์ต๋ํ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๋ ค๊ณ ๋ ธ๋ ฅํ์ต๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ Lockdemo๋ผ๋ ํ ์ด๋ธ์ ๋ง๋ค์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์ ํ ์ค์ ๋ง๋ค์์ต๋๋ค. ์ด๊ฒ์ด ์ฐ๋ฆฌ์ ์ํ ํ ์ด๋ธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์๋ฌผ์ ์ ์๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์น์ ์ ๋ง๋ค ๊ฒ์ ๋๋ค.
์ฆ, ํ ํ๋, ์ด ํ๋์ ๋๋ค. ์ฒซ ๋ฒ์งธ ์ ํ์ ์ ๊ธ์ ACCESS SHARE์ ๋๋ค. ์ด๋ ๊ฐ์ฅ ์ ํ์ด ์ ์ ์ฐจ๋จ์ ๋๋ค. ์ด๋ ์ค์ ๋ก ๋ค๋ฅธ ์ ๊ธ ์ฅ์น์ ์ถฉ๋ํ์ง ์์์ ์๋ฏธํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ช ์์ ์ผ๋ก ์ ๊ธ์ ์ ์ํ๋ ค๋ฉด "lock table" ๋ช ๋ น์ ์คํํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ถ๋ช ํ ์ฐจ๋จ๋ฉ๋๋ค. ์ฆ, ACCESS SHARE ๋ชจ๋์์๋ ์ ๊ธ ํ ์ด๋ธ์ ์์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋์์ PSQL์ ์คํํ๋ฉด ์ด๋ฐ ๋ฐฉ์์ผ๋ก ์ฒซ ๋ฒ์งธ ์ธ์ ์์ ๋ ๋ฒ์งธ ์ธ์ ์ ์์ํฉ๋๋ค. ์ฆ, ์ฌ๊ธฐ์ ๋ฌด์์ ํ ๊ฒ์ธ๊ฐ? ๋๋ ๋ค๋ฅธ ์ธ์ ์ผ๋ก ๊ฐ์ "์ด ์์ฒญ์ ๋ํ ์ ๊ธ ๋ณด๊ธฐ๋ฅผ ๋ณด์ฌ์ฃผ์ธ์"๋ผ๊ณ ๋งํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ ์ด ํ ์ด๋ธ์๋ AccessShareLock์ด ์์ต๋๋ค. ์ ๊ฐ ์์ฒญํ ๊ฒ์ด ๋ฐ๋ก ์ด๊ฒ์ด์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋ธ๋ก์ด ํ ๋น๋์๋ค๊ณ ๋งํฉ๋๋ค. ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค.
๋ํ ๋ ๋ฒ์งธ ์ด์ ๋ณด๋ฉด ๊ฑฐ๊ธฐ์๋ ์๋ฌด๊ฒ๋ ์์ต๋๋ค. ๊ทธ๊ฒ๋ค์ ๋น์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ "SELECT" ๋ช ๋ น์ ์คํํ๋ฉด ์ด๋ AccessShareLock์ ์์ฒญํ๋ ์์์ (๋ช ์์ ) ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋์ ํ ์ด๋ธ์ ํด์ ํ๊ณ ์ฟผ๋ฆฌ๋ฅผ ์คํํ๋ฉด ์ฟผ๋ฆฌ๊ฐ ์ฌ๋ฌ ํ์ ๋ฐํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค ์ค ํ๋์ AccessShareLock์ด ํ์๋ฉ๋๋ค. ๋ฐ๋ผ์ SELECT๋ ํ ์ด๋ธ์์ AccessShareLock์ ํธ์ถํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฎ์ ์์ค์ ์ ๊ธ์ด๊ธฐ ๋๋ฌธ์ ์ฌ์ค์ ์ด๋ค ๊ฒ๊ณผ๋ ์ถฉ๋ํ์ง ์์ต๋๋ค.
SELECT๋ฅผ ์คํํ๊ณ ์ธ ๊ฐ์ ์๋ก ๋ค๋ฅธ ํ ์ด๋ธ์ด ์์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์? ์ด์ ์๋ ํ๋์ ํ ์ด๋ธ๋ง ์คํํ์ง๋ง ์ด์ ๋ pg_class, pg_namespace ๋ฐ pg_attribute์ ์ธ ๊ฐ๋ฅผ ์คํํ๊ณ ์์ต๋๋ค.
์ด์ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋ฉด 9๊ฐ์ ํ ์ด๋ธ์ XNUMX๊ฐ์ AccessShareLock์ด ์์ต๋๋ค. ์? ์ธ ๊ฐ์ ํ ์ด๋ธ(pg_attribute, pg_class, pg_namespace)์ด ํ๋์์ผ๋ก ๊ฐ์กฐ ํ์๋์ด ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฌํ ํ ์ด๋ธ์ ํตํด ์ ์๋ ๋ชจ๋ ์ธ๋ฑ์ค์๋ AccessShareLock์ด ์์์ ์ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ค์ ๋ก ๋ค๋ฅธ ์ฌ๋๊ณผ ์ถฉ๋ํ์ง ์๋ ์๋ฌผ์ ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ํ๋ ์ผ์ ๋จ์ํ ํ ์ด๋ธ์ ์ ํํ๋ ๋์ ํ ์ด๋ธ์ ์ฌ์ค์ ํ๋ ๊ฒ์ ๋ฐฉ์งํ๋ ๊ฒ๋ฟ์ ๋๋ค. ๋ง๋๋ค. ์ฆ, ํ ์ด๋ธ์ ์ ํํ๋ฉด ๊ทธ ์๊ฐ ์ฌ๋ผ์ง๋๋ฐ ์ด๋ ์๋ชป๋ ๊ฒ์ด๋ฏ๋ก AccessShare๋ "์์ ํ๋ ๋์ ์ด ํ ์ด๋ธ์ ๋จ์ด๋จ๋ฆฌ์ง ๋ง์ธ์"๋ผ๊ณ ์๋ ค์ฃผ๋ ๋ฎ์ ์์ค์ ์ ๊ธ์ ๋๋ค.. ๋ณธ์ง์ ์ผ๋ก ๊ทธ๊ฒ์ด ๊ทธ๋ ๊ฐ ํ๋ ์ ๋ถ์ ๋๋ค.
ROW SHARE - ์ด ์ ๊ธ์ ์ฝ๊ฐ ๋ค๋ฆ ๋๋ค.
์๋ฅผ ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. SELECT ROW SHARE ๊ฐ ํ์ ๊ฐ๋ณ์ ์ผ๋ก ์ ๊ทธ๋ ๋ฐฉ์. ์ด๋ ๊ฒ ํ๋ฉด ์ฐ๋ฆฌ๊ฐ ์์ฒญํ๋ ๋์ ๋๊ตฌ๋ ์ญ์ ํ๊ฑฐ๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๊ทธ๋ ๋ค๋ฉด SHARE LOCK์ ๋ฌด์์ ํ ๊น์? SELECT์ ํธ๋์ญ์ ID๋ 681์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ํฅ๋ฏธ๋กญ์ต๋๋ค. ์ฌ๊ธฐ ๋ญ ์ผ ์์ ๋? ์ซ์๊ฐ ์ฒ์์ผ๋ก ํ์๋๋ ๊ฒ์ "์ ๊ธ" ํ๋์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ํธ๋์ญ์ ID๋ฅผ ๊ฐ์ ธ์๊ณ ๋ ์ ๋ชจ๋์์ ์ด๋ฅผ ์ฐจ๋จํ๊ณ ์๋ค๊ณ ๋งํฉ๋๋ค. ๊ทธ๊ฒ์ด ํ๋ ์ผ์ ํ ์ด๋ธ ์ด๋๊ฐ์ ๊ธฐ์ ์ ์ผ๋ก ์ ๊ฒจ ์๋ ํ์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ์ ํํ ์ด๋์ธ์ง๋ ๋งํ์ง ์์ต๋๋ค. ์ด์ ๋ํด์๋ ์ ์ ํ์ ๋ ์์ธํ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์๋ฌผ์ ๊ฐ ์ฐ๋ฆฌ์ ์ํด ์ฌ์ฉ๋๋ค๊ณ ๋งํฉ๋๋ค.
๋ฐ๋ผ์ ๋ฐฐํ์ ์ ๊ธ์ ๋ช ์์ ์ผ๋ก ๋ฐฐํ์ ์์ ๋ํ๋ ๋๋ค. ๋ํ ์ด ํ ์ด๋ธ์์ ํ์ ์ญ์ ํ๋ฉด ๋ณด์๋ค์ํผ ์ด๋ฐ ์ผ์ด ๋ฐ์ํฉ๋๋ค.
SHARE EXCLUSIVE๋ ๋ ๊ธด ์ ๊ธ์ ๋๋ค.
์ด๊ฒ์ ์ฌ์ฉ๋ (ANALYZE) ๋ถ์๊ธฐ ๋ช ๋ น์ ๋๋ค.
SHARE LOCK โ ๊ณต์ ๋ชจ๋์์ ๋ช ์์ ์ผ๋ก ์ ๊ธ ์ ์์ต๋๋ค.
๊ณ ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ์ผ๋ถ์ธ SHARE LOCK์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ ์ด๋ธ์ ์ ๊ทธ๊ณ SHARE LOCK์ ์ค์ ํฉ๋๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ ์ด๋ธ์ SHARE LOCK์ ๋ค๋ฅธ ์ฌ๋์ด ํ ์ด๋ธ์ ์ฝ์ ์๋ ์์ง๋ง ์์ ํ ์๋ ์์์ ์๋ฏธํฉ๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ๊ณ ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋ ๋ฐ์ํ๋ ํ์์ ๋๋ค.
๊ณ ์ ํ ๋์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ฉด ๋ค๋ฅธ ์ ํ์ ์ ๊ธ์ ์ฌ์ฉํ๊ฒ ๋ฉ๋๋ค. ๊ธฐ์ตํ๋ ๊ฒ์ฒ๋ผ ๋์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์ ๊ธ ์๊ตฌ ์ฌํญ์ด ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ฐ ์ ๊ธ, ์ผ๋ฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ํ ์ด๋ธ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋๋ ๋์ ํ ์ด๋ธ ์ธ๋ฑ์ค์ ์ฐ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ๋์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค๋ฅธ ์ ํ์ ์ ๊ธ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
SHARE ROW EXCLUSIVE - ๋ช ์์ ์ผ๋ก(๋ช ์์ ์ผ๋ก) ์ค์ ํ ์ ์์ต๋๋ค.
๋๋ ๊ท์น์ ๋ง๋ค ์๋ ์์ต๋๋ค. ์ฆ, ๊ท์น์ด ์ฌ์ฉ๋ ํน์ ์ฌ๋ก๋ฅผ ์ทจํฉ๋๋ค.
EXCLUSIVE ์ ๊ธ์ ๋ค๋ฅธ ์ฌ๋์ด ํ ์ด๋ธ์ ๋ณ๊ฒฝํ ์ ์์์ ์๋ฏธํฉ๋๋ค.
์ฌ๊ธฐ์์๋ ๋ค์ํ ์ ํ์ ์ ๊ธ ์ฅ์น๋ฅผ ๋ณผ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ACCESS EXCLUSIVE๋ ์ฐจ๋จ ๋ช
๋ น์
๋๋ค. ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด CLUSTER table
, ๊ทธ๋ฌ๋ฉด ์๋ฌด๋ ๊ฑฐ๊ธฐ์ ๊ธ์ ์ธ ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ
์ด๋ธ ์์ฒด๋ฟ๋ง ์๋๋ผ ์ธ๋ฑ์ค๋ ์ ๊ธ๋๋ค.
์ด๊ฒ์ ACCESS EXCLUSIVE ์ฐจ๋จ์ ๋ ๋ฒ์งธ ํ์ด์ง๋ก, ํ ์ด๋ธ์์ ์ฐจ๋จํ๋ ๋ด์ฉ์ ์ ํํ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ ๊ฐ๋ณ ํ ์ด๋ธ ํ์ ์ ๊ทธ๋๋ฐ ์ด๋ ๋งค์ฐ ํฅ๋ฏธ๋กญ์ต๋๋ค.
์ด๊ฒ์ด ์ ๊ฐ ์ ๊ณตํ๊ณ ์ถ์ ๋ชจ๋ ๊ธฐ๋ณธ ์ ๋ณด์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ ๊ธ, ํธ๋์ญ์ ID, ๊ฐ์ ํธ๋์ญ์ ID, ์๊ตฌ ํธ๋์ญ์ ID์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค.
์ด์ ๋ช ๊ฐ์ง ์ฐจ๋จ ์ฌ๋ก๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ด๊ฒ์ด ๊ฐ์ฅ ํฅ๋ฏธ๋ก์ด ๋ถ๋ถ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋งค์ฐ ํฅ๋ฏธ๋ก์ด ์ฌ๋ก๋ฅผ ์ดํด๋ณผ ๊ฒ์ ๋๋ค. ์ด ํ๋ ์ ํ ์ด์ ์ ๋ชฉํ๋ Postgres๊ฐ ํน์ ํญ๋ชฉ์ ์ฐจ๋จํ๋ ค๊ณ ํ ๋ ์ค์ ๋ก ๋ฌด์์ ํ๋์ง ๋ ์ ์ดํดํ ์ ์๋๋ก ํ๋ ๊ฒ์ ๋๋ค. ๋๋ ๊ทธ๊ฐ ๋ถ๋ถ์ ์ฐจ๋จํ๋ ๋ฐ ๋งค์ฐ ๋ฅ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
๋ช ๊ฐ์ง ๊ตฌ์ฒด์ ์ธ ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ํ ์ด๋ธ๊ณผ ํ ์ด๋ธ์ ํ ํ๋ถํฐ ์์ํ๊ฒ ์ต๋๋ค. ๋ฌด์ธ๊ฐ๋ฅผ ์ฝ์ ํ๋ฉด ํ ์ด๋ธ์ ExclusiveLock, Transaction ID ๋ฐ ExclusiveLock์ด ํ์๋ฉ๋๋ค.
ํ์ ๋ ๊ฐ ๋ ์ฝ์ ํ๋ฉด ์ด๋ป๊ฒ ๋๋์? ์ด์ ํ ์ด๋ธ์๋ ์ธ ๊ฐ์ ํ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ ํ์ ์ฝ์ ํ๊ณ ์ด๋ฅผ ์ถ๋ ฅ์ผ๋ก ์ป์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๊ฐ์ ํ์ ๋ ์ฝ์ ํ๋ฉด ๋ฌด์์ด ์ด์ํ๊ฐ์? ์ด์ํ ์ ์ ์ด ํ ์ด๋ธ์ ์ธ ๊ฐ์ ํ์ ์ถ๊ฐํ์ง๋ง ์ ๊ธ ํ ์ด๋ธ์๋ ์ฌ์ ํ ๋ ๊ฐ์ ํ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๊ฒ์ด ๋ณธ์ง์ ์ผ๋ก Postgres์ ๊ธฐ๋ณธ ๋์์ ๋๋ค.
๋ง์ ์ฌ๋๋ค์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ 100๊ฐ์ ํ์ ์ ๊ทธ๋ฉด 100๊ฐ์ ์ ๊ธ ํญ๋ชฉ์ ์์ฑํด์ผ ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. ํ ๋ฒ์ 1๊ฐ์ ํ์ ์ฐจ๋จํ๋ ค๋ฉด ํด๋น ์ฟผ๋ฆฌ๊ฐ 000๊ฐ ํ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐจ๋จํ๋ ค๋ฉด ๋ฐฑ๋ง ๋๋ ์์ญ์ต์ด ํ์ํฉ๋๋ค. ํ์ง๋ง ์ด๋ ๊ฒ ํ๋ฉด ๋ณ๋ก ํจ๊ณผ๊ฐ ์์ ๊ฒ์ ๋๋ค. ๊ฐ ๊ฐ๋ณ ํ์ ๋ํด ์ฐจ๋จ ํญ๋ชฉ์ ์์ฑํ๋ ์์คํ ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ด๊ฒ์ด ๋ณต์กํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์ค๋ฒํ๋ก๊ฐ ๊ฐ๋ฅํ ์ ๊ธ ํ ์ด๋ธ์ ์ฆ์ ์ ์ํด์ผ ํ๋๋ฐ Postgres๋ ๊ทธ๋ ๊ฒ ํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ์ฌ๋ผ์ด๋์์ ์ ๋ง ์ค์ํ ์ ์ ๊ฐ๋ณ ํ์ ์ ๊ทธ๋ MVCC ๋ด๋ถ์์ ์คํ๋๋ ๋ ๋ค๋ฅธ ์์คํ ์ด ์์์ ๋ช ํํ๊ฒ ๋ณด์ฌ ์ค๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์์ญ์ต ๊ฐ์ ํ์ ์ ๊ทธ๋ฉด Postgres๋ ์์ญ์ต ๊ฐ์ ๋ณ๋ ์ ๊ธ ๋ช ๋ น์ ์์ฑํ์ง ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์์ฐ์ฑ์ ๋งค์ฐ ์ข์ ์ํฅ์ ๋ฏธ์นฉ๋๋ค.
์ ๋ฐ์ดํธ๋ ์ด๋ป์ต๋๊น? ์ง๊ธ ํ์ ์ ๋ฐ์ดํธํ๊ณ ์๋๋ฐ ํ ๋ฒ์ ๋ ๊ฐ์ง ๋ค๋ฅธ ์์ ์ ์ํํ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๋์์ ํ ์ด๋ธ์ ์ ๊ทธ๋ ๋์์ ์ธ๋ฑ์ค๋ ์ ๊ฒผ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํ ์ด๋ธ์๋ ๊ณ ์ ์ ์ฝ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ฅผ ์ ๊ฐ์ผ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๊ตฌ๋ ์ด๋ฅผ ๋ณ๊ฒฝํ์ง ๋ชปํ๋๋ก ์ฐจ๋จํ๊ณ ์์ต๋๋ค.
๋ ํ์ ์ ๋ฐ์ดํธํ๊ณ ์ถ์ผ๋ฉด ์ด๋ป๊ฒ ๋๋์? ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฐ ๊ฐ์ ๋ฐฉ์์ผ๋ก ํ๋ํ๋ ๊ฒ์ ๋ด ๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๋ฐฐ์ ์ ๋ฐ์ดํธ๋ฅผ ์ํํ์ง๋ง ์ ๊ธ ๋ผ์ธ ์๋ ์ ํํ ๋์ผํฉ๋๋ค.
Postgres๊ฐ ์ด๋ฅผ ์ด๋ป๊ฒ ์ํํ๋์ง ๊ถ๊ธํ๋ค๋ฉด Postgres๊ฐ ๋ด๋ถ์ ์ผ๋ก ์ด๋ฌํ ํ์ ๋ณ๊ฒฝ ์ฌํญ์ ํ์ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋ ค๋ฉด MVCC์ ๋ํ ๋ด ๊ฐ์ฐ์ ๋ค์ด์ผ ํฉ๋๋ค. Postgres์๋ ์ด๋ฅผ ์ํํ๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง ํ ์ด๋ธ ์ ๊ธ ์์ค์์ ์ํํ๋ ๊ฒ์ด ์๋๋ผ ๋ ๋ฎ๊ณ ํจ์จ์ ์ธ ์์ค์์ ์ํํฉ๋๋ค.
๋ฌด์ธ๊ฐ๋ฅผ ์ญ์ ํ๊ณ ์ถ๋ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ๋์? ์๋ฅผ ๋ค์ด, ํ ํ์ ์ญ์ ํ๋๋ฐ ์ฌ์ ํ ๋ ๊ฐ์ ์ฐจ๋จ ์ ๋ ฅ์ด ์๊ณ , ๋ชจ๋ ์ญ์ ํ๊ณ ์ถ์ด๋ ์ฌ์ ํ ๊ทธ๋๋ก ๋จ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด 1์ค์ ์ฝ์ ํ ๋ค์ 000์ค์ ์ญ์ ํ๊ฑฐ๋ ์ถ๊ฐํ๊ณ ์ถ์ ๋ ์ถ๊ฐํ๊ฑฐ๋ ๋ณ๊ฒฝํ ๊ฐ๋ณ ์ค์ ์ฌ๊ธฐ์ ๊ธฐ๋ก๋์ง ์์ต๋๋ค. ์๋ฆฌ์ฆ ์์ฒด ๋ด์์ ๋ ๋ฎ์ ์์ค์ผ๋ก ์์ฑ๋์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ MVCC ์ฐ์ค์์ ์ด์ ๋ํด ์์ธํ ์ด์ผ๊ธฐํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ ๊ธ์ ๋ถ์ํ ๋ ํ ์ด๋ธ ์์ค์์ ์ ๊ธฐ๊ณ ์๋์ง ํ์ธํ๊ณ ์ฌ๊ธฐ์ ๊ฐ๋ณ ํ์ด ๊ธฐ๋ก๋๋ ๋ฐฉ์์ ํ์ธํ์ง ์๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค.
๋ช ์์ ์ฐจ๋จ์ ์ด๋ป์ต๋๊น?
์๋ก ๊ณ ์นจ์ ํด๋ฆญํ๋ฉด ๋ ๊ฐ์ ํ์ด ์ ๊น๋๋ค. ๋ชจ๋ ์ ํํ๊ณ "๋ชจ๋ ๊ณณ์์ ์ ๋ฐ์ดํธ"๋ฅผ ํด๋ฆญํ๋ฉด ์ฌ์ ํ ๋ ๊ฐ์ ์ฐจ๋จ ๊ธฐ๋ก์ด ์์ต๋๋ค.
๊ฐ ๊ฐ๋ณ ํ์ ๋ํด ๋ณ๋์ ๋ ์ฝ๋๋ฅผ ์์ฑํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์์ฐ์ฑ์ด ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ ์์ฐ์ฑ์ด ๋๋ฌด ๋์์ง ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ถ์พํ ์ํฉ์ ์ฒํ๊ฒ ๋ ์๋ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ฐฌ๊ฐ์ง๋ก, ๊ณต์ ํ๋ค๋ฉด 30๋ฒ ๋ชจ๋ ํ ์ ์์ต๋๋ค.
ํ ์ด๋ธ์ ๋ณต์ํ๊ณ ๋ชจ๋ ๊ฒ์ ์ญ์ ํ ๋ค์ ํ ํ์ ๋ค์ ์ฝ์ ํฉ๋๋ค.
๋งค์ฐ ์ ์๋ ค์ ธ ์๊ณ ์ํ๋ ๋์์ธ Postgres์์ ๋ณผ ์ ์๋ ๋ ๋ค๋ฅธ ๋์์ ์ ๋ฐ์ดํธ ๋๋ ์ ํ์ ์ํํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋น์ ์ ์ด๊ฒ์ ๋์์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํ์ ์ ๋ฐ์ดํธ์ ๋ฐ๋ ๋ฐฉํฅ์ ๋์ผํ ์์ ์ ์ฐจ๋จํ์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ ์์๊ฒ ์๊ฐ๋ฅผ ๋ง์ง ๋ง๋ผ๊ณ ๋งํ๊ณ , ์๊ฐ๋ ๋ ์๋ฅผ ๋ง์ง ์์์ต๋๋ค.
์ด์ ๋ํ ์๋ฅผ ๋ณด์ฌ ๋๋ฆฌ๊ฒ ์ต๋๋ค. ๋๋ ์ด์ ์ ํ์ ํ๊ฒ ๋ค. ๊ทธ๋ฐ ๋ค์ INSERT๋ฅผ ์ํํฉ๋๋ค. ๊ทธ๋ฌ๋ฉด - 694๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ์ด ์ฝ์ ์ ์ํํ ํธ๋์ญ์ ์ ID๋ฅผ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ์๋ํ๋ ๋ฐฉ์์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ง๊ธ ๋ด ๋ฐฑ์๋ ID๋ฅผ ๋ณด๋ฉด 695์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ด ํ ์ด๋ธ์ 695๊ฐ ๋ํ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์ ์ด๋ ๊ฒ ์ ๋ฐ์ดํธํ๋ฉด ๋ค๋ฅธ ์ฌ๋ก๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ 695๋ ๋ฐฐํ์ ์ ๊ธ์ด๊ณ ์ ๋ฐ์ดํธ๋ ๋์ผํ ๋์์ ๊ฐ์ง๋ง ๋ ์ฌ์ด์ ์ถฉ๋์ด ๋ฐ์ํ์ง ์๋ ๊ฒ์ ๋งค์ฐ ํน์ดํ ํ์์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋จ์๋ ShareLock, ํ๋จ์๋ ExclusiveLock์ธ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๊ฑฐ๋๊ฐ ๋ชจ๋ ์ฑ๊ณตํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ด๋ป๊ฒ ์ผ์ด๋๋์ง ์ดํดํ๋ ค๋ฉด MVCC์์ ์ ๊ฐ ํ๋ ๊ฐ์ฐ์ ๋ค์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ ๋์์ ์ํํ ์ ์๋ค๋ ์์ ๋๋ค. ์ฆ, SELECT์ UPDATE๋ฅผ ๋์์ ์ํํ ์ ์์ต๋๋ค.
์ฌ์ค์ ํ๊ณ ์์ ์ ํ ๋ฒ ๋ ์ํํด ๋ณด๊ฒ ์ต๋๋ค.
๋์ผํ ํ์์ ๋ ๊ฐ์ ์ ๋ฐ์ดํธ๋ฅผ ๋์์ ์คํํ๋ ค๊ณ ํ๋ฉด ์ฐจ๋จ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธฐ์ตํ์ธ์, ๋ ์๊ฐ ์๊ฐ๋ฅผ ๋ง๋ ๊ฒ์ด ์๋๊ณ , ์๊ฐ๊ฐ ๋ ์๋ฅผ ๋ง๋ ๊ฒ์ด ์๋๋ผ ํ ์๊ฐ๊ฐ ๋ค๋ฅธ ์๊ฐ๋ฅผ ๋ง๋๋ค๊ณ ํ์ต๋๋ค. ์ฆ, ๋ ์ฌ๋์ด ๋์์ ๋์ผํ ํ์ ์ ๋ฐ์ดํธํ๋๋ก ํ ์ ์์ต๋๋ค. ๋ ์ค ํ๋๊ฐ ๋๋ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
์ด๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด Lockdemo ํ ์ด๋ธ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ ํ์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ๊ฑฐ๋๋น 698.
์ด๋ฅผ 2๋ก ์ ๋ฐ์ดํธํ์ต๋๋ค. 699๊ฐ ์ฒซ ๋ฒ์งธ ์ ๋ฐ์ดํธ์ ๋๋ค. ์ฑ๊ณตํ๊ฑฐ๋ ๊ฑฐ๋๊ฐ ๋ณด๋ฅ ์ค์ด๋ฉฐ ํ์ธ ๋๋ ์ทจ์๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
ํ์ง๋ง ๋ค๋ฅธ ๊ฒ์ ๋ณด์ธ์. 2/51์ด ์ฒซ ๋ฒ์งธ ๊ฑฐ๋์ด์ ์ฒซ ๋ฒ์งธ ์ธ์ ์ ๋๋ค. 3/112๋ ํด๋น ๊ฐ์ 3์ผ๋ก ๋ณ๊ฒฝํ ๋งจ ์์ ๋ ๋ฒ์งธ ์์ฒญ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ค์ํผ ๋งจ ์์ ์์ฒญ์ 699๋ก ์์ฒด์ ์ผ๋ก ์ ๊ฒผ์ต๋๋ค. ๊ทธ๋ฌ๋ 3/112๋ ์ ๊ธ์ ํ์ฉํ์ง ์์์ต๋๋ค. Lock_mode ์ด์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ๋ด์ฉ์ ๋ํ๋ ๋๋ค. 699๋ฅผ ์์ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 699๊ฐ ์ด๋ ์๋์ง ๋ณด๋ฉด ๋ ๋์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒซ ๋ฒ์งธ ์ธ์ ์ ๋ฌด์์ ํ๋์? ๊ทธ๋ ๋ ์์ ์ ๊ฑฐ๋ ID์ ๋ํ ๋ ์ ์ ๊ธ์ ๋ง๋ค์์ต๋๋ค. ์ด๊ฒ์ด Postgres๊ฐ ์ํํ๋ ๋ฐฉ์์ ๋๋ค. ์์ฒด ๊ฑฐ๋ ID๋ฅผ ์ฐจ๋จํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๊ตฐ๊ฐ๊ฐ ํ์ธํ๊ฑฐ๋ ์ทจ์ํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๋ ค๋ฉด ๋ณด๋ฅ ์ค์ธ ๊ฑฐ๋๊ฐ ์๋ ๋์ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ด์ํ ์ ์ ๋ณผ ์ ์์ต๋๋ค.
๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ผ์ชฝ์๋ ์ฒ๋ฆฌ ID๊ฐ ํ์๋ฉ๋๋ค. ๋ ๋ฒ์งธ ์ด์๋ ๊ฐ์ ํธ๋์ญ์ ID๊ฐ ํ์๋๊ณ ์ธ ๋ฒ์งธ ์ด์๋ lock_type์ด ํ์๋ฉ๋๋ค. ์ด๊ฒ์ ๋ฌด์์ ์๋ฏธ ํ๋๊ฐ? ๋ณธ์ง์ ์ผ๋ก ๊ทธ๊ฒ์ด ๋งํ๋ ๊ฒ์ ๊ฑฐ๋ ID๋ฅผ ์ฐจ๋จํ๊ณ ์๋ค๋ ๊ฒ์ ๋๋ค. ํ์ง๋ง ๋งจ ์๋์ ๋ชจ๋ ํ์๋ ๊ด๊ณ๊ฐ ํ์๋์ด ์์ต๋๋ค. ๊ทธ๋์ ํ ์ด๋ธ์๋ ๋ ๊ฐ์ง ์ ํ์ ์๋ฌผ์ ๊ฐ ์์ต๋๋ค. ๊ด๊ณ ์ ๊ธ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ์ค์ค๋ก ์ฐจ๋จํ๋ transactionid ์ฐจ๋จ์ด ์๋๋ฐ, ์ด๋ ์ ํํ ์ฒซ ๋ฒ์งธ ํ์ด๋ transactionid๊ฐ ์๋ ๋งจ ์๋์์ ๋ฐ์ํ๋ฉฐ 699๊ฐ ์์ ์ ์๋ฃํ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
์ฌ๊ธฐ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋์ง ๋ณผ๊ฒ์. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์๋ ๋ ๊ฐ์ง ์ผ์ด ๋์์ ์ผ์ด๋ฉ๋๋ค. ์ฒซ ๋ฒ์งธ ํ์์ ์์ฒด์ ์ผ๋ก ์ ๊ธฐ๋ ํธ๋์ญ์ ID ์ ๊ธ์ ๋ณด๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋ ์ฌ๋๋ค์ ๊ธฐ๋ค๋ฆฌ๊ฒ ํ๊ธฐ ์ํด ์์ ์ ์ฐจ๋จํฉ๋๋ค.
6๋ฒ์งธ ์ค์ ๋ณด์๋ฉด ์ฒซ๋ฒ์งธ์ ๊ฐ์ ํญ๋ชฉ์ ๋๋ค. ๋ฐ๋ผ์ ํธ๋์ญ์ 699๊ฐ ์ฐจ๋จ๋ฉ๋๋ค. 700์ ์๋ ์ ๊ธ ๊ธฐ๋ฅ๋ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋งจ ์๋ ํ์๋ 699๊ฐ ์์ ์ ์๋ฃํ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ lock_type ํํ์๋ ์ซ์๊ฐ ํ์๋ฉ๋๋ค.
0/10์์ ์ ์ ์์ต๋๋ค. ์ด๋ ํ์ด์ง ๋ฒํธ์ด์ ์ด ํน์ ํ์ ์คํ์ ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ๋ฐ์ดํธํ๋ฉด 0/11์ด ๋๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ค์ ๋ก๋ 0/10์ ๋๋ค. ์๋ํ๋ฉด ์ด ์์ ์ ๋ํ ๋๊ธฐ ์๊ฐ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ ํ์ธ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์๋ฆฌ์ฆ์์ ํ์ธํ ๊ธฐํ๊ฐ ์์ต๋๋ค.
์ด๋ฅผ ํ์ธํ๊ณ ์ปค๋ฐ์ ๋๋ฅธ ํ ์ ๋ฐ์ดํธ๊ฐ ์๋ฃ๋๋ฉด ์ด๊ฒ์ด ๋ค์ ํ์๋ฉ๋๋ค. ํธ๋์ญ์ 700์ ์ ์ผํ ์ ๊ธ์ด๋ฉฐ ์ปค๋ฐ๋์๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ์ฌ๋์ ๊ธฐ๋ค๋ฆฌ์ง ์์ต๋๋ค. ๋จ์ํ ํธ๋์ญ์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. 699๊ฐ ์์ง๋๋ฉด ๋ ์ด์ ์๋ฌด๊ฒ๋ ๊ธฐ๋ค๋ฆฌ์ง ์์ต๋๋ค. ์ด์ ํธ๋์ญ์ 700์ ๋ชจ๋ ๊ฒ์ด ์ ์์ด๋ฉฐ ํ์ฉ๋ ๋ชจ๋ ํ ์ด๋ธ์ ํ์ํ ๋ชจ๋ ์ ๊ธ์ด ์๋ค๊ณ ๋งํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ ๊ฒ์ ๋์ฑ ๋ณต์กํ๊ฒ ๋ง๋ค๊ธฐ ์ํด ์ด๋ฒ์๋ ๊ณ์ธต ๊ตฌ์กฐ๋ฅผ ์ ๊ณตํ ๋ ๋ค๋ฅธ ๋ทฐ๋ฅผ ๋ง๋ญ๋๋ค. ๋๋ ๋น์ ์ด ์ด ์์ฒญ์ ์ดํดํ๋ฆฌ๋ผ ๊ธฐ๋ํ์ง ์์ต๋๋ค. ํ์ง๋ง ์ด๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋ ๋ช ํํ๊ฒ ์ ์ ์์ต๋๋ค.
์ด๋ ๋ค๋ฅธ ์น์ ๋ ํฌํจํ๋ ์ฌ๊ท ๋ทฐ์ ๋๋ค. ๊ทธ๋ฌ๋ฉด ๋ชจ๋ ๊ฒ์ด ๋ค์ ํ๋๋ก ํฉ์ณ์ง๋๋ค. ์ด๊ฒ์ ํ์ฉํด๋ณด์.
3๊ฐ์ ๋์ ์ ๋ฐ์ดํธ๋ฅผ ์ํํ๊ณ ํ์ด ์ด์ 4๊ฐ๋ผ๊ณ ๋งํ๋ฉด ์ด๋ป๊ฒ ๋ ๊น์? ๊ทธ๋ฆฌ๊ณ XNUMX์ XNUMX๋ก ๋ณ๊ฒฝํ๊ฒ ์ต๋๋ค.
์ฌ๊ธฐ์ 4๊ฐ ํ์๋ฉ๋๋ค. ํธ๋์ญ์ ID๋ 702์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ 4๋ฅผ 5๋ก ๋ฐ๊พธ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 5๋ฅผ 6์ผ๋ก, 6์ 7๋ก ๋ฐ๊พธ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํ๋์ ๊ฑฐ๋๊ฐ ๋๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ ์ฌ๋ฌ ์ฌ๋์ ์ค์ ์๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๊ฒ์ด ๋ช
ํํด์ง๋๋ค. ์ฒซ ๋ฒ์งธ ํ์ ๋ฌด์์
๋๊น? 702์
๋๋ค. ์๋ ์ด ๊ฐ์ ์ค์ ํ ํธ๋์ญ์
ID์
๋๋ค. ๋์ Granted ์นผ๋ผ์๋ ๋ฌด์์ด ์ ํ ์๋์? ๋์๊ฒ ํ์ ์ด ์๋ค f
. ํธ๋์ญ์
ID 5๊ฐ ์ข
๋ฃ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ธฐ ๋๋ฌธ์ (6, 7, 702)์ด ์น์ธ๋ ์ ์๋ ์
๋ฐ์ดํธ์
๋๋ค. ๊ฑฐ๋ ID ์ฐจ๋จ์ด ์์ต๋๋ค. ์ด๋ก ์ธํด 5๊ฐ์ ํธ๋์ญ์
ID ์ ๊ธ์ด ๋ฐ์ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ 704, 705๋ฅผ ๋ณด๋ฉด ๊ฑฐ๊ธฐ์๋ ์์ง ์๋ฌด๊ฒ๋ ์ฐ์ฌ ์์ง ์์ต๋๋ค. ์๋ํ๋ฉด ๊ทธ๋ค์ ์์ง ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ค์ ๋จ์ง ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ ํ ๋ชจ๋ฅธ๋ค๊ณ ์๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ๋๊ตฐ๊ฐ๊ฐ ๋๋ด๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ํ์ ๋ฐ๊ฟ ๊ธฐํ๊ฐ ์์ ๋ ๊นจ์ด๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ฅ ์ ์ ๋ค ๊ฒ์ ๋๋ค.
์ด๊ฒ์ด ์ด๋ป๊ฒ ์๊ฒผ๋์ง์ ๋๋ค. ๊ทธ๋ค์ ๋ชจ๋ 12๋ฒ์งธ ์ค์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ๊ฒ์ด ๋ถ๋ช ํ๋ค.
์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ์ฌ๊ธฐ์ ๋ณธ ๊ฒ์ ๋๋ค. 0/12์ ๋๋ค.
๋ฐ๋ผ์ ์ฒซ ๋ฒ์งธ ๊ฑฐ๋๊ฐ ์น์ธ๋๋ฉด ์ฌ๊ธฐ์์ ๊ณ์ธต ๊ตฌ์กฐ๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์ด์ ๋ชจ๋ ๊ฒ์ด ๋ช ํํด์ก์ต๋๋ค. ๋ชจ๋ ๊นจ๋ํด์ง๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ์ค์ ๋ก ์์ง๋ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
ํ์ฌ ์ํฉ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 702 ์ปค๋ฐ. ์ด์ 703์ ์ด ํ ์ ๊ธ์ ํ๋ํ๊ณ 704๋ 703์ด ์ปค๋ฐ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ธฐ ์์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ 705๋ ์ด๊ฒ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ชจ๋ ๊ฒ์ด ์๋ฃ๋๋ฉด ๊ทธ๋ค์ ์ค์ค๋ก๋ฅผ ์ ๋ฆฌํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๋ ๋ชจ๋๊ฐ ์ค์ ์๊ณ ์๋ค๋ ์ ์ ์ง์ ํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋ชจ๋๊ฐ ์ฒซ ๋ฒ์งธ ์ฐจ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ตํต ์ฒด์ฆ ์ํฉ๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ์ฐจ๊ฐ ๋ฉ์ถ๊ณ ๋ชจ๋๊ฐ ๊ธธ๊ฒ ์ค์ ์ญ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ด๋ํ๋ฉด ๋ค์ ์ฐจ๋์ด ์์ผ๋ก ์ฃผํํ์ฌ ๋ธ๋ก์ ์ป์ ์ ์์ต๋๋ค.
์ด๊ฒ์ด ์ถฉ๋ถํ ๋ณต์กํด ๋ณด์ด์ง ์๋๋ค๋ฉด ์ด์ ๊ต์ฐฉ ์ํ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ๋๋ ์ฌ๋ฌ๋ถ ์ค ๋๊ฐ ๊ทธ๋ฐ ๋ฌธ์ ๋ฅผ ๊ฒช์๋์ง ๋ชจ๋ฆ ๋๋ค. ์ด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์ ๋งค์ฐ ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ต์ฐฉ ์ํ๋ ํ ์ธ์ ์ด ๋ค๋ฅธ ์ธ์ ์ด ์ด๋ค ์์ ์ ์ํํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒฝ์ฐ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์๊ฐ ๋ ๋ค๋ฅธ ์ธ์ ์ด ์ฒซ ๋ฒ์งธ ์ธ์ ์ด ๋ญ๊ฐ๋ฅผ ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, Ivan์ด "๋์๊ฒ ๋ญ๊ฐ๋ฅผ ์ฃผ์ธ์"๋ผ๊ณ ๋งํ๋ฉด ๋๋ "์๋์, ๋น์ ์ด ๋์๊ฒ ๋ค๋ฅธ ๊ฒ์ ์ฃผ์ด์ผ๋ง ๊ทธ๊ฒ์ ์ค ๊ฒ์ ๋๋ค."๋ผ๊ณ ๋งํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ โ์๋์, ๋น์ ์ด ๋์๊ฒ ์ฃผ์ง ์์ผ๋ฉด ๋๋ ๊ทธ๊ฒ์ ๋น์ ์๊ฒ ์ฃผ์ง ์์ ๊ฒ์ ๋๋ค.โ๋ผ๊ณ ๋งํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ตญ ๊ต์ฐฉ์ํ์ ๋น ์ง๊ฒ ๋ฉ๋๋ค. ๋๋ Ivan์ด ์ด๊ฒ์ ํ์ง ์์ ๊ฒ์ด๋ผ๊ณ ํ์ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋น์ ์ ์ฐ๋ฆฌ์๊ฒ ๋ฌด์ธ๊ฐ๋ฅผ ์ป๊ณ ์ถ์ดํ๋ ๋ ์ฌ๋์ด ์๊ณ ๋ค๋ฅธ ์ฌ๋์ด ์ํ๋ ๊ฒ์ ์ค ๋๊น์ง ๊ทธ๊ฒ์ ์ค ์ค๋น๊ฐ ๋์ด ์์ง ์๋ค๋ ์๋ฏธ๋ฅผ ์ดํดํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํด๊ฒฐ์ฑ ์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ณธ์ง์ ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ด๋ฅผ ๊ฐ์งํด์ผ ํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ธ์ ์ค ํ๋๋ฅผ ์ญ์ ํ๊ฑฐ๋ ๋ซ์์ผ ํฉ๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ํด๋น ์ธ์ ์ด ์์ํ ๊ทธ๋๋ก ์ ์ง๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ด์ ์ฒด์ ์์ ๋ด ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณ๋ ฌ ํ๋ก์ธ์ค๊ฐ ์๋ ๋ชจ๋ ๊ณณ์์ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
์ด์ ๋ ๊ฐ์ ๊ต์ฐฉ ์ํ๋ฅผ ์ค์นํ๊ฒ ์ต๋๋ค. 50๊ณผ 80์ ์ ๋ ฅํ๊ฒ ์ต๋๋ค. ์ฒซ ๋ฒ์งธ ํ์์๋ 50์์ 50์ผ๋ก ์ ๋ฐ์ดํธํ๊ฒ ์ต๋๋ค. ๊ฑฐ๋ ๋ฒํธ๋ 710์ ๋๋ค.
๊ทธ๋ฐ ๋ค์ 80์ 81๋ก, 50์ 51๋ก ๋ณ๊ฒฝํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ๋ชจ์ต์ด ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ 710์๋ ํ์ด ์ฐจ๋จ๋์์ผ๋ฉฐ 711์ ํ์ธ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ ๋ฐ์ดํธํ ๋ ์ด๊ฒ์ ๋ณด์์ต๋๋ค. 710์ ์ฐ๋ฆฌ ์๋ฆฌ์ฆ์ ์์ ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ 711์ 710์ด ๊ฑฐ๋๋ฅผ ์๋ฃํ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ ํ์์ ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ๋์ง๋ ์๋ ค์ค๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ์ด์ํด์ง๊ธฐ ์์ํฉ๋๋ค.
์ด์ 80์ 80์ผ๋ก ์ ๋ฐ์ดํธํ๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ๊ต์ฐฉ์ํ๊ฐ ์์๋ฉ๋๋ค. 710์ 711์ ์๋ต์ ๊ธฐ๋ค๋ฆฌ๊ณ , 711์ 710์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ผ์ ์ ๋๋์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ๋ฒ์ด๋ ๋ฐฉ๋ฒ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ค์ ์๋ก์ ๋ฐ์์ ๊ธฐ๋ํ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ชจ๋ ๊ฒ์ ์ง์ฐ์ํค๊ธฐ ์์ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ์ํ์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ Postgres์๋ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ์ ๋ ์ด๋ฅผ ์์์ฐจ๋ฆด ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋ฉด ์ด๋ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ผ๋ก๋ถํฐ ๊ทธ๋ฌํ ํ๋ก์ธ์ค๊ฐ ๋ค๋ฅธ ํ๋ก์ธ์ค, ์ฆ 711 ํ๋ก์ธ์ค์ ์ํด ์ฐจ๋จ๋ SHARE LOCK์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ค๋ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ํ๋ก์ธ์ค๋ ์ด๋ฌ์ ๋ฌํ ํธ๋์ญ์ ID์ ๋ํด SHARE LOCK์ด ์ ๊ณต๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์๊ณ ์ด๋ฌ์ ๋ฌํ ํ๋ก์ธ์ค์ ์ํด ์ฐจ๋จ๋์์ต๋๋ค. ๋ฐ๋ผ์ ์ฌ๊ธฐ์๋ ๊ต์ฐฉ์ํ๊ฐ ๋ฐ์ํฉ๋๋ค.
XNUMX๋ฐฉํฅ ๊ต์ฐฉ์ํ๊ฐ ์์ต๋๊น? ๊ฐ๋ฅํฉ๋๊น? ์.
์ด ์ซ์๋ฅผ ํ์ ์ ๋ ฅํฉ๋๋ค. 40์ 40์ผ๋ก ๋ณ๊ฒฝํ๊ณ ์ฐจ๋จํฉ๋๋ค.
60์ 61๋ก, 80์ 81๋ก ๋ณ๊ฒฝํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ 80์ ๋ฐ๊พธ๋ฉด ํ!
๊ทธ๋ฆฌ๊ณ 714๋ ์ด์ 715๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. 716์ 715๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ํด ์๋ฌด๊ฒ๋ ํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ์๋ ๋ ์ด์ ๋ ์ฌ๋์ด ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ด๋ฏธ ์ธ ์ฌ๋์ด ์์ต๋๋ค. ๋๋ ๋น์ ์๊ฒ ๋ฌด์์ธ๊ฐ๋ฅผ ์ํ๊ณ , ์ด ์ฌ๋์ ์ XNUMX์์๊ฒ ๋ฌด์์ธ๊ฐ๋ฅผ ์ํ๊ณ , ์ XNUMX์๋ ๋์๊ฒ ๋ฌด์์ธ๊ฐ๋ฅผ ์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ชจ๋ ๋ค๋ฅธ ์ฌ๋์ด ํด์ผ ํ ์ผ์ ์๋ฃํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ธฐ ๋๋ฌธ์ ๊ฒฐ๊ตญ ์ผ์ ๊ธฐ๋ค๋ฆผ์ ๋น ์ง๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ Postgres๋ ์ด๊ฒ์ด ์ด๋ ํ์์ ๋ฐ์ํ๋์ง ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ฉด ์ธ ๊ฐ์ ์ ๋ ฅ์ด ์๋ก๋ฅผ ์ฐจ๋จํ๋ ๋ฌธ์ ๊ฐ ์์์ ๋ณด์ฌ์ฃผ๋ ๋ค์ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์๋ ์ ํ์ด ์์ต๋๋ค. 20๊ฐ์ ํญ๋ชฉ์ด ์๋ก๋ฅผ ์ฐจ๋จํ๋ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์์ต๋๋ค.
๋ค์ ๋ฌธ์ ๋ ์ง๋ ฌํ ๊ฐ๋ฅ์ ๋๋ค.
ํน๋ณํ ์ง๋ ฌํ ๊ฐ๋ฅ ์ ๊ธ์ธ ๊ฒฝ์ฐ.
๊ทธ๋ฆฌ๊ณ 719๋ก ๋์๊ฐ๋๋ค. ์ถ๋ ฅ์ ๋งค์ฐ ์ ์์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํด๋ฆญํ๋ฉด ํธ๋์ญ์ ์ ์ง๋ ฌํํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด์ ๋ค๋ฅธ ์ข ๋ฅ์ SA ์ ๊ธ์ด ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์์ต๋๋ค. ์ด๋ ์ง๋ ฌํ ๊ฐ๋ฅ์ ์๋ฏธํฉ๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ง๋ ฌ ์ ๊ธ ์ฅ์น์ธ SARieadLock์ด๋ผ๋ ์๋ก์ด ์ ํ์ ์ ๊ธ ์ฅ์น๋ฅผ ์ฌ์ฉํ์ฌ ์ผ๋ จ ๋ฒํธ๋ฅผ ์ ๋ ฅํ ์ ์์ต๋๋ค.
๋ํ ๊ณ ์ ์ธ๋ฑ์ค๋ฅผ ์ฝ์ ํ ์๋ ์์ต๋๋ค.
์ด ํ ์ด๋ธ์๋ ๊ณ ์ ์ธ๋ฑ์ค๊ฐ ์์ต๋๋ค.
๊ทธ๋์ ์ฌ๊ธฐ์ ์ซ์ 2๋ฅผ ๋ฃ์ผ๋ฉด 2๊ฐ ๋ฉ๋๋ค. ํ์ง๋ง ๋งจ ์์๋ ๋ ๋ค๋ฅธ 2๋ฅผ ๋ฃ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 721์๋ ์ ์ฉ ์ ๊ธ ์ฅ์น๊ฐ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ 722๋ 721์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ์ง ์ ๋๊น์ง 2๋ฅผ ์ฝ์ ํ ์ ์๊ธฐ ๋๋ฌธ์ 721์ ์์ ์ด ์๋ฃ๋๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ํ์ ํธ๋์ญ์ ์ ์ํํ๋ค๋ฉด.
์ฌ๊ธฐ์๋ 723์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ํฌ์ธํธ๋ฅผ ์ ์ฅํ ๋ค์ ์ ๋ฐ์ดํธํ๋ฉด ์๋ก์ด ๊ฑฐ๋ ID๋ฅผ ์ป๊ฒ ๋ฉ๋๋ค. ์ด๊ฒ์ ๋น์ ์ด ์์์ผ ํ ๋ ๋ค๋ฅธ ํ๋ ํจํด์ ๋๋ค. ์ด๊ฒ์ ๋ฐํํ๋ฉด ํธ๋์ญ์ ID๊ฐ ์ฌ๋ผ์ง๋๋ค. 724๊ฐ์ ์. ํ์ง๋ง ์ง๊ธ์ 725๊ฐ๊ฐ ์์ต๋๋ค.
๊ทธ๋ผ ๋ด๊ฐ ์ฌ๊ธฐ์ ๋ญ ํ๋ ค๋ ๊ฑฐ์ง? ๋๋ ์ฌ๋ฌ๋ถ์ด ๋ฐ๊ฒฌํ ์ ์๋ ํน์ดํ ์ ๊ธ์ ์๋ฅผ ๋ณด์ฌ์ฃผ๋ ค๊ณ ํฉ๋๋ค. ์ง๋ ฌํ ๊ฐ๋ฅํ ์ ๊ธ์ด๋ SAVEPOINT์ด๋ ์ ๊ธ ํ ์ด๋ธ์ ๋ํ๋๋ ๋ค์ํ ์ ํ์ ์ ๊ธ์ ๋๋ค.
์ด๋ pg_advisory_lock์ด ์๋ ๋ช ์์ (๋ช ์์ ) ์ ๊ธ์ ์์ฑํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐจ๋จ ์ ํ์ด ๊ถ๊ณ ๋ก ๋์ด๋์ด ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ๋นจ๊ฐ์์ผ๋ก "๊ถ๊ณ "๋ผ๊ณ ํ์๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ pg_advisory_unlock์ ์ฌ์ฉํ๋ฉด ์ด์ ๊ฐ์ด ๋์์ ์ฐจ๋จํ ์๋ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฒฐ๋ก ์ ์ผ๋ก, ์ ๋ ์ฌ๋ฌ๋ถ์๊ฒ ๋๋ผ์ด ์ฌ์ค์ ํ ๊ฐ์ง ๋ ๋ณด์ฌ๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ๋ ๋ค๋ฅธ ๋ทฐ๋ฅผ ๋ง๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ํ์ง๋ง pg_locks ํ ์ด๋ธ์ pg_stat_activity ํ ์ด๋ธ๊ณผ ๊ฒฐํฉํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋๋ ์ ์ด ์ผ์ ํ๊ณ ์ถ์ ๊ฑธ๊น์? ์ด๋ฅผ ํตํด ๋ชจ๋ ํ์ฌ ์ธ์ ์ ์ดํด๋ณด๊ณ ๊ทธ๋ค์ด ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ ๊ธ์ ์ข ๋ฅ๋ฅผ ์ ํํ๊ฒ ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์ ๊ธ ํ ์ด๋ธ๊ณผ ์ฟผ๋ฆฌ ํ ์ด๋ธ์ ํจ๊ป ์ฌ์ฉํ๋ฉด ๋งค์ฐ ํฅ๋ฏธ๋กญ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ pg_stat_view๋ฅผ ๋ง๋ญ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ์ ํ๋์ฉ ์ ๋ฐ์ดํธํฉ๋๋ค. ์ฌ๊ธฐ์๋ 724๊ฐ ํ์๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ํ์ XNUMX์ผ๋ก ์ ๋ฐ์ดํธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ง๊ธ ์ฌ๊ธฐ์์ ๋ฌด์์ด ๋ณด์ด๋์? ์ด๋ ์์ฒญ์ ๋๋ค. ์ฆ, ์ผ์ชฝ ์ด์ ๋์ด๋ ์ ์ฒด ์์ฒญ ๋ชฉ๋ก์ด ํ์๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ค๋ฅธ์ชฝ์์ ๋งํ ๋ถ๋ถ๊ณผ ์ด๋ก ์ธํด ์์ฑ๋๋ ๋ด์ฉ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋งค๋ฒ ๊ฐ ์ธ์ ์ผ๋ก ๋์๊ฐ ์ฐธ์ฌํด์ผ ํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ํ์๊ฐ ์๋๋ก ๋์ฑ ๋ช ํํด์ง ์ ์์ต๋๋ค. ๊ทธ๋ค์ ์ฐ๋ฆฌ๋ฅผ ์ํด ๊ทธ๊ฒ์ ํฉ๋๋ค.
๋งค์ฐ ์ ์ฉํ ๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ pg_blocking_pids
. ๋น์ ์ ์๋ง ๊ทธ๋
์ ๋ํด ๋ค์ด๋ณธ ์ ์ด ์์ ๊ฒ์
๋๋ค. ๊ทธ๋
๊ฐ ๋ฌด์์ํ๊ณ ์๋? ์ด๋ฅผ ํตํด ์ด ์ธ์
11740์ ๋ํด ์ด๋ค ํน์ ํ๋ก์ธ์ค ID๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋์ง ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 11740์ด 724๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 724๊ฐ ๋งจ ์์ ์์ต๋๋ค. 11306์ ํ๋ก์ธ์ค ID์
๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ์ด ๊ธฐ๋ฅ์ ์ ๊ธ ํ
์ด๋ธ์ ํต๊ณผํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ์กฐ๊ธ ๋ณต์กํ๋ค๋ ๊ฒ๋ ์์ง๋ง, ์ฌ๋ฌ๋ถ์ ๊ทธ๊ฒ์ ์ดํดํ๊ฒ ๋์์ต๋๋ค. ๋ณธ์ง์ ์ผ๋ก ์ด ํจ์๋ ์ด ์ ๊ธ ํ
์ด๋ธ์ ์ดํด๋ณด๊ณ ์ด ํ๋ก์ธ์ค ID์ ๋๊ธฐ ์ค์ธ ์ ๊ธ์ด ๋ถ์ฌ๋ ์์น๋ฅผ ์ฐพ์ผ๋ ค๊ณ ์๋ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๊ธ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ํ๋ก์ธ์ค์ ํ๋ก์ธ์ค ID๊ฐ ๋ฌด์์ธ์ง ์์๋ด๋ ค๊ณ ์๋ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ๊ธฐ๋ฅ์ ์คํํ ์ ์์ต๋๋ค. pg_blocking_pids
.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋งค์ฐ ์ ์ฉํ ์ ์์ต๋๋ค. ๋ฒ์ 9.6์์๋ง ์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ธฐ ๋๋ฌธ์ ์ด ๊ธฐ๋ฅ์ ๋์จ ์ง 5๋ ๋ฐ์ ์ ๋์ง๋ง ๋งค์ฐ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ๋ ๋ฒ์งธ ์์ฒญ์๋ ๋์ผํ๊ฒ ์ ์ฉ๋ฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๋ด์ผ ํ ๊ฒ์ด ๋ฌด์์ธ์ง ์ ํํ๊ฒ ๋ณด์ฌ์ค๋๋ค.
์ด๊ฒ์ด ์ ๊ฐ ๋น์ ์๊ฒ ์ด์ผ๊ธฐํ๊ณ ์ถ์๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ํ๋ ๋๋ก ์ฌ๋ผ์ด๋๊ฐ ๋๋ฌด ๋ง์์ ์๊ฐ์ ๋ค ์จ๋ฒ๋ ธ์ด์. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ผ์ด๋๋ฅผ ๋ค์ด๋ก๋ํ ์ ์์ต๋๋ค. ์ด ์๋ฆฌ์ ์์ด์ฃผ์ ์ ๊ฐ์ฌํ๋ค๋ ๋ง์์ ์ ํ๊ณ ์ถ์ต๋๋ค. ๋จ์ ์ปจํผ๋ฐ์ค๋ ์ฆ๊ฑฐ์ฐ์ค ๊ฑฐ๋ผ ํ์ ํฉ๋๋ค. ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!
์ง๋ฌธ :
์๋ฅผ ๋ค์ด ํ์ ์ ๋ฐ์ดํธํ๋ ค๊ณ ํ๋๋ฐ ๋ ๋ฒ์งธ ์ธ์ ์์ ์ ์ฒด ํ ์ด๋ธ์ ์ญ์ ํ๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ๋ด๊ฐ ์๋ ํ ์๋ ์ ๊ธ๊ณผ ๊ฐ์ ๊ฒ์ด ์์ด์ผ ํฉ๋๋ค. Postgres์ ๊ทธ๋ฐ ๊ฒ์ด ์์ต๋๊น?
์ฒ์์ผ๋ก ๋์๊ฐ ๋ณด๊ฒ ์ต๋๋ค. ์๋ฅผ ๋ค์ด SELECT๋ฅผ ์ํํ๋ ๋ฑ์ ์์ ์ ์ํํ๋ฉด AccessShareLock์ด ๋ฐํ๋๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์ค ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ํ ์ด๋ธ์ด ๋จ์ด์ง๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ๋ฐ๋ผ์ ์๋ฅผ ๋ค์ด ํ ์ด๋ธ์ ํ์ ์ ๋ฐ์ดํธํ๊ฑฐ๋ ํ์ ์ญ์ ํ๋ ค๋ ๊ฒฝ์ฐ ์ ์ฒด ํ ์ด๋ธ๊ณผ ํ์ ๋ํด ์ด AccessShareLock์ ๋ณด์ ํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๊ตฐ๊ฐ ๋์์ ์ ์ฒด ํ ์ด๋ธ์ ์ญ์ ํ ์ ์์ต๋๋ค. ์๋ฃ๋๋ฉด ์ญ์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ๊ฑฐ๊ธฐ์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ง์ ๋ณ๊ฒฝํ๋ ๋์์๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
๋ค์ ํด๋ณด์. ์ญ์ ์์๋ก ๋์ด๊ฐ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ฒด ํ ์ด๋ธ ์์ ํ์ ๋ฐฐํ์ ์ ๊ธ์ด ์ด๋ป๊ฒ ์ค์ ๋์ด ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ์ ๊ธ ์ ์ฉ์ฒ๋ผ ๋ณด์ผ ๊ฒ์ ๋๋ค. ๊ทธ๋ ์ฃ ?
๋ค, ๊ทธ๋ด ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ ๋น์ ์ด ๋งํ๋ ๊ฒ์ ์ดํดํฉ๋๋ค. SELECT๋ฅผ ์ํํ๊ณ ShareExclusive๋ฅผ ๊ฐ๊ฒ ๋ ๋ค์ ์ด๋ฅผ Row Exclusive๋ก ์ค์ ํ๋ฉด ๋ฌธ์ ๊ฐ ๋๋ค๋ ๋ง์์ด์ ๊ฐ์? ๊ทธ๋ฌ๋ ๋๋๊ฒ๋ ์ด๋ ๋ฌธ์ ๋ฅผ ์ผ์ผํค์ง ์์ต๋๋ค. ์ด๋ ์ ๊ธ ์์ค์ ๋์ด๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋ณธ์ง์ ์ผ๋ก ์ญ์ ๋ฅผ ๋ฐฉ์งํ๋ ์ ๊ธ์ด ์์ต๋๋ค. ์ด์ ์ด ์ ๊ธ ์ฅ์น๋ฅผ ๋์ฑ ๊ฐ๋ ฅํ๊ฒ ๋ง๋ค์ด๋ ์ฌ์ ํ ์ญ์ ๋ฅผ ๋ฐฉ์งํ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ฌ๋ผ๊ฐ๋ ๊ฑด ์๋ ๊ฒ ๊ฐ์์. ์ฆ, ๋ฎ์ ๋ ๋ฒจ์ผ ๋๋ ๋ฐ์ํ์ง ์๋๋ก ๋ฐฉ์งํ๊ธฐ ๋๋ฌธ์ ๋ ๋ฒจ์ ์ฌ๋ ค๋ ํ ์ด๋ธ์ด ์ญ์ ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.
๋๋ ๋น์ ์ด ๋งํ๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ์ฌ๊ธฐ์๋ ๋ ๊ฐ๋ ฅํ ์ ๊ธ์ ๋์ ํ๊ธฐ ์ํด ํ๋์ ์ ๊ธ์ ํฌ๊ธฐํ๋ ค๊ณ ํ๋ ์ ๊ธ ์์ค์ปฌ๋ ์ด์ ์ฌ๋ก๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์๋ ์ ๋ฐ์ ์ผ๋ก ์๋ฐฉ ๊ธฐ๋ฅ์ ๊ฐํํ๋ฏ๋ก ์ถฉ๋์ด ๋ฐ์ํ์ง ์์ต๋๋ค. ํ์ง๋ง ์ข์ ์ง๋ฌธ์ ๋๋ค. ์ด๋ ๊ฒ ๋ฌผ์ด๋ด์ฃผ์ ์ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!
์ธ์ ์ด ๋ง๊ณ , ์ฌ์ฉ์ ์๊ฐ ๋ง์ ๊ฒฝ์ฐ ๊ต์ฐฉ์ํ๋ฅผ ํผํ๊ธฐ ์ํด์๋ ์ด๋ป๊ฒ ํด์ผ ํ ๊น์?
Postgres๋ ๊ต์ฐฉ ์ํ ์ํฉ์ ์๋์ผ๋ก ๊ฐ์งํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ธ์ ์ค ํ๋๊ฐ ์๋์ผ๋ก ์ญ์ ๋ฉ๋๋ค. ๋ฐ๋ ๋ธ๋กํน์ ๋ฐฉ์งํ๋ ์ ์ผํ ๋ฐฉ๋ฒ์ ์ฌ๋๋ค์ ๊ฐ์ ์์๋ก ์ฐจ๋จํ๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ๋ณด๋ฉด ์ข ์ข ๊ต์ฐฉ ์ํ์ ์์ธ์ด ํ์๋ฉ๋๋ค. ๋ ๊ฐ์ง ๋ค๋ฅธ ํญ๋ชฉ์ ์ฐจ๋จํ๊ณ ์ถ๋ค๊ณ ์์ํด ๋ด ์๋ค. ํ ์์ฉ ํ๋ก๊ทธ๋จ์ ํ ์ด๋ธ 1์ ์ ๊ทธ๊ณ ๋ค๋ฅธ ์์ฉ ํ๋ก๊ทธ๋จ์ 2๋ฅผ ์ ๊ทผ ๋ค์ ํ ์ด๋ธ 1์ ์ ๊ธ๋๋ค. ๊ต์ฐฉ ์ํ๋ฅผ ํผํ๋ ๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ดํด๋ณด๊ณ ์ ๊ธ์ด ๋ชจ๋ ์์ฉ ํ๋ก๊ทธ๋จ์์ ๋์ผํ ์์๋ก ๋ฐ์ํ๋์ง ํ์ธํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์ข ๋ฅ์ ์ฌ๋๋ค์ด ์ด๋ฌํ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก ๋ฌธ์ ์ 80%๊ฐ ์ ๊ฑฐ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ผํ ์์๋ก ์ฐจ๋จํ๋ฉด ๊ต์ฐฉ ์ํ๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค.
๊ทํ์ ๊ณต์ฐ์ ์ง์ฌ์ผ๋ก ๊ฐ์ฌ๋๋ฆฝ๋๋ค! Vacuum Full์ ๋ํด ๋ง์ํ์ จ๋๋ฐ, ์ ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ดํดํ๋ค๋ฉด Vacuum Full์ ๋ณ๋์ ์ ์ฅ์์ ์๋ ๋ ์ฝ๋์ ์์๋ฅผ ์๊ณกํ๋ฏ๋ก ํ์ฌ ๋ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์ ์งํฉ๋๋ค. ์ง๊ณต ์ ์ฒด๊ฐ ๋ฐฐํ์ ์ ๊ธ ์ก์ธ์ค๋ฅผ ์ทจํ๋ ์ด์ ๋ ๋ฌด์์ด๋ฉฐ ์ฐ๊ธฐ ์์ ๊ณผ ์ถฉ๋ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๊ทธ๊ฑด ์ข์ ์ง๋ฌธ์ด์ผ. ๊ทธ ์ด์ ๋ ์ง๊ณต์ด ๊ฐ๋ ์ฐจ์ ํ
์ด๋ธ์ ์ฐจ์งํ๊ธฐ ๋๋ฌธ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ณธ์ง์ ์ผ๋ก ์๋ก์ด ๋ฒ์ ์ ํ
์ด๋ธ์ ์์ฑํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ
์ด๋ธ์ ์ ๊ฒ์ด ๋ ๊ฒ์
๋๋ค. ์ด๊ฒ์ ์์ ํ ์๋ก์ด ๋ฒ์ ์ ํ
์ด๋ธ์ด ๋ ๊ฒ์ผ๋ก ๋ฐํ์ก์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๋ ์ฐ๋ฆฌ๊ฐ ์ด ์์
์ ์ํํ ๋ ์ฌ๋๋ค์ด ์ ํ
์ด๋ธ์ ๋ณด๊ธฐ ์ํด ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ทธ๊ฒ์ ์ฝ๋ ๊ฒ์ ์ํ์ง ์๋๋ค๋ ๊ฒ์
๋๋ค. ๊ทธ๋์ ์ด๊ฒ์ ์ด์ ์ง๋ฌธ๊ณผ ์ฐ๊ฒฐ๋ฉ๋๋ค. ๋์์ ์ฝ์ ์ ์๋ค๋ฉด ๊ทธ๊ฒ์ ์ฎ๊ธฐ๊ฑฐ๋ ์ฌ๋๋ค์ ์๋ก์ด ํ
์ด๋ธ๋ก ์๋ดํ ์ ์์ ๊ฒ์
๋๋ค. ๋ชจ๋ ์ฌ๋์ด ์ด ํ
์ด๋ธ์ ๋ค ์ฝ์ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ฏ๋ก ์ด๋ ๋ณธ์ง์ ์ผ๋ก ์ ๊ธ ๋ฐฐํ์ ์ํฉ์
๋๋ค.
์ฐ๋ฆฌ๋ ๋ชจ๋ ์ฌ๋์ ์ ๋ณต์ฌ๋ณธ์ผ๋ก ์ด๋ํ๋ ค๋ฉด ๋ง์ง๋ง์ ๋ฐฐํ์ ์ ๊ธ์ด ํ์ํ๋ค๋ ๊ฒ์ ์๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฒ์๋ถํฐ ์ ๊ทผ๋ค๊ณ ๋งํฉ๋๋ค. ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ ์ด ๋ฌธ์ ๋ฅผ ์ ์ฌ์ ์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋์ ์ธ๋ฑ์ฑ์ ํตํด ์ด๋ฅผ ์ํํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ํ๊ธฐ๊ฐ ํจ์ฌ ๋ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋
์ ์ ๊ธ์ ๋ํ ์ด์ ์ง๋ฌธ๊ณผ ๋งค์ฐ ๊ด๋ จ์ด ์์ต๋๋ค.
Postgres์ ์ ๊ธ ์๊ฐ ์ด๊ณผ๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๊น? ์๋ฅผ ๋ค์ด Oracle์์๋ "์ ๋ฐ์ดํธ ์ ํ"์ด๋ผ๊ณ ์ฐ๊ณ ์ ๋ฐ์ดํธํ๊ธฐ ์ ์ 50์ด ๋์ ๊ธฐ๋ค๋ฆด ์ ์์ต๋๋ค. ์ ์ฉํ๊ธฐ์๋ ์ข์์ต๋๋ค. ํ์ง๋ง Postgres์์๋ ์ ํ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ ์ฆ์ ์ํํ๊ฑฐ๋ ์ด๋ ์ ๋ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
์, ์ ๊ธ์ ๋ํ ์๊ฐ ์ ํ์ ์ ํํ ์ ์์ต๋๋ค. ์ฆ์ ์ ๊ธ์ ์ป์ ์ ์๋ ๊ฒฝ์ฐ no way ๋ช ๋ น์ ์คํํ ์๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ๊ธ ์๊ฐ ์ด๊ณผ ๋๋ ์ด๋ฅผ ์ํํ ์ ์๋ ๋ค๋ฅธ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค. ์ด๋ ๊ตฌ๋ฌธ ์์ค์์๋ ์ํ๋์ง ์์ต๋๋ค. ์ด๋ ์๋ฒ์์ ๋ณ์๋ก ์ํ๋ฉ๋๋ค. ๋๋ก๋ ์ด๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฌ๋ผ์ด๋ 75๋ฅผ ์ด ์ ์๋์?
๋ค.
๊ทธ๋ฆฌ๊ณ ๋ด ์ง๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ ์ ๋ฐ์ดํธ ํ๋ก์ธ์ค ๋ชจ๋ 703์ ์์ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ข์ ์ง๋ฌธ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ Postgres๊ฐ ์ ์ด๋ฐ ์ผ์ ํ๋์ง ์ดํด๊ฐ ๋์ง ์์ต๋๋ค. ํ์ง๋ง 703์ด ๋ง๋ค์ด์ก์ ๋๋ 702๋ฅผ ๊ธฐ๋ํ๊ณ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ 704์ 705๊ฐ ๋ํ๋๋ฉด ์์ง ์๋ฌด๊ฒ๋ ์๊ธฐ ๋๋ฌธ์ ๋ฌด์์ ๊ธฐ๋ํ๋์ง ๋ชจ๋ฅด๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Postgres๋ ์ด๋ ๊ฒ ํฉ๋๋ค. ์ ๊ธ์ ์ป์ ์ ์์ผ๋ฉด ์ด๋ฏธ ๋๊ตฐ๊ฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ธฐ ๋๋ฌธ์ โWhatโs the point inprocess you?โ๋ผ๊ณ ์๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ๊ณต์ค์ ๋งค๋ฌ์ ๋์ ๊ฒ์ ๋๋ค. ์ ํ ์ ๋ฐ์ดํธ๋์ง ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ๋ฐ ์ฌ๊ธฐ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ฌ๋์? 702๊ฐ ํ๋ก์ธ์ค๋ฅผ ์๋ฃํ๊ณ 703์ด ์ ๊ธ์ ์์ ํ์๋ง์ ์์คํ ์ด ๋ค์ ๋์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋ ์ด์ ์ฐ๋ฆฌ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ฌ๋์ด ๋ ๋ช ์๋ค๊ณ ๋งํ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ํจ๊ป ์ ๋ฐ์ดํธํด ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๋ค ๊ธฐ๋ํ๊ณ ์์์ ๋ํ๋ ๋๋ค.
Postgres๊ฐ ์ ์ด๋ฐ ์ผ์ ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ๊ทธ๋ฐ๋ฐ f๋ผ๋ ๋ฌธ์ ๊ฐ ์๋๋ฐโฆ ์ด๊ฒ์ ๋ฌ์์์ด๋ก ๋ ์ฉ์ด๊ฐ ์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ฑ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ด์์ด 20๋ช ์ด๋๋ผ๋ ๋ชจ๋๊ฐ ํ๋์ ์ฑ์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ด๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ์๊ธฐ ๊ทธ๋ค์ ๋ชจ๋ ๋์์ ๊นจ์ด๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋๊ฐ ๋ฐ์ํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ธฐ ์์ํฉ๋๋ค. ํ์ง๋ง ์์คํ ์์๋ ๋ชจ๋๊ฐ 703์ ๊ธฐ๋ค๋ฆฌ๊ฒ๋ ๋ง๋ค์ด ๋์์ต๋๋ค. ์๋ํ๋ฉด ๋ชจ๋๊ฐ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ฆ์ ๊ทธ๋ค์ ๋ชจ๋ ์ ๋ ฌํด ๋์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ดํ์ ์์ฑ๋ ๋ค๋ฅธ ์ ์์ฒญ(์: 707)์ด ๋ํ๋๋ฉด ๋ค์ ๋น์ด ์๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ํ ๋จ๊ณ์์ 702๊ฐ 703์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๊ณ ๊ทธ ์ดํ์ ์ค๋ ๋ชจ๋ ์ฌ๋๋ค์ ์ด ๋ถ์ผ์ ์ง์ ํ ์ ์๋ค๊ณ ๋งํ ์ ์๋๋ก ํ๊ธฐ ์ํด ์ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ์ง๋ง ์ฒซ ๋ฒ์งธ ์จ์ดํฐ๊ฐ ๋ ๋์๋ง์ ์ ๋ฐ์ดํธ ์ ๊ทธ ์๊ฐ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ๋ชจ๋ ์ฌ๋๋ค์ ๋์ผํ ํ ํฐ์ ๋ฐ์ต๋๋ค. ๊ทธ๋์ ์์๋๋ก ์ฒ๋ฆฌํด์ ์ ๋๋ก ์ฃผ๋ฌธํ ์ ์๋๋ก ์ด๋ ๊ฒ ํ๋ ๊ฒ ๊ฐ์์.
๋๋ ํญ์ ์ด๊ฒ์ ๋ค์ ์ด์ํ ํ์์ผ๋ก ๋ณด์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ๊ธฐ์๋ ์ ํ ๋์ดํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง ์ฐ๋ฆฌ๊ฐ ์๋ก์ด ์๋ฌผ์ ๋ฅผ ์ค ๋๋ง๋ค ์ฐ๋ฆฌ๋ ๊ธฐ๋ค๋ฆฌ๊ณ ์๋ ์ฌ๋๋ค์ ๋ชจ๋ ์ณ๋ค๋ณด๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ชจ๋ ์ ๋ ฌํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ค์ด์ค๋ ์๋ก์ด ์ฌ๋์ ๋ค์ ์ฌ๋์ด ์ฒ๋ฆฌ๋ฅผ ๋ง์น ํ์๋ง ๋๊ธฐ์ด์ ๋ค์ด๊ฐ๋๋ค. ์์ฃผ ์ข์ ์ง๋ฌธ์ ๋๋ค. ๊ทํ์ ์ง๋ฌธ์ ์ง์ฌ์ผ๋ก ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
705๊ฐ 704๋ฅผ ๊ธฐ๋ํ๋ ๊ฒ์ด ํจ์ฌ ๋ ๋ ผ๋ฆฌ์ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ฌ๊ธฐ์ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๊ธฐ์ ์ ์ผ๋ก๋ ๋ ์ค ํ๋๋ฅผ ๊นจ์ธ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ ์ค ํ๋๋ฅผ ๊นจ์ธ ๊ฒ์ ๋๋ค. ํ์ง๋ง ์์คํ ์์๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๋๊ฐ? ๋งจ ์์ ์๋ 703์ด ์์ ์ ๊ฑฐ๋ ID๋ฅผ ์ด๋ป๊ฒ ์ฐจ๋จํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์ด๊ฒ์ด Postgres์ ์๋ ๋ฐฉ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ 703์ ์์ฒด ํธ๋์ญ์ ID๋ก ์ฐจ๋จ๋๋ฏ๋ก ๋๊ตฐ๊ฐ ๊ธฐ๋ค๋ฆฌ๊ธฐ๋ฅผ ์ํ๋ค๋ฉด 703์ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ณธ์ง์ ์ผ๋ก 703์ด ์๋ฃ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ฃ ํ์์ผ ํ๋ก์ธ์ค ์ค ํ๋๊ฐ ๊นจ์ด๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด ๊ณผ์ ์ด ์ ํํ ๋ฌด์์ธ์ง ๋ชจ๋ฆ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋ชจ๋ ๊ฒ์ ์ ์ง์ ์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ค ํ๋ก์ธ์ค๊ฐ ๋จผ์ ํ์ฑํ๋๋์ง๋ ํ์คํ์ง ์์ต๋๋ค. ์๋ํ๋ฉด ์ด๋ฌํ ํ๋ก์ธ์ค ์ค ํ๋์ผ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ณธ์ง์ ์ผ๋ก ์ฐ๋ฆฌ๋ ์ด์ ์ด๋ฌํ ํ๋ก์ธ์ค๋ฅผ ๊นจ์ธ ์ ์๋ค๊ณ ๋งํ๋ ์ค์ผ์ค๋ฌ๋ฅผ ๊ฐ์ง๊ณ ์์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ฌด์์๋ก ํ๋๋ฅผ ์ ํํฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๋ ์ค ํ๋๋ฅผ ๊นจ์ธ ์ ์๊ธฐ ๋๋ฌธ์ ๋ ๋ค ์ฃผ๋ชฉํด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๋ CP-๋ฌดํ๋๊ฐ ์๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ์ฐ๋ฆฌ๊ฐ ๋์ค์ ๊นจ์ด๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋์ค์ ๋ธ๋ก์ ๊นจ์ด ๊ฒฝ์ฐ ๋ฐฉ๊ธ ๋ธ๋ก์ ๋ฐ์ ์ฌ๋์ ๊ธฐ๋ค๋ฆฌ๋ฏ๋ก ์ ํํ ๋๊ฐ ๋จผ์ ๊นจ์ด๋ ์ง ๊ฒฐ์ ํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ทธ๋ฌํ ์ํฉ์ ๋ง๋ค์ด๋ด๊ธฐ๋ง ํ๋ฉด ์์คํ ์ด ๋ฌด์์ ์์๋ก ๊ทธ๋ค์ ๊นจ์ธ ๊ฒ์ ๋๋ค.
์ด
์ถ์ฒ : habr.com