์ธ์ ๊ฐ๋ ๋ถํ์ํ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ์ ๊ฑฐํ๋ ๊ฒ์ด DBMS์ ์ค์ํ ์์ ์ค ํ๋๊ฐ ๋ ๊ฒ์ ๋๋ค[1]. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ถํ์ํ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์ ๋ ดํ ์คํ ๋ฆฌ์ง ์์คํ ์ผ๋ก ์ฎ๊ธฐ๋ ์ผ์ ์ค์ค๋ก ์ฒ๋ฆฌํด์ผ ํฉ๋๋ค. ์๋ฐฑ๋ง ๊ฐ์ ํ์ ์ญ์ ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ํนํ ์กฐ๊ฑด์ด ์๋ ค์ ธ ์๊ณ ์ ํฉํ ์์ธ์ด ์๋ ๊ฒฝ์ฐ ๋งค์ฐ ๊ฐ๋จํ ์์ ์ ๋๋ค. "DELETE FROM table1 WHERE col1 = :value" - ๋ฌด์์ด ๋ ๊ฐ๋จํ ์ ์์ต๋๊น?
๋น๋์ค :
-
์ ๋ ์ฒซ ํด๋ถํฐ, ์ฆ 2007๋ ๋ถํฐ Highload ํ๋ก๊ทธ๋จ ์์ํ์ ์์์ต๋๋ค.
-
์ ๋ 2005๋ ๋ถํฐ Postgres์ ํจ๊ปํ์ต๋๋ค. ๋ง์ ํ๋ก์ ํธ์์ ์ฌ์ฉํ์ต๋๋ค.
-
RuPostges์๋ 2007๋ ๋ถํฐ ๊ทธ๋ฃนํ๋์์ต๋๋ค.
-
์ฐ๋ฆฌ๋ Meetup์์ 2100๋ช ์ด์์ ์ฐธ๊ฐ์๋ก ์ฑ์ฅํ์ต๋๋ค. ์ค๋ซ๋์ ์ํ๋์์ค์ฝ์ ์ถ์๋นํ ๋ด์์ ์ด์ด ์ธ๊ณ XNUMX์๋ค.
-
์ ๋ ๋ช ๋ ๋์ ์บ๋ฆฌํฌ๋์์์ ์ด์์ต๋๋ค. ๋๋ ๋๊ธฐ์ ์ ํฌํจํ์ฌ ๋ฏธ๊ตญ ํ์ฌ์ ๋ ๋ง์ด ๊ฑฐ๋ํฉ๋๋ค. ๊ทธ๋ค์ Postgres์ ํ์ฑ ์ฌ์ฉ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ์ข ๋ฅ์ ํฅ๋ฏธ๋ก์ด ๊ฒ๋ค์ด ์์ต๋๋ค.
๋ฌด์ธ๊ฐ๋ฅผ ํ๊ณ ์๋ค๋ฉด ๋๋๋ก Postgres ์ฃผ๋ณ์ ์ด๋ค ์ข ๋ฅ์ ํ๋ฌ๊ทธ๊ฐ ์์ต๋๋ค. ๊ด๋ฆฌ์๊ฐ ํ ์คํธ ์คํ ๋๋ฅผ ์ค์ ํ๊ฑฐ๋ DBA๊ฐ ์๋ตํ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๋ํ ๊ฐ๋ฐ, ํ ์คํธ ๋ฐ ๊ด๋ฆฌ ํ๋ก์ธ์ค์์ ์ด๋ฌํ ๋ณ๋ชฉ ํ์์ ๋ฐ๊ฒฌํ๊ณ ์๋ํ ๋ฐ ์๋ก์ด ์ ๊ทผ ๋ฐฉ์์ ํตํด ์ด๋ฅผ ์ ๊ฑฐํ๋ ค๊ณ ํฉ๋๋ค.
์ ๋ ์ต๊ทผ์ ๋ก์ค์ค์ ค๋ ์ค์ VLDB์ ์์์ต๋๋ค. ์ด๊ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ดํ ๊ฐ์ฅ ํฐ ํ์์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ผ๋ก๋ DBMS๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ฟ๋ง ์๋๋ผ ์๋์ผ๋ก ์ญ์ ํ ๊ฒ์ด๋ผ๋ ๋ณด๊ณ ๋ ์์๋ค. ์ด๊ฒ์ ์๋ก์ด ์ฃผ์ ์ ๋๋ค.
์ ํ๋ฐ์ดํธ ์ธ๊ณ์๋ ์ ์ ๋ ๋ง์ ๋ฐ์ดํฐ๊ฐ ์์ต๋๋ค. ์ฆ, 1ํํ๋ฐ์ดํธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ์ฌ ์ ์ธ๊ณ์ 000์ ํ๋ฐ์ดํธ ์ด์์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋์ด ์๋ ๊ฒ์ผ๋ก ์ด๋ฏธ ์ถ์ ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ์ ๋ ๋ง์ด ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ผ๋ก ๋ฌด์์ํด์ผํฉ๋๊น? ๋น์ฐํ ์ ๊ฑฐํด์ผ ํฉ๋๋ค. ๋ค์์ ์ด ํฅ๋ฏธ๋ก์ด ๋ณด๊ณ ์์ ๋ํ ๋งํฌ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ง๊ธ๊น์ง ์ด๊ฒ์ DBMS์์ ๊ตฌํ๋์ง ์์์ต๋๋ค.
๋์ ์ธ๋ ์ฌ๋์ ๋ ๊ฐ์ง๋ฅผ ์ํฉ๋๋ค. ๊ทธ๋ค์ ์ฐ๋ฆฌ๊ฐ ์ญ์ ํ๊ธฐ๋ฅผ ์ํ๋ฏ๋ก ๊ธฐ์ ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ ํ ์ ์์ด์ผ ํฉ๋๋ค.
๋ค์์ ๋งํ ๊ฒ์ ๋ง์ ์ค์ ์ํฉ์ ํฌํจํ๋ ์ถ์์ ์ธ ์ํฉ์ ๋๋ค. ์ฆ, ์ ์ ์ฃผ๋ณ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ฌ๋ฌ ๋ฒ, ์๋ ๋์ ์ค์ ๋ก ์ผ์ด๋ ์ผ์ ํธ์งํ ๊ฒ์ ๋๋ค. ๊ฐํด๋ ์ด๋์๋ ์๊ณ ๋ชจ๋ ์ฌ๋์ด ํญ์ ๊ฐํด๋ฅผ ๋ฐ์ต๋๋ค.
์ฑ์ฅํ๊ณ ์๋ ๊ธฐ๋ฐ ๋๋ ์ฌ๋ฌ ๊ธฐ๋ฐ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ถ ๊ธฐ๋ก์ ๋ถ๋ช ํ ์ฐ๋ ๊ธฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด ์ฌ์ฉ์๊ฐ ๊ทธ๊ณณ์์ ์์ ์ ์์ํ์ง๋ง ์๋ฃํ์ง ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ผ๋ง ํ ์ฐ๋ฆฌ๋ ์ด ๋ฏธ์์ฑํ์ ๋ ์ด์ ์ ์ฅํ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋ฉ๋๋ค. ์ฆ, ๊ณต๊ฐ ์ ์ฝ, ์ฑ๋ฅ ํฅ์ ๋ฑ์ ์ํด ์ผ๋ถ ์ฐ๋ ๊ธฐ๋ฅผ ์ฒญ์ํ๊ณ ์ถ์ต๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์์ ์ ํน์ ํญ๋ชฉ, ์ผ๋ถ ํ ์ด๋ธ์ ํน์ ํ ์ญ์ ๋ฅผ ์๋ํํ๋ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ค๋ ์ฐ๋ฆฌ๊ฐ ์ด์ผ๊ธฐ ํ ์์ฒญ, ์ฆ ์ฐ๋ ๊ธฐ ์ ๊ฑฐ์ ๊ดํ ์์ฒญ์ด ์์ต๋๋ค.
์๋ จ๋ ๊ฐ๋ฐ์์๊ฒ ์์ ์ ์์ฒญํ์ต๋๋ค. ๊ทธ๋์ด ์์ฒญ์ ๋ฐ์ ์ง์ ํ์ธํ์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค. ์คํ ์ด์ง ํ ์คํธ - ๋ชจ๋ ๊ฒ์ด ์ ์์ ๋๋ค. ๋กค์์ - ๋ชจ๋ ๊ฒ์ด ์๋ํฉ๋๋ค. ํ๋ฃจ์ ํ ๋ฒ ์คํํฉ๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ ์์ ๋๋ค.
๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์ ์ ์ปค์ง๋๋ค. Daily DELETE๊ฐ ์กฐ๊ธ ๋ ๋๋ฆฌ๊ฒ ์๋ํ๊ธฐ ์์ํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ด์ ๋ง์ผํ ํ์ฌ๊ฐ ์๊ณ ํธ๋ํฝ์ด ๋ช ๋ฐฐ ๋ ์ปค์ง ๊ฒ์ด๋ผ๋ ๊ฒ์ ์ดํดํ๋ฏ๋ก ๋ถํ์ํ ๊ฒ์ ์ผ์์ ์ผ๋ก ์ค๋จํ๊ธฐ๋ก ๊ฒฐ์ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋์๊ฐ๋ ๊ฒ์ ์์ผ์ญ์์ค.
๋ช ๋ฌ ํ ๊ทธ๋ค์ ๊ธฐ์ตํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฐ๋ฐ์๊ฐ ๊ทธ๋ง ๋๊ฑฐ๋ ๋ค๋ฅธ ์ผ๋ก ๋ฐ์๋ฉด ๋ค๋ฅธ ์ฌ๋์๊ฒ ๋ฐํํ๋๋ก ์ง์ํ์ต๋๋ค.
๊ทธ๋ ๊ฐ๋ฐ๊ณผ ์คํ ์ด์ง์ ํ์ธํ์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ ์์ ๋๋ค. ๋น์ฐํ ์์ธ ๊ฒ์ ์ ๋ฆฌํด์ผ ํฉ๋๋ค. ๊ทธ๋ ๋ชจ๋ ๊ฒ์ด ์๋ํ๋์ง ํ์ธํ์ต๋๋ค.
๋ค์์ ์ด๋ป๊ฒ ๋ฉ๋๊น? ๊ทธ๋ฐ ๋ค์ ๋ชจ๋ ๊ฒ์ด ์ฐ๋ฆฌ๋ฅผ ์ํด ๋ฌด๋์ง๋๋ค. ์ด๋ ์๊ฐ ๋ชจ๋ ๊ฒ์ด ๋ฌด๋์ง๋๋ก ๋จ์ด์ง๋ค. ๋ชจ๋๊ฐ ์ถฉ๊ฒฉ์ ๋ฐ๊ณ ์์ผ๋ฉฐ ์๋ฌด๋ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๊ฐ ์ด DELETE์ ์๋ค๋ ๊ฒ์ด ๋ฐํ์ก์ต๋๋ค.
๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์? ๋ค์์ ์๋ชป๋์์ ์ ์๋ ํญ๋ชฉ์ ๋ชฉ๋ก์ ๋๋ค. ์ด ์ค ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ๋ฌด์์ ๋๊น?
-
์๋ฅผ ๋ค์ด ๊ฒํ ๊ฐ ์์์ต๋๋ค. ์ฆ, DBA ์ ๋ฌธ๊ฐ๊ฐ ๊ฒํ ํ์ง ์์์ต๋๋ค. ๊ทธ๋ ์๋ จ๋ ๋์ผ๋ก ์ฆ์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ ๊ฒ์ด๋ฉฐ, ๊ฒ๋ค๊ฐ ์๋ฐฑ๋ง ๋ผ์ธ์ด ์ถ์ ๋ prod์ ์ ๊ทผํ ์ ์์ต๋๋ค.
-
๋ญ๊ฐ ์๋ชป ํ์ธํ์ ์๋ ์์ต๋๋ค.
-
ํ๋์จ์ด๊ฐ ๊ตฌ์์ด์ด์ ์ด ๊ธฐ๋ฐ์ ์ ๊ทธ๋ ์ด๋ํด์ผ ํ ์๋ ์์ต๋๋ค.
-
๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ฒด์ ๋ฌธ์ ๊ฐ ์์ด Postgres์์ MySQL๋ก ์ด๋ํด์ผ ํฉ๋๋ค.
-
์๋๋ฉด ์๋์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒ์ผ ์๋ ์์ต๋๋ค.
-
์์ ์กฐ์ง์ ์ค์๊ฐ ์์ด์ ๋๊ตฐ๊ฐ๋ฅผ ํด๊ณ ํ๊ณ ์ต๊ณ ์ ์ฌ๋์ ๊ณ ์ฉํด์ผ ํฉ๋๊น?
DBA ํ์ธ์ด ์์์ต๋๋ค. DBA๊ฐ ์๋ค๋ฉด ๊ทธ๋ ์ด๋ฌํ ์๋ฐฑ๋ง ์ค์ ๋ณด๊ณ ์คํ ์์ด๋ "๊ทธ๋ค์ ๊ทธ๋ ๊ฒ ํ์ง ์์ต๋๋ค."๋ผ๊ณ ๋งํ ๊ฒ์ ๋๋ค. ์ด ์ฝ๋๊ฐ GitLab, GitHub์ ์๊ณ ์ฝ๋ ๊ฒํ ํ๋ก์ธ์ค๊ฐ ์๊ณ DBA์ ์น์ธ ์์ด ์ด ์์ ์ด ํ๋ก๋์ ์์ ์ํ๋๋ ๊ทธ๋ฐ ์ผ์ด ์๋ค๊ณ ๊ฐ์ ํ๋ฉด DBA๋ ๋ถ๋ช ํ ๋ค์๊ณผ ๊ฐ์ด ๋งํ ๊ฒ์ ๋๋ค. .โ
๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๋์คํฌ IO์ ๋ฌธ์ ๊ฐ ์๊ณ ๋ชจ๋ ํ๋ก์ธ์ค๊ฐ ๋ฏธ์ณ ๊ฐ๊ณ ์ ๊ธ์ด์์ ์ ์์ผ๋ฉฐ ๋ช ๋ถ ๋์ autovacuum์ ์ฐจ๋จํ ๊ฒ์ด๋ฏ๋ก ์ข์ง ์๋ค๊ณ ๋งํ ๊ฒ์ ๋๋ค.
๋ ๋ฒ์งธ ์ค์ - ๊ทธ๋ค์ ์๋ชป๋ ์ฅ์๋ฅผ ํ์ธํ์ต๋๋ค. ์ฐ๋ฆฌ๋ prod์ ๋ง์ ์ ํฌ ๋ฐ์ดํฐ๊ฐ ์ถ์ ๋๋ค๋ ์ฌ์ค์ ๋์ค์ ๋ณด์์ง๋ง ๊ฐ๋ฐ์๋ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ์ถ์ ํ์ง ์์๊ณ ์คํ ์ด์ง ์ค์ ์๋ฌด๋ ์ด๋ฌํ ์ ํฌ๋ฅผ ์์ฑํ์ง ์์์ต๋๋ค. ๊ทธ์ ๋ฐ๋ผ 1๊ฐ์ ๋์ฌ๊ฐ ์์๊ฐ์ ํ๋ ธ๋ค.
์ฐ๋ฆฌ๋ ํ ์คํธ๊ฐ ์ฝํ๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ์ฆ, ๊ตฌ์ถ๋ ํ๋ก์ธ์ค๊ฐ ๋ฌธ์ ๋ฅผ ํฌ์ฐฉํ์ง ๋ชปํฉ๋๋ค. ์ ์ ํ DB ์คํ์ด ์ํ๋์ง ์์์ต๋๋ค.
์ด์์ ์ธ ์คํ์ ๋ฐ๋์งํ๊ฒ๋ ๋์ผํ ์ฅ๋น์์ ์ํ๋ฉ๋๋ค. ํญ์ ๋์ผํ ์ฅ๋น์์ ์ด ์์ ์ ์ํํ ์ ์๋ ๊ฒ์ ์๋์ง๋ง ์ ์ฒด ํฌ๊ธฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต์ฌ๋ณธ์ด๋ผ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ์ด๊ฒ์ด ์ ๊ฐ ๋ช ๋ ๋์ ์ค๊ตํด ์จ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ XNUMX๋ ์ ์ ์ ๊ฐ ์ด๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ ์ ์ด ์์ต๋๋ค. YouTube์์ ๋ชจ๋ ๋ณผ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ ์ฅ๋น๊ฐ ๋ถ๋์ผ๊น์? ๋ณด์๋ฉด ๋๊ธฐ ์๊ฐ์ด ๋ฐ์์ต๋๋ค. ํ์ฉ๋๊ฐ 100%์ธ ๊ฒ์ ํ์ธํ์ต๋๋ค. ๋ฌผ๋ก ์ด๊ฒ์ด ์ต์ NVMe ๋๋ผ์ด๋ธ๋ผ๋ฉด ํจ์ฌ ์ฌ์ธ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ง๋ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์์ ๋์ง ์์ ๊ฒ์ ๋๋ค.
ํด๋ผ์ฐ๋๊ฐ ์๋ ๊ฒฝ์ฐ ์ ๊ทธ๋ ์ด๋๊ฐ ์ฝ๊ฒ ์ํ๋ฉ๋๋ค. ์ ํ๋์จ์ด์์ ์ ๋ณต์ ๋ณธ์ ์์ฑํ์ต๋๋ค. ์ ํ. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์์ฃผ ์ฝ์ต๋๋ค.
์ด๋ป๊ฒ๋ ๋ ์์ ๋์คํฌ๋ฅผ ๋ง์ง ์ ์์ต๋๊น? ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์์๋ DBA์ ๋์์ ๋ฐ์ ์ฒดํฌํฌ์ธํธ ํ๋์ด๋ผ๋ ํน์ ์ฃผ์ ์ ๋ํด ์์๋ด ๋๋ค. ์ฐ๋ฆฌ๋ ์ฒดํฌํฌ์ธํธ ํ๋์ ํ์ง ์์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
์ฒดํฌํฌ์ธํธ๋? ๋ชจ๋ DBMS์ ์์ต๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ๋ณ๊ฒฝ๋๋ ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ ๋์คํฌ์ ์ฆ์ ๊ธฐ๋ก๋์ง ์์ต๋๋ค. ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋์๋ค๋ ์ ๋ณด๋ ๋จผ์ ๋ฏธ๋ฆฌ ์ฐ๊ธฐ ๋ก๊ทธ์ ๊ธฐ๋ก๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ ์์ ์์ DBMS๋ ์ค์ ํ์ด์ง๋ฅผ ๋์คํฌ์ ๋คํํ ๋๋ผ๊ณ ๊ฒฐ์ ํ์ฌ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด REDO๋ฅผ ๋ ์ํํ ์ ์์ต๋๋ค. ์ฅ๋๊ฐ ๊ฐ์์. ์ฐ๋ฆฌ๊ฐ ์ฃฝ์ผ๋ฉด ๋ง์ง๋ง ์ฒดํฌ ํฌ์ธํธ์์ ๊ฒ์์ ์์ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ DBMS๋ ์ด๋ฅผ ๊ตฌํํฉ๋๋ค.
Postgres์ ์ค์ ์ด ๋ค์ณ์ ธ ์์ต๋๋ค. 10-15๋ ๋ ๋ฐ์ดํฐ ๋ฐ ํธ๋์ญ์ ๋ณผ๋ฅจ์ ์ํด ์ค๊ณ๋์์ต๋๋ค. ์ฒดํฌํฌ์ธํธ๋ ์์ธ๋ ์๋๋๋ค.
๋ค์์ Postgres ์ ๊ฒ ๋ณด๊ณ ์, ์ฆ ์๋ ์ํ ์ ๊ฒ์ ์ ๋ณด์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ ๋ช ํ ๋ผ๋ฐ์ดํธ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฑฐ์ 90%์ ๊ฒฝ์ฐ์ ์ฒดํฌํฌ์ธํธ๋ฅผ ๊ฐ์ ํ๋ ๊ฒ์ ์ ๋ณผ ์ ์์ต๋๋ค.
๋ฌด์จ ๋ป์ด์์? ๊ฑฐ๊ธฐ์๋ ๋ ๊ฐ์ง ์ค์ ์ด ์์ต๋๋ค. ์ฒดํฌํฌ์ธํธ๋ ์๋ฅผ ๋ค์ด 10๋ถ ํ์ ์ ํ ์๊ฐ์ ๋๋ฌํ ์ ์์ต๋๋ค. ๋๋ ๊ฝค ๋ง์ ๋ฐ์ดํฐ๊ฐ ์ฑ์์ก์ ๋ ์ฌ ์๋ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก max_wal_saze๋ 1GB๋ก ์ค์ ๋ฉ๋๋ค. ์ค์ ๋ก ์ด๊ฒ์ Postgres์์ 300-400MB ์ดํ์ ์ค์ ๋ก ๋ฐ์ํฉ๋๋ค. ๋๋ฌด ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ฒดํฌํฌ์ธํธ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ฌด๋ ๊ทธ๊ฒ์ ์กฐ์ ํ์ง ์๊ณ ์๋น์ค๊ฐ ์ฑ์ฅํ๊ณ ํ์ฌ๊ฐ ๋ง์ ๋์ ๋ฒ๊ณ ๋ง์ ํธ๋์ญ์ ์ด ๋ฐ์ํ๋ฉด ์ฒดํฌ ํฌ์ธํธ๋ 30 ๋ถ์ ํ ๋ฒ, ๋๋ก๋ XNUMX ์ด๋ง๋ค, ๋๋ก๋ ๊ฒน์น๊ธฐ๋ํฉ๋๋ค. ์ด๊ฒ์ ๋งค์ฐ ๋์ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ๋ ์์ฃผ ์ค๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ฆ, max_wal_size๋ฅผ ๋์ผ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ์์ฃผ ์ฌ ๊ฒ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๋ ์ ํํ๊ฒ ์ํํ๋ ๋ฐฉ๋ฒ, ์ฆ ํน์ ๋ฐ์ดํฐ๋ฅผ ๋ช ํํ๊ฒ ๊ธฐ๋ฐ์ผ๋ก ์ค์ ์ ํ์ ๋ํ ๊ฒฐ์ ์ ๋ด๋ฆฌ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ ์ฒด ๋ฐฉ๋ฒ๋ก ์ ๊ฐ๋ฐํ์ต๋๋ค.
๋ฐ๋ผ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ ๊ฐ์ง ์ผ๋ จ์ ์คํ์ ์ํํ๊ณ ์์ต๋๋ค.
์ฒซ ๋ฒ์งธ ์๋ฆฌ์ฆ - max_wal_size๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋๋์ ์ธ ์์ ์ ํ๊ณ ์์ต๋๋ค. ๋จผ์ ๊ธฐ๋ณธ ์ค์ ์ธ 1GB์์ ์ํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์๋ฐฑ๋ง ์ค์ ๋๊ท๋ชจ DELETE๋ฅผ ์ํํฉ๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ผ๋ง๋ ํ๋ ์ง ์ ์ ์์ต๋๋ค. ๋์คํฌ IO๊ฐ ๋งค์ฐ ๋์๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. ์์ฑํ WAL์ ์๋ฅผ ํ์ธํฉ๋๋ค. ์ด๋ ๋งค์ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฒดํฌํฌ์ธํธ๊ฐ ๋ช ๋ฒ ๋ฐ์ํ๋์ง ๋ด ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ด ์ข์ง ์๋ค๋ ๊ฒ์ ์๋๋ค.
๋ค์์ผ๋ก max_wal_size๋ฅผ ๋๋ฆฝ๋๋ค. ๋ฐ๋ณตํฉ๋๋ค. ์ฆ๊ฐํ๊ณ ๋ฐ๋ณตํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๋ฌ ๋ฒ. ์์น์ ์ผ๋ก 10, 1, 2, 4๊ธฐ๊ฐ๋ฐ์ดํธ์ธ 8ํฌ์ธํธ๊ฐ ์ข์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํน์ ์์คํ ์ ๋์์ ์ดํด๋ด ๋๋ค. ์ฌ๊ธฐ์ ์ฅ๋น๋ ์จ ํ๋ก๋์ ๊ณผ ๊ฐ์์ผ ํฉ๋๋ค. ๋์ผํ ๋์คํฌ, ๋์ผํ ์์ ๋ฉ๋ชจ๋ฆฌ ๋ฐ ๋์ผํ Postgres ์ค์ ์ด ์์ด์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฐ ์์ผ๋ก ์ฐ๋ฆฌ๋ ์์คํ ์ ๊ตํํ ๊ฒ์ด๊ณ , ๋ถ๋ ๋๋ DELETE์ ๊ฒฝ์ฐ DBMS๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง, ์ด๋ป๊ฒ ์ฒดํฌํฌ์ธํธ๋ฅผ ์ง์ ํ๋์ง ์ ์ ์์ต๋๋ค.
๋ฌ์์์ด๋ก ๊ฒ๋ฌธ์๋ ๊ฒ๋ฌธ์์ ๋๋ค.
์: ์์ธ๋ณ๋ก ์๋ฐฑ๋ง ๊ฐ์ ํ์ DELETE, ํ์ ํ์ด์ง ์ ์ฒด์ "๋ถ์ฐ"๋ฉ๋๋ค.
๋ค์์ ์์ ๋๋ค. ์ด๊ฒ์ ์ฝ๊ฐ์ ๊ธฐ๋ฐ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ max_wal_size์ ๋ํด 1GB์ ๊ธฐ๋ณธ ์ค์ ์ ์ฌ์ฉํ๋ฉด ๋์คํฌ๊ฐ ๊ธฐ๋ก์ ์ํด ์ ๋ฐ์ผ๋ก ์ด๋ํ๋ค๋ ๊ฒ์ด ๋งค์ฐ ๋ถ๋ช ํฉ๋๋ค. ์ด ์ฌ์ง์ ๋งค์ฐ ์ํ ํ์์ ์ ํ์ ์ธ ์ฆ์์ ๋๋ค. ์ฆ, ๊ทธ๋ ์ ๋ง ๊ธฐ๋ถ์ด ๋๋นด์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋์ ๋จ์ผ ์์ ์ด ์์๊ณ ์๋ฐฑ๋ง ์ค์ DELETE๊ฐ ์์์ต๋๋ค.
์ด๋ฌํ ์์ ์ด prod์์ ํ์ฉ๋๋ฉด ํ๋์ DELETE๊ฐ ์ ๋ฐ์์ ์ฐ๋ฆฌ๋ฅผ ์ฃฝ์ด๋ ๊ฒ์ด ๋ถ๋ช ํ๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ๊ทธ๋ฅ ๋์ธ ๊ฒ์ ๋๋ค.
๋ํ 16GB์ ๊ฒฝ์ฐ ์ด๋ฏธ ์น์๊ฐ ์ฌ๋ผ์ง ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค. ์ฆ, ์ฐ๋ฆฌ๋ ์ฒ์ฅ์ ๋๋๋ฆฌ๊ณ ์์ง๋ง ๊ทธ๋ ๊ฒ ๋์์ง๋ ์์ต๋๋ค. ๊ฑฐ๊ธฐ์๋ ์ฝ๊ฐ์ ์์ ๊ฐ ์์๋ค. ์ค๋ฅธ์ชฝ์ ๊ธฐ๋ก์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์์ ์ - ๋ ๋ฒ์งธ ๊ทธ๋ํ. ๊ทธ๋ฆฌ๊ณ 16GB์ผ ๋ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ์กฐ๊ธ ๋ ์ฝ๊ฒ ํธํกํ๊ณ ์์์ด ๋ถ๋ช ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ 64GB๊ฐ ์์ ํ ์ข์์ง ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ์ด๋ฏธ ์น์๊ฐ ๋ฐ์๋๊ณ ๋ค๋ฅธ ์์ ์์ ์ด์๋จ๊ณ ๋์คํฌ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ํ ์์๋ ๋ ๋ง์ ๊ธฐํ๊ฐ ์์ต๋๋ค.
์ ๊ทธ๋ด๊น์?
์กฐ๊ธ ๋ ์์ธํ ์์๋ณด๊ฒ ์ง๋ง ์ด ์ฃผ์ ์ธ ์ฒดํฌํฌ์ธํธ ํ๋ ๋ฐฉ๋ฒ์ ์ ์ฒด ๋ณด๊ณ ์๊ฐ ๋ ์ ์์ผ๋ฏ๋ก ๋ง์ด ๋ก๋ํ์ง๋ ์๊ฒ ์ง๋ง ์ด๋ค ์ด๋ ค์์ด ์๋์ง ์กฐ๊ธ ๊ฐ๋ตํ๊ฒ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
์ฒดํฌ ํฌ์ธํธ๊ฐ ๋๋ฌด ์์ฃผ ๋ฐ์ํ๊ณ ๋ผ์ธ์ ์์ฐจ์ ์ผ๋ก ์ ๋ฐ์ดํธํ์ง ์๊ณ ์ธ๋ฑ์ค๋ก ์ฐพ์ผ๋ฉด ์ ์ฒด ํ ์ด๋ธ์ ์ญ์ ํ์ง ์๊ธฐ ๋๋ฌธ์ ์ฒ์์๋ ์ฒซ ๋ฒ์งธ ํ์ด์ง๋ฅผ ํฐ์น ํ ๋ค์ ์ฒ ๋ฒ์งธ ํ์ด์ง๋ฅผ ํฐ์นํ์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒ์์ผ๋ก ๋์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒซ ๋ฒ์งธ ํ์ด์ง๋ฅผ ๋ฐฉ๋ฌธํ๋ ์ฌ์ด์ ์ฒดํฌํฌ์ธํธ๊ฐ ์ด๋ฏธ ๋์คํฌ์ ์ ์ฅํ๋ค๋ฉด ๋ ๋ฒ์งธ๋ก ๋๋ฝํ์ก๊ธฐ ๋๋ฌธ์ ๋ค์ ์ ์ฅํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ฒดํฌํฌ์ธํธ๊ฐ ๊ทธ๊ฒ์ ์ฌ๋ฌ ๋ฒ ์ ์ฅํ๋๋ก ๊ฐ์ ํ ๊ฒ์ ๋๋ค. ๊ทธ์๊ฒ ์ค๋ณต ์์ ์ด ์ด๋ป๊ฒ ์์ต๋๊น?
๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ด ์ ๋ถ๋ ์๋๋๋ค. ํ์ด์ง๋ Postgres์์ 8KB์ด๊ณ Linux์์ 4KB์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ full_page_writes ์ค์ ์ด ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋์ด ์์ต๋๋ค. ๋๋ฉด ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ํ์ด์ง์ ์ ๋ฐ ๋ง ์ ์ฅ ๋ ์ํ์ด ์๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋ง์ต๋๋ค.
ํฌ์๋ ๋ก๊ทธ์ WAL์ ๊ธฐ๋กํ๋ ๋์์ ์ฒดํฌํฌ์ธํธ๊ฐ ์๊ณ ํ์ด์ง๋ฅผ ์ฒ์์ผ๋ก ๋ณ๊ฒฝํ ๋ ํ์ด์ง ์ ์ฒด, ์ฆ 8KB ๋ชจ๋๊ฐ ํฌ์๋ ๋ก๊ทธ์ ๋ค์ด๊ฐ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๋ฌด๊ฒ๊ฐ 100๋ฐ์ดํธ์ธ ์ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ ์ฒด ํ์ด์ง๋ฅผ ์ ์ด์ผ ํฉ๋๋ค.
ํ์ ๋ณ๊ฒฝ์์๋ ํน์ ํํ๋ง ์์ ๊ฒ์ด์ง๋ง ์ฒ์์ผ๋ก ๋ชจ๋ ๊ฒ์ ๊ธฐ๋กํฉ๋๋ค.
๋ฐ๋ผ์ ์ฒดํฌํฌ์ธํธ๊ฐ ๋ค์ ๋ฐ์ํ๋ฉด ๋ชจ๋ ๊ฒ์ ์ฒ์๋ถํฐ ๋ค์ ์์ํ๊ณ ์ ์ฒด ํ์ด์ง๋ฅผ ํธ์ํด์ผ ํฉ๋๋ค. ๋น๋ฒํ ์ฒดํฌํฌ์ธํธ๋ฅผ ์ฌ์ฉํ๋ฉด ๋์ผํ ํ์ด์ง๋ฅผ ํต๊ณผํ ๋ full_page_writes = on์ด ๊ฐ๋ฅํ ๊ฒ๋ณด๋ค ๋ง์ ๊ฒ์ ๋๋ค. ์ฆ, ๋ ๋ง์ WAL์ ์์ฑํฉ๋๋ค. ๋ ๋ง์ ์ ๋ณด๊ฐ ๋ณต์ ๋ณธ, ์์นด์ด๋ธ, ๋์คํฌ๋ก ์ ์ก๋ฉ๋๋ค.
๋ฐ๋ผ์ ๋ ๊ฐ์ง ์ค๋ณต์ด ์์ต๋๋ค.
max_wal_size๋ฅผ ๋๋ฆฌ๋ฉด ์ฒดํฌํฌ์ธํธ์ wal ์์ฑ์ ๋ชจ๋์๊ฒ ๋ ์ฌ์์ง๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ํ๋ฅญํฉ๋๋ค.
ํ ๋ผ๋ฐ์ดํธ๋ฅผ ๋ฃ๊ณ ๊ทธ๊ฒ๊ณผ ํจ๊ป ์ด์. ๋์ ์ ์ ๋ฌด์์ ๋๊น? ์ฒดํฌ ํฌ์ธํธ๊ฐ ์ค๋ ์ ์ด์๊ณ ์ด๋ฏธ ๋ง์ ๊ฒ์ด ๋ฐ๋์๊ธฐ ๋๋ฌธ์ ์คํจํ๋ฉด ๋ช ์๊ฐ ๋์ ์ฌ๋ผ๊ฐ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ ๋์ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด ๋ชจ๋ REDO๋ฅผ ์ํํด์ผ ํฉ๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ ๋ฒ์งธ ์ผ๋ จ์ ์คํ์ ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์์ ์ ์ํํ๊ณ ์ฒดํฌํฌ์ธํธ๊ฐ ์๋ฃ๋๋ ค๊ณ ํ ๋๋ฅผ ํ์ธํ๊ณ ์๋์ ์ผ๋ก kill -9 Postgres๋ฅผ ์ํํฉ๋๋ค.
๊ทธ๋ฐ ๋ค์ ๋ค์ ์์ํ๊ณ ์ด ์ฅ๋น์์ ์ผ๋ง๋ ์ค๋ ์์นํ ์ง, ์ฆ ์ด ๋์ ์ํฉ์์ ์ผ๋ง๋ REDOํ ๊ฒ์ธ์ง ํ์ธํฉ๋๋ค.
๋ ๋ฒ ์ํฉ์ด ๋์๋ค๋ ์ ์ ์ ์ํ๊ฒ ์ต๋๋ค. ์ฒซ์งธ, ์ฒดํฌํฌ์ธํธ๊ฐ ๋๋๊ธฐ ์ง์ ์ ์ถ๋ฝํ๊ธฐ ๋๋ฌธ์ ์์ ๊ฒ์ด ๋ง์ต๋๋ค. ๋์งธ, ์ฐ๋ฆฌ๋ ๋๋์ ์ธ ์์ ์ ํผ์ณค์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฒดํฌํฌ์ธํธ๊ฐ ์๊ฐ ์ด๊ณผ๋ ๊ฒฝ์ฐ ๋ง์ง๋ง ์ฒดํฌํฌ์ธํธ ์ดํ WAL์ด ๋ ์ ๊ฒ ์์ฑ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ฆ, ์ด์ค ํจ์์ ๋๋ค.
๋ค์ํ max_wal_size ํฌ๊ธฐ์ ๋ํด ์ด๋ฌํ ์ํฉ์ ์ธก์ ํ๊ณ max_wal_size๊ฐ 64GB์ธ ๊ฒฝ์ฐ ์ด์ค ์ต์ ์ ๊ฒฝ์ฐ 10๋ถ ๋์ ์ฌ๋ผ๊ฐ ๊ฒ์์ ์ดํดํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ์๊ฒ ์ ํฉํ์ง ์๋์ง๋ฅผ ์๊ฐํฉ๋๋ค. ์ด๊ฒ์ ๋น์ฆ๋์ค ์ง๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ๋ ์ด ์ฌ์ง์ ๋น์ฆ๋์ค ์์ฌ๊ฒฐ์ ์ฑ ์์์๊ฒ ๋ณด์ฌ์ฃผ๊ณ โ๋ฌธ์ ๊ฐ ์๊ฒผ์ ๋ ๊ธฐ๊ปํด์ผ ์ผ๋ง๋ ์ค๋ ๋์์์ ์ ์์ต๋๊น? ์ต์ ์ ์ํฉ์์ 3~5๋ถ ๋์์์ ์ ์์๊น? ๊ทธ๋ฆฌ๊ณ ๋น์ ์ ๊ฒฐ์ ์ ๋ด๋ฆฝ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ ํฅ๋ฏธ๋ก์ด ์ ์ด ์์ต๋๋ค. ์ปจํผ๋ฐ์ค์์ Patroni์ ๋ํ ๋ช ๊ฐ์ง ๋ณด๊ณ ์๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋ง๋ ๋น์ ์ ๊ทธ๊ฒ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๊ฒ์ Postgres์ ์๋ ์ฅ์ ์กฐ์น์ ๋๋ค. GitLab๊ณผ Data Egret์ด ์ด์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ 30์ด ์์ ์ค๋ ์๋ ์ฅ์ ์กฐ์น๊ฐ ์์ผ๋ฉด 10๋ถ ๋์ ๋์ ์์ ์ ์์ง ์์๊น์? ์ด ์์ ์์ ๋ณต์ ๋ณธ์ผ๋ก ์ ํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๊ฒ์ ๋ ผ์ ์ ๋๋ค. ๋๋ ๋ช ํํ ๋๋ต์ ๋ชจ๋ฅธ๋ค. ๋๋ ์ด ์ฃผ์ ๊ฐ ์๊ธ ๋ณต๊ตฌ์ ๊ดํ ๊ฒ๋ง์ ์๋๋ผ๊ณ ์๊ฐํฉ๋๋ค.
์คํจ ํ ํ๋ณต ๊ธฐ๊ฐ์ด ๊ธธ๋ฉด ๋ค๋ฅธ ๋ง์ ์ํฉ์์ ๋ถํธํ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๊ฐ์ ์คํ์์ ์ฐ๋ฆฌ๊ฐ ๋ฌด์ธ๊ฐ๋ฅผ ํ ๋ ๋๋๋ก 10๋ถ์ ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค.
์๋ ์ฅ์ ์กฐ์น๊ฐ ์์ด๋ ๋๋ฌด ๋ฉ๋ฆฌ ๊ฐ์ง ์์ ๊ฒ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก 64, 100GB์ ๊ฐ์ ๊ฐ์ ์ข์ ๊ฐ์ ๋๋ค. ๋๋ก๋ ๋ ์ ํํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๊ฒ์ ๋ฏธ๋ฌํ ๊ณผํ์ ๋๋ค.
์๋ฅผ ๋ค์ด max_wal_size =1, 8๊ณผ ๊ฐ์ด ๋ฐ๋ณตํ๋ ค๋ฉด ๋๋ ์์ ์ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํด์ผ ํฉ๋๋ค. ๋ค๊ฐ ํด๋์ด. ๊ทธ๋ฆฌ๊ณ ๊ฐ์ ๊ธฐ์ง์์ ๋ค์ ํ๊ณ ์ถ์ง๋ง ์ด๋ฏธ ๋ชจ๋ ๊ฒ์ ์ญ์ ํ์ต๋๋ค. ๋ฌด์์ ํด์ผ ํฉ๋๊น?
๊ทธ๋ฐ ์ํฉ์์ ๋ฐ๋ณตํ๊ธฐ ์ํด ์ฐ๋ฆฌ๊ฐ ํ๋ ์ผ์ ๋ํด์๋ ๋์ค์ ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ๊ฐ์ฅ ์ ํํ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค.
ํ์ง๋ง ์ด ๊ฒฝ์ฐ์๋ ์ด์ด ์ข์์ต๋๋ค. ์ฌ๊ธฐ์ "BEGIN, DELETE, ROLLBACK"์ด๋ผ๊ณ ํ์๋ ๋๋ก DELETE๋ฅผ ๋ฐ๋ณตํ ์ ์์ต๋๋ค. ์ฆ, ์ฐ๋ฆฌ๊ฐ ์ง์ ์ทจ์ํ๋ฉด ๋ฐ๋ณตํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ฐ์ดํฐ๋ ๊ฐ์ ์์น์ ์์ ๊ฒ์ ๋๋ค. ๋ถํ์ด ์ค๋ฅด์ง๋ ์์ต๋๋ค. ์ด๋ฌํ DELETE๋ฅผ ๋ฐ๋ณตํ ์ ์์ต๋๋ค.
์ด DELETE with ROLLBACK์ ์ ์ ํ๊ฒ ๋ฐฐํฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉ์ด ์๋ ๊ฒฝ์ฐ์๋ ์ฒดํฌํฌ์ธํธ ํ๋์ ์ด์์ ์ ๋๋ค.
ํ๋์ ์ด "i"๋ก ์ ์๋ฅผ ๋ง๋ค์์ต๋๋ค. Postgres์๋ ์ ํธ๋ฆฌํฐ ์ด์ด ์์ต๋๋ค. ํน๋ณํ ์์ฒญํ์ง ์๋ ํ ๋ณด์ด์ง ์์ต๋๋ค. ์ด๋ค์ ctid, xmid, xmax์ ๋๋ค.
Ctid๋ ๋ฌผ๋ฆฌ์ ์ฃผ์์ ๋๋ค. ์ ๋ก ํ์ด์ง, ํ์ด์ง์ ์ฒซ ๋ฒ์งธ ํํ.
ROOLBACK ํ์ ํํ์ด ๊ฐ์ ์์น์ ๋จ์ ์์์ ์ ์ ์์ต๋๋ค. ์ฆ, ๋ค์ ์๋ํ๋ฉด ๊ฐ์ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค. ์ด๊ฒ์ด ์ค์ํ ๊ฒ์ ๋๋ค.
Xmax๋ ํํ์ ์ฌ๋ง ์๊ฐ์ ๋๋ค. ์คํฌํ๊ฐ ์ฐํ์ง๋ง Postgres๋ ํธ๋์ญ์ ์ด ๋กค๋ฐฑ๋ ๊ฒ์ ์๊ณ ์์ผ๋ฏ๋ก 0์ธ์ง ๋๋ ๋กค๋ฐฑ๋ ํธ๋์ญ์ ์ธ์ง๋ ์ค์ํ์ง ์์ต๋๋ค. ์ด๋ DELETE๋ฅผ ๋ฐ๋ณตํ๊ณ ์์คํ ๋์์ ๋๋ ์์ ์ ํ์ธํ ์ ์์์ ๋ํ๋ ๋๋ค. ๊ฐ๋ํ ์ฌ๋๋ค์ ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์คํ์ค์ ๋ง๋ค ์ ์์ต๋๋ค.
์ด๊ฒ์ ํ๋ก๊ทธ๋๋จธ์ ๊ดํ ๊ฒ์ ๋๋ค. DBA์ ๋ํด์๋ ๊ทธ๋ค์ ํญ์ ํ๋ก๊ทธ๋๋จธ๋ฅผ ๊พธ์ง์ต๋๋ค. "์ ๊ทธ๋ ๊ฒ ๊ธธ๊ณ ์ด๋ ค์ด ์์ ์ ์ํํฉ๋๊น?" ์ด๊ฒ์ ์์ ํ ๋ค๋ฅธ ์์ง ์ฃผ์ ์ ๋๋ค. ์์ ์๋ ๊ด๋ฆฌ๊ฐ ์์๊ณ ์ด์ ๋ ๊ฐ๋ฐ์ด์์ ๊ฒ์ ๋๋ค.
๋ถ๋ช ํ, ์ฐ๋ฆฌ๋ ์ฐ์ฐ์กฐ๊ฐ์ด ๋์ง ์์์ต๋๋ค. ์์์ต๋๋ค. ์๋ฐฑ๋ง ์ค์ ํ์ ๋ํด ์ด๋ฌํ DELETE๋ฅผ ๋ถ๋ถ์ผ๋ก ๋๋์ง ์๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. 20๋ถ ๋์ ์งํ๋๋ฉฐ ๋ชจ๋ ๊ฒ์ด ๋์ธ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ์ ๊ฐ์ค๋ฝ๊ฒ๋ ์๋ จ๋ ๊ฐ๋ฐ์๋ ์ค์๋ฅผ ์ ์ง๋ฆ ๋๋ค. ๋๊ธฐ์ ์์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
๊นจ๋ ๊ฒ์ด ์ ์ค์ํ๊ฐ์?
-
๋์คํฌ๊ฐ ๋จ๋จํ ๊ฒ์ ํ์ธํ๋ฉด ์๋๋ฅผ ๋ฆ์ถ์ญ์์ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๊ฐ ๋ง๊ฐ์ง๋ฉด ์ผ์ ์ค์ง๋ฅผ ์ถ๊ฐํ๊ณ ์ค๋กํ๋ง ์๋๋ฅผ ๋ฆ์ถ ์ ์์ต๋๋ค.
-
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ค๋ซ๋์ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ฐจ๋จํ์ง ์์ ๊ฒ์ ๋๋ค. ์ด๋ค ๊ฒฝ์ฐ์๋ ์ค์ํ์ง ์์ต๋๋ค. ์๋ฌด๋ ์์ ํ์ง ์๋ ์ค์ ์ฐ๋ ๊ธฐ๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ ํธ๋์ญ์ ์ด ์๋ฃ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฌ๊ธฐ ๋๋ฌธ์ autovacuum ์์ ์ ์ ์ธํ ๋ค๋ฅธ ์ฌ๋์ ์ฐจ๋จํ์ง ์์ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค. ๊ทธ๋ฌ๋ ๋ค๋ฅธ ์ฌ๋์ด ์์ฒญํ ์ ์๋ ๊ฒ์ ์ ๊ฑฐํ๋ฉด ์ฐจ๋จ๋๊ณ ์ผ์ข ์ ์ฐ์ ๋ฐ์์ด ๋ฐ์ํฉ๋๋ค. ์น์ฌ์ดํธ ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ๊ธด ๊ฑฐ๋๋ฅผ ํผํด์ผ ํฉ๋๋ค.
์ด๊ฑด ์ฌ๋ฏธ ์๋ค. ๋๋ ์ข ์ข ๊ฐ๋ฐ์๋ค์ด "์ด๋ค ํฉ ํฌ๊ธฐ๋ฅผ ์ ํํด์ผ ํฉ๋๊น?"๋ผ๊ณ ๋ฌป๋ ๊ฒ์ ๋ด ๋๋ค.
๋ฒ๋ค ํฌ๊ธฐ๊ฐ ํด์๋ก ํธ๋์ญ์ ์ค๋ฒํค๋, ์ฆ ํธ๋์ญ์ ์ผ๋ก ์ธํ ์ถ๊ฐ ์ค๋ฒํค๋๊ฐ ์์์ง๋ ๊ฒ์ ๋ถ๋ช ํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋์์ ์ด ํธ๋์ญ์ ์ ๋ํ ์๊ฐ์ด ๋์ด๋ฉ๋๋ค.
์์ฃผ ๊ฐ๋จํ ๊ท์น์ด ์์ต๋๋ค. ๊ฐ๋ฅํ ํ ๋ง์ด ๊ฐ์ ธ๊ฐ๋ ์ด๋น ์คํ ํ์ผ์ ๋์ง ๋ง์ญ์์ค.
์ ์ ๊น? ์ค๋ช ์ ๋งค์ฐ ๊ฐ๋จํ๊ณ ๋ชจ๋ ์ฌ๋, ์ฌ์ง์ด ๊ธฐ์ ์๊ฐ ์๋ ์ฌ๋๋ ์ดํดํ ์ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ฐ์์ ๋ด ๋๋ค. 50๋ฐ๋ฆฌ์ด๋ฅผ ๋ด ์๋ค. ๋ฌด์ธ๊ฐ๊ฐ ๋ฐ๋๋ฉด ์ฐ๋ฆฌ์ ๋์ด ๋ฐ์ํ ๊ฒ์ ๋๋ค. ์ ๋ค๋ฉด ๋ ์ด๋ ต์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฌด์ธ๊ฐ๊ฐ 100๋ฐ๋ฆฌ์ด ํ์ ์๋ตํ๋ฉด, ์๋ฅผ ๋ค์ด ๋ง์ฐ์ค๋ฅผ ํด๋ฆญํ๋๋ฐ 100๋ฐ๋ฆฌ์ด ํ์ ์๋ตํ๋ฉด ์ด๋ฏธ ์ฝ๊ฐ์ ์ง์ฐ์ ๋๋ผ๋ ๊ฒ์ ๋๋ค. ์ด๋ ์ด๋ฏธ ๋ธ๋ ์ดํฌ๋ก ์ธ์๋ฉ๋๋ค.
๋ฐ๋ผ์ ๋๋ ์์ ์ 10์ด ๋ฒ์คํธ๋ก ๋๋๋ฉด ๋๊ตฐ๊ฐ๋ฅผ ์ฐจ๋จํ ์ํ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ช ์ด ๋์ ์๋ํ ๊ฒ์ด๊ณ ์ฌ๋๋ค์ ์ด๋ฏธ ๊ทธ๊ฒ์ ์์์ฐจ๋ฆด ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ์ ๋ XNUMX์ด ์ด์ ํ์ง ์๋ ๊ฒ์ ์ ํธํฉ๋๋ค. ๊ทธ๋ฌ๋ ๋์์ ํธ๋์ญ์ ์ค๋ฒํค๋๊ฐ ๋์ ๋๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋ฏธ์ธํ๊ฒ ๋ถํดํ์ง ๋ง์ญ์์ค. ๋ฒ ์ด์ค๊ฐ ๋ ๋จ๋จํด์ง๊ณ ๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ๋ ํฉ์ ํฌ๊ธฐ๋ฅผ ์ ํํฉ๋๋ค. ๊ฐ๊ฐ์ ๊ฒฝ์ฐ์ ๋ค๋ฅด๊ฒ ํ ์ ์์ต๋๋ค. ์๋ํํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ํ ํฉ ์ฒ๋ฆฌ์ ํจ์จ์ฑ์ ํ์ ํฉ๋๋ค. ์ฆ, ํ๋์ ํฉ์ DELETEํ๊ฑฐ๋ UPDATEํฉ๋๋ค.
๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ๋ด๊ฐ ๋งํ๋ ๋ชจ๋ ๊ฒ์ DELETE์ ๊ดํ ๊ฒ์ด ์๋๋๋ค. ์ง์ํ์ จ๊ฒ ์ง๋ง ์ด๋ ๋ฐ์ดํฐ์ ๋ํ ๋๋ ์์ ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ณํ์ด ํ๋ฅญํ๋ค๋ ๊ฒ์ ์๋๋ค. ์ธ๋ฑ์ค ์ค์บ์ ๋ณผ ์ ์์ต๋๋ค. ์ธ๋ฑ์ค ์ ์ฉ ์ค์บ์ด ํจ์ฌ ์ข์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์๋์ ๋ฐ์ดํฐ๊ฐ ๊ด๋ จ๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ XNUMX์ด๋ ์ฑ ๋์ง ์์ ์ฑ์ทจ๋ฉ๋๋ค. ๊ฐ๋ ์.
๊ทธ๋ฆฌ๊ณ ์ฌ์ ํ ์ฑ๋ฅ ์ ํ๊ฐ ์๋์ง ํ์ธํด์ผ ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ํฉ์ด ๋น ๋ฅด๊ฒ ์๋ํ๊ณ ์ ์ ๋ ์ ํ๋ฉ๋๋ค. ํ๋ก์ธ์ค๋ ๋ง์ ํ ์คํธ๊ฐ ํ์ํ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ด๊ฒ์ด ๋ฐ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉ์ ๋ชฉ์ ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ํ๋ก๋์ ์์ ์ด๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ฐ๋ฅผ ์ ์๋๋ก ๋ฌด์ธ๊ฐ๋ฅผ ์ค๋นํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ์ฐ๋ฆฌ๋ ๋ก๊ทธ์ ์๊ฐ์ ๊ธฐ๋กํ ์ ์๊ณ , ์ฐ๋ฆฌ๊ฐ ์ง๊ธ ์ด๋์ ์๊ณ ๋๊ตฌ๋ฅผ ์ญ์ ํ๋์ง ๊ธฐ๋กํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ์ฐ๋ฆฌ๊ฐ ๋์ค์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ์ดํดํ ์ ์๊ฒ ํด์ค ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ์ ์ํ๊ฒ ๋ฌธ์ ๋ฅผ ์ฐพ์ต๋๋ค.
์์ฒญ์ ํจ์จ์ฑ์ ํ์ธํด์ผ ํ๊ณ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณตํด์ผ ํ๋ ๊ฒฝ์ฐ ๋๋ฃ ๋ด๊ณผ ๊ฐ์ ๊ฒ์ด ์์ต๋๋ค. ๊ทธ๋ ์ด๋ฏธ ์ค๋น๋์์ต๋๋ค. ๋งค์ผ ์์ญ ๋ช ์ ๊ฐ๋ฐ์๊ฐ ์ฌ์ฉํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ์์ฒญ ์ ๊ฑฐ๋ํ ํ ๋ผ๋ฐ์ดํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ 30์ด ์์ ์ ๊ณตํ๋ ๋ฐฉ๋ฒ์ ์๊ณ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฑฐ๊ธฐ์์ ๋ฌด์ธ๊ฐ๋ฅผ ์ญ์ ํ๊ณ RESET์ด๋ผ๊ณ ๋งํ ๋ค์ ๋ค์ ์ญ์ ํ ์ ์์ต๋๋ค. ์ด๋ฐ ์์ผ๋ก ์คํํด ๋ณผ ์ ์์ต๋๋ค. ๋๋ ์ด๊ฒ์ ๋ํ ๋ฏธ๋๋ฅผ ๋ณธ๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด๋ฏธ ๊ทธ๋ ๊ฒ ํ๊ณ ์์ต๋๋ค.
ํํฐ์ ๋ ์ ๋ต์ด๋ ๋ฌด์์ ๋๊น? ๋๋ ํฉ์ ๊ฐ๋ฐ์๋ค์ด ์ฌ์ฉํ๊ณ ์๋ 3๊ฐ์ง ๋ค๋ฅธ ํํฐ์ ๋ ์ ๋ต์ ๋ด ๋๋ค.
์ฒซ ๋ฒ์งธ๋ ๋งค์ฐ ๊ฐ๋จํฉ๋๋ค. ์ซ์ ID๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ๋ค๋ฅธ ๊ฐ๊ฒฉ์ผ๋ก ๋๋๊ณ ๊ทธ๊ฒ์ผ๋ก ์์ ํฉ์๋ค. ๋จ์ ์ ๋ถ๋ช ํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ์ธ๊ทธ๋จผํธ์๋ 100์ค์ ์ค์ ์ฐ๋ ๊ธฐ๊ฐ ์์ ์ ์๊ณ , ๋ ๋ฒ์งธ 5์ค์๋ ์ ํ ์์ ์๋ ์๊ณ , 1์ค ๋ชจ๋ ์ฐ๋ ๊ธฐ๋ก ํ๋ช ๋ ์๋ ์์ต๋๋ค. ๋งค์ฐ ๊ณ ๋ฅด์ง ์์ ์์ ์ด์ง๋ง ๋ถ์์ง๊ธฐ ์ฝ์ต๋๋ค. ๊ทธ๋ค์ ์ต๋ ID๋ฅผ ๊ฐ์ ธ ์์ ๋ฐ์ด ๋์ต๋๋ค. ์ด๊ฒ์ ์์งํ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค.
๋ ๋ฒ์งธ ์ ๋ต์ ๊ท ํ ์กํ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. Gitlab์์ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ค์ ํ ์ด๋ธ์ ๊ฐ์ ธ๋ค๊ฐ ์ค์บํ์ต๋๋ค. ๊ฐ ํฉ์ ์ ํํ 10๊ฐ์ ๋ ์ฝ๋๊ฐ ์๋๋ก ID ํฉ์ ๊ฒฝ๊ณ๋ฅผ ์ฐพ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ๋ค์ ๋๊ธฐ์ด์ ๋ฃ์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฒ๋ฆฌํฉ๋๋ค. ์ฌ๋ฌ ์ค๋ ๋์์ ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ ์ฒซ ๋ฒ์งธ ์ ๋ต์์๋ ์ฌ๋ฌ ์ค๋ ๋์์ ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค. ์ด๋ ต์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ ๋ ์์ํ๊ณ ๋ ๋์ ์ ๊ทผ ๋ฐฉ์์ด ์์ต๋๋ค. ์ธ ๋ฒ์งธ ์ ๋ต์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฅํ๋ฉด ์ ํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์ฐ๋ฆฌ๋ ํน์ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด๋ฅผ ์ํํฉ๋๋ค. ์ด ๊ฒฝ์ฐ ๊ฐ๋น์ง ์กฐ๊ฑด ๋ฐ ID์ ๋ฐ๋ฅธ ์ธ๋ฑ์ค์ผ ๊ฐ๋ฅ์ฑ์ด ํฝ๋๋ค. ํ์ผ๋ก ๊ฐ์ง ์๋๋ก ์ธ๋ฑ์ค ์ ์ฉ ์ค์บ์ด ๋๋๋ก ID๋ฅผ ํฌํจํฉ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ธ๋ฑ์ค๋ง ์ค์บํ๋ ๊ฒ์ด ์ธ๋ฑ์ค ์ค์บ๋ณด๋ค ๋น ๋ฆ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ญ์ ํ๊ณ ์ถ์ ID๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ต๋๋ค. BATCH_SIZE๋ ๋ฏธ๋ฆฌ ์ ํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ๋ค์ ์ป์ ๋ฟ๋ง ์๋๋ผ ํน๋ณํ ๋ฐฉ๋ฒ์ผ๋ก ๊ทธ๊ฒ๋ค์ ์ป๊ณ ์ฆ์ ํดํนํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฐ๋ฆฌ๋ ๊ทธ๋ค์ด ์ด๋ฏธ ์ ๊ธด ๊ฒฝ์ฐ ์ ๊ทธ์ง ์๊ณ ๊ณ์ํด์ ๋ค์์ ๊ฐ์ ธ๊ฐ ์ ์๋๋ก ์ ๊ทธ๊ณ ์์ต๋๋ค. ์
๋ฐ์ดํธ ๊ฑด๋๋ฐ๊ธฐ ์ ๊ธ์
๋๋ค. Postgres์ ์ด ๋ฐ์ด๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ํ๋ ๊ฒฝ์ฐ ์ฌ๋ฌ ์ค๋ ๋์์ ์์
ํ ์ ์์ต๋๋ค. ํ๋์ ์คํธ๋ฆผ์์ ๊ฐ๋ฅํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์ CTE๊ฐ ์์ต๋๋ค. ์ด๊ฒ์ ํ๋์ ์์ฒญ์
๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด CTE์ XNUMX์ธต์์ ์ค์ ์ญ์ ์์
์ด ์งํ ์ค์
๋๋ค. returning *
. ID๋ฅผ ๋ฐํํ ์ ์์ง๋ง ๋ ์ข์ต๋๋ค. *
๊ฐ ์ค์ ๋ฐ์ดํฐ๊ฐ ๋ง์ง ์์ ๊ฒฝ์ฐ.
์ ํ์ํ๊ฐ์? ์ด๊ฒ์ด ์ฐ๋ฆฌ๊ฐ ๋ค์ ๋ณด๊ณ ํด์ผ ํ๋ ๊ฒ์ ๋๋ค. ์ด์ ์ค์ ๋ก ๋๋ฌด ๋ง์ ์ค์ ์ญ์ ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด์ ๊ฐ์ด ID ๋๋ created_at๋ณ๋ก ํ ๋๋ฆฌ๊ฐ ์์ต๋๋ค. ์ต์, ์ต๋๋ฅผ ํ ์ ์์ต๋๋ค. ๋ค๋ฅธ ์ผ์ ํ ์ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๋ง์ ๊ฒ์ ์ฑ์ธ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ชจ๋ํฐ๋ง์ ๋งค์ฐ ํธ๋ฆฌํฉ๋๋ค.
์ธ๋ฑ์ค์ ๋ํ ์ฐธ๊ณ ์ฌํญ์ด ํ๋ ๋ ์์ต๋๋ค. ์ด ์์ ์ ๋ํ ํน์ ์ธ๋ฑ์ค๊ฐ ํ์ํ๋ค๊ณ ๊ฒฐ์ ํ๋ฉด ํ ์ ์ฉ ํํ ์ ๋ฐ์ดํธ๋ฅผ ๋ง์น์ง ์๋๋ก ํด์ผ ํฉ๋๋ค. ์ฆ, Postgres์๋ ์ด๋ฌํ ํต๊ณ๊ฐ ์์ต๋๋ค. ์ด๋ ํ ์ด๋ธ์ pg_stat_user_tables์์ ๋ณผ ์ ์์ต๋๋ค. ํซ ์ ๋ฐ์ดํธ๊ฐ ์ฌ์ฉ๋๊ณ ์๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ ์์ธ์ด ๋จ์ํ ์ฐจ๋จ๋ ์ ์๋ ์ํฉ์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ ์๋ ์ค์ธ ๋ค๋ฅธ ๋ชจ๋ ์ ๋ฐ์ดํธ๊ฐ ์์ผ๋ฏ๋ก ์๋๋ฅผ ๋ฆ์ถ์ญ์์ค. ์ธ๋ฑ์ค๊ฐ ๋ํ๋ฌ๊ธฐ ๋๋ฌธ์ด ์๋๋ผ(๊ฐ ์ธ๋ฑ์ค๊ฐ ์ ๋ฐ์ดํธ ์๋๋ฅผ ์ฝ๊ฐ ๋ฆ์ถ์ง๋ง ์ฝ๊ฐ) ์ฌ๊ธฐ์๋ ์ฌ์ ํ ๋ง์นฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํ ์ด๋ธ์ ๋ํ ํน๋ณํ ์ต์ ํ๋ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด๊ฒ์ ๋๋๋ก ๋ฐ์ํฉ๋๋ค. ์ด๊ฒ์ ์์์ ์ฌ๋๋ค์ด ๊ธฐ์ตํ๋ ๋ฏธ๋ฌํจ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๊ฐํด๋ ๋ฐ๊ธฐ ์ฝ์ต๋๋ค. ๋๋ก๋ ๋ค๋ฅธ ์ชฝ์์ ์ ๊ทผ ๋ฐฉ์์ ์ฐพ์์ผ ํ๊ณ ์ฌ์ ํ ์ด ์ ์ธ๋ฑ์ค ์์ด ์ํํ๊ฑฐ๋ ๋ค๋ฅธ ์ธ๋ฑ์ค๋ฅผ ๋ง๋ค๊ฑฐ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ด ๊ฐ์ฅ ์ต์ ์ ์ ๋ต์ ๋๋ค. ๋ฐฐ์น๋ก ๋ถํ ํ๊ณ ํ๋์ ์์ฒญ์ผ๋ก ๋ฐฐ์น์์ ์ดฌ์ํ๊ณ ์กฐ๊ธ ์ญ์ ํ๋ ๋ฐฉ๋ฒ ๋ฑ์ ๋๋ค.
๊ธด ํธ๋์ญ์
์ฐจ๋จ๋ autovacuum -
์ฐจ๋จ ๋ฌธ์ -
์ค์ #5๋ ํฐ ์ค์์ ๋๋ค. Okmeter์ Nikolai๊ฐ Postgres ๋ชจ๋ํฐ๋ง์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค. ๋ถํํ๋ ์ด์์ ์ธ Postgres ๋ชจ๋ํฐ๋ง์ ์กด์ฌํ์ง ์์ต๋๋ค. ์ผ๋ถ๋ ๋ ๊ฐ๊น๊ณ ์ผ๋ถ๋ ๋ ๋ฉ๋ค. Okmeter๋ ์๋ฒฝ์ ๊ฐ๊น์ง๋ง ๋ง์ ๊ฒ์ด ๋๋ฝ๋์ด ์ถ๊ฐํด์ผ ํฉ๋๋ค. ์ด์ ๋ํ ์ค๋น๊ฐ ํ์ํฉ๋๋ค.
์๋ฅผ ๋ค์ด ๋ฐ๋ ํํ์ด ๊ฐ์ฅ ์ ๋ชจ๋ํฐ๋ง๋ฉ๋๋ค. ํ ์ด๋ธ์ ์ฃฝ์ ๊ฒ์ด ๋ง์ด ์์ผ๋ฉด ๋ญ๊ฐ ์๋ชป๋ ๊ฒ์ ๋๋ค. ์ง๊ธ ๋์ํ๋ ๊ฒ์ด ๋ ๋ซ์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด ์ ํ๊ฐ ๋ฐ์ํ ์ ์์ผ๋ฉฐ ๋์ธ ์ ์์ต๋๋ค. ์ผ์ด๋๋ค.
IO๊ฐ ํฌ๋ฉด ์ข์ง ์์ ๊ฒ์ด ๋ถ๋ช ํฉ๋๋ค.
๊ธด ๊ฑฐ๋๋. ๊ธด ํธ๋์ญ์ ์ OLTP์์ ํ์ฉ๋์ง ์์์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ ์ค๋ํซ์ ๋ํ ๋งํฌ๊ฐ ์์ด ์ด ์ค๋ํซ์ ๊ฐ์ ธ์ค๊ณ ์ด๋ฏธ ๊ธด ํธ๋์ญ์ ์ ์ผ๋ถ ์ถ์ ํ ์ ์์ต๋๋ค.
๊ธด ํธ๋์ญ์ ์ด ๋์ ์ด์ ๋ ๋ฌด์์ ๋๊น? ๋ชจ๋ ์ ๊ธ์ ๋ง์ง๋ง์๋ง ํด์ ๋๊ธฐ ๋๋ฌธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๋ชจ๋๋ฅผ ๋ง์นฉ๋๋ค. ๋ํ ๋ชจ๋ ํ ์ด๋ธ์ ๋ํด autovacuum์ ์ฐจ๋จํฉ๋๋ค. ์ ํ ์ข์ง ์์ต๋๋ค. ๋ณต์ ๋ณธ์์ ์์ ๋๊ธฐ๊ฐ ํ์ฑํ๋์ด ์์ด๋ ์ฌ์ ํ ์ข์ง ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ธด ๊ฑฐ๋๋ฅผ ํผํ๋ ๊ฒ์ด ๋ ์ข์ ๊ณณ์ ์์ต๋๋ค.
vacuum๋์ง ์์ ํ ์ด๋ธ์ด ๋ง์ ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๊ฐ ํ์ํฉ๋๋ค. ์ฌ๊ธฐ์ ๊ทธ๋ฌํ ์ํฉ์ด ๊ฐ๋ฅํฉ๋๋ค. autovacuum์ ์๋์ ๊ฐ์ ์ ์ผ๋ก ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ด๊ฒ์ ๋ด๊ฐ ์ฝ๊ฐ ๊ฐ์ ํ Avito์ ์ค๋ํซ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ autovacuum์ผ๋ก ์ฐ๋ฆฌ๊ฐ ๋ฌด์์ ๊ฐ์ง๊ณ ์๋์ง ๋ณผ ์ ์๋ ํฅ๋ฏธ๋ก์ด ๋๊ตฌ๋ก ๋ฐํ์ก์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ผ๋ถ ํ ์ด๋ธ์ ๊ทธ๊ณณ์์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ผ๋ฉฐ ์ฐจ๋ก๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์์ต๋๋ค. ๋ํ ๋ชจ๋ํฐ๋ง์ ๋ฃ๊ณ ๊ฒฝ๊ณ ๋ฅผ ๋ฐ์์ผ ํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ธ๋ก์ ๋ฐํํฉ๋๋ค. ๋ธ๋ก ๋๋ฌด์ ์ฒ. ๋๋ ๋๊ตฐ๊ฐ์๊ฒ์ ๋ฌด์ธ๊ฐ๋ฅผ ๊ฐ์ ธ ์์ ๊ฐ์ ํ๋ ๊ฒ์ ์ข์ํฉ๋๋ค. ์ฌ๊ธฐ์ ์ ๋ Data Egret์์ ๋ก ํธ๋ฆฌ ์ฒ์ ๋ณด์ฌ์ฃผ๋ ๋ฉ์ง ์ฌ๊ท CTE๋ฅผ ๊ฐ์ ธ์์ต๋๋ค. ์ด๊ฒ์ ์ข์ ์ง๋จ ๋๊ตฌ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ชจ๋ํฐ๋ง์ ๊ตฌ์ถํ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด๊ฒ์ ์ ์คํ๊ฒ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. ์์ ์ ์ํด ์์ statement_timeout์ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ lock_timeout์ด ๋ฐ๋์งํฉ๋๋ค.
๋๋ก๋ ์ด๋ฌํ ๋ชจ๋ ์ค๋ฅ๊ฐ ํฉ์ฐ๋์ด ๋ฐ์ํฉ๋๋ค.
์ ์๊ฐ์๋ ์ฌ๊ธฐ์์ ๊ฐ์ฅ ํฐ ์ค์๋ ์กฐ์ง์ ์ ๋๋ค. ๊ธฐ์ ์ด ๋น๊ธฐ์ง ์๊ธฐ ๋๋ฌธ์ ์กฐ์ง์ ์ ๋๋ค. ์ด๊ฒ์ 2๋ฒ์ ๋๋ค - ๊ทธ๋ค์ ์๋ชป๋ ์ฅ์์ ์ฒดํฌ์ธํ์ต๋๋ค.
ํ์ธํ๊ธฐ ์ฌ์ด ํ๋ก๋์ ํด๋ก ์ด ์์๊ธฐ ๋๋ฌธ์ ์๋ชป๋ ์์น๋ฅผ ํ์ธํ์ต๋๋ค. ๊ฐ๋ฐ์๋ ํ๋ก๋์ ์ ์ ํ ์ก์ธ์คํ์ง ๋ชปํ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ๊ฑฐ๊ธฐ์ ์์ง ์์์ง ํ์ธํ์ต๋๋ค. ๊ทธ๊ณณ์์ ํ์ธํ๋ค๋ฉด ์ง์ ๋ณด์์ ๊ฒ์ ๋๋ค. ๊ฐ๋ฐ์๋ DBA ์์ด๋ ๊ฐ์ ๋ฐ์ดํฐ์ ๊ฐ์ ์์น์ ์๋ ์ข์ ํ๊ฒฝ์์ ํ์ธํ๋ค๋ฉด ๋ค ๋ณด์์ต๋๋ค. ๊ทธ๋ ์ด ๋ชจ๋ ํ๋ฝ์ ๋ณด์์ ๊ฒ์ด๊ณ ๋ถ๋๋ฌ์ํ์ ๊ฒ์ ๋๋ค.
autovacuum์ ๋ํด ์์ธํ ์์๋ณด์ญ์์ค. ์๋ฐฑ๋ง ์ค์ ๋๊ท๋ชจ ์ค์์ ์ํํ ํ์๋ ์ฌ์ ํ REPACK์ ์ํํด์ผ ํฉ๋๋ค. ์ด๋ ์ธ๋ฑ์ค์ ํนํ ์ค์ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ๊ฑฐ๊ธฐ์์ ๋ชจ๋ ๊ฒ์ ์ฒญ์ํ ํ์ ๊ทธ๋ค์ ๊ธฐ๋ถ์ด ๋์ ๊ฒ์ ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ผ์์ ์ธ ์ฒญ์ ์์ ์ ๋๋๋ฆฌ๊ณ ์ถ๋ค๋ฉด ๋ ์์ฃผ ํ์ง๋ง ๋ ์์ ๊ท๋ชจ๋ก ์ฒญ์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. XNUMX๋ถ์ ํ ๋ฒ ๋๋ ์กฐ๊ธ ๋ ์์ฃผ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ๊ฐ์ง๋ฅผ ๋ชจ๋ํฐ๋งํด์ผ ํฉ๋๋ค. ์ด ํญ๋ชฉ์๋ ์ค๋ฅ๊ฐ ์๊ณ ๋ค์ฒ์ง์ง ์์ต๋๋ค. ์ ๊ฐ ๋ณด์ฌ๋๋ฆฐ ํธ๋ฆญ์ด ๋ฐ๋ก ํด๊ฒฐํด ์ค ๊ฒ์ ๋๋ค.
์ฐ๋ฆฌ๊ฐ ํ๋ ์ผ์ ์คํ ์์ค์ ๋๋ค. GitLab์ ๊ฒ์๋์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ DBA ์์ด๋ ์ฌ๋๋ค์ด ํ์ธํ ์ ์๋๋ก ๋ง๋ญ๋๋ค. ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉ์ ์ํํ๊ณ ์์ต๋๋ค. ์ฆ, Joe๊ฐ ํ์ฌ ์์ ํ๊ณ ์๋ ๊ธฐ๋ณธ ๊ตฌ์ฑ ์์๋ฅผ ํธ์ถํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ํ๋ก๋์ ์ฌ๋ณธ์ ์ป์ ์ ์์ต๋๋ค. ์ด์ ์ฌ๋์ ์ํ Joe์ ๊ตฌํ์ด ์์ต๋๋ค. "์ด๋ฌํ ์์ฒญ์ ์ค๋ช ํ์ญ์์ค"๋ผ๊ณ ๋งํ๋ฉด ์ฆ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ณต์ฌ๋ณธ์ ๋ํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ๊ฑฐ๊ธฐ์์ DELETE๋ ํ ์ ์์ผ๋ฉฐ ์๋ฌด๋ ๋์น ์ฑ์ง ๋ชปํ ๊ฒ์ ๋๋ค.
10ํ ๋ผ๋ฐ์ดํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฉ๋ 10ํ ๋ผ๋ฐ์ดํธ๋ก ๋ง๋ญ๋๋ค. ๋ํ ๋์ 10ํ ๋ผ๋ฐ์ดํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก 10๋ช ์ ๊ฐ๋ฐ์๊ฐ ๋์์ ์์ ํ ์ ์์ต๋๋ค. ๋๊ตฌ๋ ์ํ๋ ๊ฒ์ ํ ์ ์์ต๋๋ค. ์ญ์ , ์ญ์ ๋ฑ์ ํ ์ ์์ต๋๋ค. ์ ๋ง ํ์์ ์ ๋๋ค. ๋ด์ผ ์ด๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ๊ฒ ์ต๋๋ค.
์ด๋ฅผ ์ฌ ํ๋ก๋น์ ๋์ด๋ผ๊ณ ํฉ๋๋ค. ์ด๊ฒ์ ๋ฏธ๋ฌํ ํ๋ก๋น์ ๋์ ๋๋ค. ์ด๊ฒ์ ๊ฐ๋ฐ ์ง์ฐ, ํ ์คํธ ์ง์ฐ์ ํฌ๊ฒ ์ ๊ฑฐํ๊ณ ์ด์ ๊ด๋ จํ์ฌ ์ธ์์ ๋ ๋์ ๊ณณ์ผ๋ก ๋ง๋๋ ์ผ์ข ์ ํ์์ ๋๋ค. ์ฆ, ๋๋ ์์ ์ ๋ฌธ์ ๋ฅผ ํผํ ์ ์์ต๋๋ค.
์: 5ํ ๋ผ๋ฐ์ดํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค, 30์ด ์ด๋ด์ ์ฌ๋ณธ ๊ฐ์ ธ์ค๊ธฐ. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ํฌ๊ธฐ์๋ ์์กดํ์ง ์์ต๋๋ค. ์ฆ, ๋ช ํ ๋ผ๋ฐ์ดํธ์ธ์ง๋ ์ค์ํ์ง ์์ต๋๋ค.
์ค๋ ๋น์ ์ ๊ฐ ์ ์์ต๋๋ค
์ง๋ฌธ
์ค์ ์ํฉ์์ ๋งค์ฐ ์์ฃผ ํ ์ด๋ธ์ ๋จ์ ์์ด์ผ ํ๋ ๋ฐ์ดํฐ๊ฐ ์ญ์ ํด์ผ ํ๋ ๋ฐ์ดํฐ๋ณด๋ค ํจ์ฌ ์ ์ต๋๋ค. ์ฆ, ์ด๋ฌํ ์ํฉ์์ ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ฑฐ๊ธฐ์ ํ์ํ ๋ฐ์ดํฐ๋ง ๋ณต์ฌํ๊ณ ์ด์ ํ ์ด๋ธ์ ํธ๋ ํนํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๋ ์ด๋ฌํ ์ ๊ทผ ๋ฐฉ์์ ๊ตฌํํ๋ ๊ฒ์ด ๋ ์ฌ์ด ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ์ ํํ๋ ๋์ ์ด ์๊ฐ์ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ ์ ๊ทผ ๋ฐฉ์์ด ํ์ํ๋ค๋ ๊ฒ์ ๋ถ๋ช ํฉ๋๋ค. ์ด ์ ๊ทผ๋ฒ์ ์ด๋ป์ต๋๊น?
์ด๊ฒ์ ๋งค์ฐ ์ข์ ์ ๊ทผ ๋ฐฉ์์ด๋ฉฐ ๋งค์ฐ ์ข์ ์์ ์ ๋๋ค. pg_repack์ด ํ๋ ์ผ๊ณผ ๋งค์ฐ ์ ์ฌํ๋ฉฐ, ID๋ฅผ 4๋ฐ์ดํธ๋ก ๋ง๋ค ๋ ์ํํด์ผ ํ๋ ์ผ๊ณผ ๋งค์ฐ ์ ์ฌํฉ๋๋ค. ๋ง์ ํ๋ ์์ํฌ๊ฐ ๋ช ๋ ์ ์ ์ด ์์ ์ ์ํํ์ผ๋ฉฐ ํ๋ ์ดํธ๋ง ์ปค์ก๊ณ 8๋ฐ์ดํธ๋ก ๋ณํํด์ผ ํฉ๋๋ค.
์ด ์์ ์ ์๋นํ ์ด๋ ต์ต๋๋ค. ์ฐ๋ฆฌ๋ ํด๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋งค์ฐ ์กฐ์ฌํด์ผ ํฉ๋๋ค. ์ ๊ธ ์ฅ์น ๋ฑ์ด ์์ง๋ง ์๋ฃ๋๊ณ ์์ต๋๋ค. ์ฆ, ํ์ค ์ ๊ทผ ๋ฐฉ์์ pg_repack์ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌํ ๋ ์ด๋ธ์ ์ ์ธํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋ ์ท ๋ฐ์ดํฐ๋ฅผ ์ ๋ก๋ํ๊ธฐ ์ ์ ๋ชจ๋ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ๋ ํ๋์ ํ๋ ์ดํธ๋ ์ ์ธํฉ๋๋ค. ์ผ๋ถ ๋ณ๊ฒฝ ์ฌํญ์ ์ถ์ ํ์ง ๋ชปํ ์๋ ์๋ ํธ๋ฆญ์ด ์์ต๋๋ค. ๋ฏธ๋ฌํจ์ด ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๋กค๋ง ๋ณ๊ฒฝ์ผ๋ก ์ ํํฉ๋๋ค. ๋ชจ๋ ์ฌ๋์ ์ข ๋ฃํ ๋ ์ ์ ์ผ์ ์ค์ง๋์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ์ด ์์ ์ด ์๋ฃ๋๊ณ ์์ต๋๋ค.
GitHub์ pg_repack์ ๋ณด๋ฉด ๊ฑฐ๊ธฐ์ ID๋ฅผ int 4์์ int 8๋ก ๋ณํํ๋ ์์ ์ด ์์ ๋ pg_repack ์์ฒด๋ฅผ ์ฌ์ฉํ๋ ์์ด๋์ด๊ฐ ์์์ต๋๋ค. ์ด๊ฒ์ ๋ํ ๊ฐ๋ฅํ์ง๋ง ์ฝ๊ฐ์ ํดํน์ด์ง๋ง ์ด๊ฒ๋ ์๋ํฉ๋๋ค. pg_repack์ด ์ฌ์ฉํ๋ ํธ๋ฆฌ๊ฑฐ์ ๊ฐ์ ํ์ฌ "์ฐ๋ฆฌ๋ ์ด ๋ฐ์ดํฐ๊ฐ ํ์ํ์ง ์์ต๋๋ค"๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค. ์ฆ, ํ์ํ ๊ฒ๋ง ์ ์กํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ทธ๋ ์ ํํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ๊ฐ ์ด๋ฏธ ์ธ๋ฑ์ฑ๋๊ณ ์๋ฆ๋ค์ด ์ธ๋ฑ์ค๋ก ๋งค์ฐ ๊ณ ๋ฅด๊ฒ ์์ธ ํ ์ด๋ธ์ ๋ ๋ฒ์งธ ๋ณต์ฌ๋ณธ์ ์ป์ ์ ์์ต๋๋ค.
๋ถํ๋ฆผ์ด ์์ผ๋ฉฐ ์ข์ ์ ๊ทผ ๋ฐฉ์์ ๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ๋ํ ์๋ํ๋ฅผ ๊ฐ๋ฐํ๋ ค๋ ์๋, ์ฆ ๋ฒ์ฉ ์๋ฃจ์ ์ ๋ง๋ค๋ ค๋ ์๋๊ฐ ์๋ค๋ ๊ฒ์ ์๊ณ ์์ต๋๋ค. ์ด ์๋ํ๋ก ์ฐ๊ฒฐํด ๋๋ฆด ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ ์ข์ ๊ฒ์ ๋๋ค ํ์ด์ฌ์ผ๋ก ์์ฑ๋์์ต๋๋ค.
๋๋ MySQL์ ์ธ๊ณ์์ ์กฐ๊ธ ์๊ธฐ ๋๋ฌธ์ ๋ค์ด ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด ์ ๊ทผ๋ฒ์ ์ฌ์ฉํฉ๋๋ค.
๋จ, 90%์ผ ๊ฒฝ์ฐ์๋ง ๊ฐ๋ฅํฉ๋๋ค. 5 %๊ฐ ์์ผ๋ฉด ์ฌ์ฉํ๊ธฐ์ ์ข์ง ์์ต๋๋ค.
์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ์ ํ์ ์ ์ฒด ๋ณต์ฌ๋ณธ์ ๋ง๋ค ๋ฆฌ์์ค๊ฐ ์๋ ๊ฒฝ์ฐ ๋ถํ ๋๋ ํฌ๊ธฐ๋ฅผ ๊ณ์ฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ ๊ณต์์ด ์์ต๋๊น?
์ข์ ์ง๋ฌธ. ์ง๊ธ๊น์ง ์ฐ๋ฆฌ๋ ๋ฉํฐ ํ ๋ผ๋ฐ์ดํธ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฐพ์ ์ ์์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ ๊ณ ํ๋ก์ธ์๊ฐ ์ ๊ณ ๋์คํฌ๊ฐ ์ ํํ ๊ฐ์ง๋ ์์ง๋ง ํ๋์จ์ด๊ฐ ๋์ผํ์ง ์๋๋ผ๋ ์ฌ์ ํ ๊ทธ๋ ๊ฒ ํฉ๋๋ค. ์๋ฌด๋ฐ๋ ์๋ค๋ฉด ์๊ฐํด์ผํฉ๋๋ค. ๋ด์ผ๊น์ง ์๊ฐํ๊ฒ ์ต๋๋ค. ๋น์ ์ด ์๊ณ , ์ฐ๋ฆฌ๋ ์ด์ผ๊ธฐ ํ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ์ข์ ์ง๋ฌธ์ ๋๋ค.
์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๋น์ ์ ์ด๋ฐ์ ๋ฐ ์ ํ์ด ์์ง๋ง ๋ฐ์ ํ๊ณ ์๋ ๋ฉ์ง Postgres๊ฐ ์๋ค๋ ์ฌ์ค์ ๋ํด ์ฒ์ ์์ํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ ๋์ฒด๋ก ๋ชฉ๋ฐ์ ๋๋ค. ์ด ๋ชจ๋ ๊ฒ์ด Postgres ์์ฒด์ ๊ฐ๋ฐ๊ณผ ์ถฉ๋ํ์ง ์์ต๋๊น? ์ผ๋ถ DELETE ์ข ์ ํญ๋ชฉ์ด ๋ํ๋๊ฑฐ๋ ์ฌ๊ธฐ์์ ์ด์ํ ์๋จ์ผ๋ก ๋๋ฝํ๋ ค๋ ๊ฒ์ ๋ฎ์ ์์ค์ผ๋ก ์ ์งํด์ผ ํ๋ ๋ค๋ฅธ ๊ฒ์ด ์์ต๋๊น?
SQL์์ ํ๋์ ํธ๋์ญ์ ์์ ๋ง์ ๋ ์ฝ๋๋ฅผ ์ญ์ ํ๊ฑฐ๋ ์ ๋ฐ์ดํธํ๋ผ๊ณ ๋งํ๋ค๋ฉด Postgres๋ ์ด๋ป๊ฒ ์ด๋ฅผ ๊ฑฐ๊ธฐ์ ๋ฐฐํฌํ ์ ์์ต๋๊น? ์ฐ๋ฆฌ๋ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ด์์ ์ ํ์ด ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฌ์ ํ ์ค๋ซ๋์ ๊ทธ๊ฒ์ ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด ์๊ฐ์ ์ ๊ธ ๊ฒ์ ๋๋ค.
์ธ๋ฑ์ค๋ ๋๋ฌ์ต๋๋ค.
๋์ผํ ์ฒดํฌํฌ์ธํธ ์กฐ์ ์ ์๋ํํ ์ ์๋ค๊ณ ๊ฐ์ ํ ์ ์์ต๋๋ค. ์ธ์ ๊ฐ๋ ๊ทธ๋ด ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ ๊ทธ ์ง๋ฌธ์ ์ ๋ง๋ก ์ดํดํ์ง ๋ชปํฉ๋๋ค.
๋ฌธ์ ๋ ์ฌ๊ธฐ์ ๊ธฐ์ ์งํ๋๋ ๊ฐ๋ฐ ๋ฒกํฐ๊ฐ ์๊ณ ์ฌ๊ธฐ์์ ๊ทํ์ ๊ฒ๊ณผ ํํํ๊ฒ ์งํ๋๋ ๊ฐ๋ฐ ๋ฒกํฐ๊ฐ ์์ต๋๊น? ์ ๊ฒ๋ค. ๊ทธ๋ค์ ์์ง ๊ทธ๊ฒ์ ๋ํด ์๊ฐํ์ง ์์์ต๋๊น?
์ง๊ธ ์ฌ์ฉํ ์ ์๋ ์๋ฆฌ์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค. ๋ค๋ฅธ ๋ด์ด ์์ต๋๋ค
๊ทธ๋ฆฌ๊ณ ์ฒดํฌํฌ์ธํธ ์กฐ์ ์ ์ํด ๋ค์๊ณผ ๊ฐ์ด ํ ์ ์์ต๋๋ค. ํด๋ผ์ฐ๋์ ์์ฒ ๊ฐ์ ํด๋ฌ์คํฐ์ ๋ค๋ฅธ ํ๋์จ์ด, ๋ค๋ฅธ ๊ฐ์ ๋จธ์ ์ด ์๋ ๊ฒฝ์ฐ ๋ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ข์ ์คํ์์ ์ฅ๊ธฐ ๊ฑฐ๋์ ์ํ์ฑ์ ๋ํด ๋ง์ํ์ จ์ต๋๋ค. ์ญ์ ์ autovacuum์ด ์ฐจ๋จ๋๋ค๊ณ ํ์ จ์ต๋๋ค. ๊ทธ๊ฒ์ด ์ฐ๋ฆฌ์๊ฒ ๋ ์ด๋ค ํด๋ฅผ ๋ผ์น๋์? ์ฐ๋ฆฌ๋ ๊ณต๊ฐ์ ํ๋ณดํ๊ณ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ ๋ํด ๋ ๋ง์ด ์ด์ผ๊ธฐํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๋ฌด์์ ๋์น๊ณ ์์ต๋๊น?
Autovacuum์ ์ฌ๊ธฐ์ ๊ฐ์ฅ ํฐ ๋ฌธ์ ๊ฐ ์๋ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ธด ํธ๋์ญ์ ์ด ๋ค๋ฅธ ํธ๋์ญ์ ์ ์ ๊ธ ์ ์๋ค๋ ์ฌ์ค, ์ด ๊ฐ๋ฅ์ฑ์ ๋ ์ํํฉ๋๋ค. ๊ทธ๋ ๋ ๋ง๋ ์๋ ์๊ณ ๋ง๋์ง ์์ ์๋ ์์ต๋๋ค. ๊ทธ๋ ๊ฐ ๋ง๋๋ค๋ฉด ๊ทธ๊ฒ์ ๋งค์ฐ ๋์ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ autovacuum์ผ๋ก - ์ด๊ฒ์ ๋ํ ๋ฌธ์ ์ ๋๋ค. OLTP์ ๊ธด ํธ๋์ญ์ ์๋ ์ ๊ธ๊ณผ ์๋ ์ง๊ณต์ด๋ผ๋ ๋ ๊ฐ์ง ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ณต์ ๋ณธ์์ ์์ ๋๊ธฐ ํผ๋๋ฐฑ์ ํ์ฑํํ ๊ฒฝ์ฐ์๋ ๋ง์คํฐ์์ autovacuum ์ ๊ธ์ ์์ ํ๊ณ ๋ณต์ ๋ณธ์์ ๋์ฐฉํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ ์ด๋ ์๋ฌผ์ ๋ ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ก์ด ์์ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ์ ๊ธ์ ์ค์ํ ํฌ์ธํธ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์ด ์ค๋ซ๋์ ์ง์๋๋ค๋ฉด ์ ์ ๋ ๋ง์ ํธ๋์ญ์ ์ด ์ ๊น๋๋ค. ๊ทธ๋ค์ ๋ค๋ฅธ ์ฌ๋์ ํ์น ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ก ํธ๋ฆฌ๊ฐ ๋ํ๋ฉ๋๋ค. ์ค ๋ํซ์ ๋ํ ๋งํฌ๋ฅผ ์ ๊ณตํ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ๋ฌธ์ ๋ ์ถ์ ๋ง ๊ฐ๋ฅํ autovacuum์ ๋ฌธ์ ๋ณด๋ค ๋ ๋นจ๋ฆฌ ๋์ ๋๋๋ค.
์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ํ ์คํธ๋ฅผ ์๋ชปํ๋ค๊ณ ๋งํ๋ฉด์ ๋ณด๊ณ ์๋ฅผ ์์ํ์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ธฐ์ง์ ํจ๊ป ๋์ผํ ์ฅ๋น๋ฅผ ๊ฐ์ ธ์์ผํ๋ค๋ ์๊ฐ์ ๊ณ์ํ์ต๋๋ค. ๊ฐ๋ฐ์์๊ฒ ๊ธฐ๋ฐ์ ์ ๊ณตํ๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ์์ฒญ์ ๋ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๋ ๋ผ์ด๋ธ๋ฅผ ํ์ธํ์ง ์์ง๋ง ๋ผ์ด๋ธ๋ฅผ ์ํด ์๋ฅผ ๋ค์ด 60-70%์ ๋ถํ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ํ๋์ ์ฌ์ฉํด๋ ์ ๋์ง ์์ต๋๋ค.
ํ์ ์ ๋ฌธ๊ฐ๊ฐ ์๊ณ ์ค์ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ก๋์์ ๋ฐ์ํ ์ผ์ ์์ธกํ ์ ์๋ DBA ์ ๋ฌธ๊ฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๊นจ๋ํ ๋ณ๊ฒฝ ์ฌํญ์ ์คํํ์ ๋ ๊ทธ๋ฆผ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ณด๋ค ์ง๋ณด๋ ์ ๊ทผ ๋ฐฉ์์ผ๋ก ๋์ผํ ์์ ์ ๋ค์ ์ํํ์ง๋ง ํ๋ก๋์ ์ผ๋ก ์๋ฎฌ๋ ์ด์ ๋ ๋ก๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๊ฝค ๋ฉ์ง๋ค. ๊ทธ๋๊น์ง ์ฑ์ฅํด์ผ ํฉ๋๋ค. ์ด๋ฅธ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ๊ฐ ๊ฐ์ง ๊ฒ์ ์ดํด๋ณด๊ณ ์ถฉ๋ถํ ์์์ด ์๋์ง๋ ์ดํด๋ณด์์ต๋๋ค. ๊ทธ๊ฑด ์ข์ ์ง๋ฌธ์ด์ผ.
์ด๋ฏธ ๊ฐ๋น์ง ์ ํ์ ์ํํ๊ณ ์๊ณ ์๋ฅผ ๋ค์ด ์ญ์ ๋ ํ๋๊ทธ๊ฐ ์๋ ๊ฒฝ์ฐ
์ด๊ฒ์ด Postgres์์ autovacuum์ด ์๋์ผ๋ก ์ํํ๋ ์์ ์ ๋๋ค.
์ค, ๊ทธ๋ ๊ทธ๊ฒ์ํฉ๋๊น?
Autovacuum์ ๊ฐ๋น์ง ์์ง๊ธฐ์ ๋๋ค.
๊ฐ์ฌํฉ๋๋ค!
์ ๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๋ชจ๋ ์ฐ๋ ๊ธฐ๊ฐ ๊ธฐ๋ณธ ํ ์ด๋ธ์์ ์์ผ๋ก ๋๋ฌ์์ง๋ ๋ฐฉ์์ผ๋ก ํํฐ์ ๋์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฆ์ ์ค๊ณํ๋ ์ต์ ์ด ์์ต๋๊น?
๋ฌผ๋ก ์์ต๋๋ค.
์ฌ์ฉํ์ง ๋ง์์ผ ํ ํ ์ด๋ธ์ ์ ๊ทผ ๊ฒฝ์ฐ ์ฐ๋ฆฌ ์์ ์ ๋ณดํธํ ์ ์์ต๋๊น?
๋ฌผ๋ก ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ๋ญ๊ณ ๊ธฐ์ ๋ฌ๊ฑ ๋ฌธ์ ์ ๊ฐ์ต๋๋ค. ๋ฏธ๋์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋ ์ง ์ฐ๋ฆฌ ๋ชจ๋๊ฐ ์๋ค๋ฉด ๋น์ฐํ ๋ชจ๋ ์ผ์ ๋ฉ์ง๊ฒ ํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฌ๋ ๋น์ฆ๋์ค๋ ๋ณํํ๊ณ ์์ผ๋ฉฐ ์๋ก์ด ์นผ๋ผ๊ณผ ์๋ก์ด ์์ฒญ์ด ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ โ ์ฃ์กํฉ๋๋ค. ์ ๊ฑฐํ๊ณ ์ถ์ต๋๋ค. ๊ทธ๋ฌ๋์ด ์ด์์ ์ธ ์ํฉ์ ์ธ์์์ ๋ฐ์ํ์ง๋ง ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค. ๊ทธ๋ฌ๋ ์ ๋ฐ์ ์ผ๋ก ์ข์ ์๊ฐ์ ๋๋ค. ์๋ผ๋ด๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
์ถ์ฒ : habr.com