XNUMX๋
์ ๊ฐ๋ฐ ๋์
์ฃผ์
- '์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
์์ฑ๋ ์ด "๋ผ๋ ๊ฐ์ ๋์ผํ ํ ์ด๋ธ์ ๋ค๋ฅธ ์ด ๊ฐ์ ํฌ๊ดํ๋ ํํ์์ ๊ธฐ๋ฐ์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค(๋ทฐ์ ์ ์ฌํ์ง๋ง ๊ฐ๋ณ ์ด์ ํด๋น). ์์ฑ๋ ์ด์ ์ ์ฅ๋ ์ด๊ณผ ๊ฐ์ ์ด์ ๋ ๊ฐ์ง ์ ํ์ด ๋ ์ ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋๋ ์์ ์ ๊ฐ์ด ๊ณ์ฐ๋๊ณ , ๋ ๋ฒ์งธ ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ์ด์ ํ์ฌ ์ํ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฝ์ ๋๋ง๋ค ๊ฐ์ด ๊ณ์ฐ๋ฉ๋๋ค. ํ์ฌ PostgreSQL์ ์ ์ฅ๋ ์์ฑ ์ด๋ง ์ง์ํฉ๋๋ค. - ๋ค์์ ์ฌ์ฉํ์ฌ JSON ๋ฌธ์์์ ๋ฐ์ดํฐ๋ฅผ ์ฟผ๋ฆฌํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค.
๊ฒฝ๋ก ํํ , ์ฐ์์ํค๋คxpath SQL/JSON ํ์ค์ ์ ์๋์ด ์์ต๋๋ค. ๊ธฐ์กด ์ธ๋ฑ์ฑ ๋ฉ์ปค๋์ฆ์ JSONB ํ์์ผ๋ก ์ ์ฅ๋ ๋ฌธ์์ ๋ํ ์ด๋ฌํ ํํ์ ์ฒ๋ฆฌ์ ํจ์จ์ฑ์ ํฅ์์ํค๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. - ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ ๊ฒ์ SQL ์ฟผ๋ฆฌ ์ฒ๋ฆฌ ์ค ์ผ๋ถ ํํ์์ ์คํ ์๋๋ฅผ ๋์ด๊ธฐ ์ํด LLVM ๊ฐ๋ฐ์ ๊ธฐ๋ฐ์ผ๋ก ํ๋ JIT(Just-in-Time) ์ปดํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด JIT๋ WHERE ๋ธ๋ก, ๋์ ๋ชฉ๋ก, ์ง๊ณ ํํ์ ๋ฐ ์ผ๋ถ ๋ด๋ถ ์์ ๋ด์ ํํ์ ์คํ ์๋๋ฅผ ๋์ด๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
- ์ธ๋ฑ์ฑ ์ฑ๋ฅ์ด ํฌ๊ฒ ํฅ์๋์์ต๋๋ค. B-ํธ๋ฆฌ ์ธ๋ฑ์ค๋ ์ธ๋ฑ์ค๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋๋ ํ๊ฒฝ์์ ์๋ํ๋๋ก ์ต์ ํ๋์ด ์์ต๋๋ค. TPC-C ํ
์คํธ์์๋ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ด ํฅ์๋๊ณ ๋์คํฌ ๊ณต๊ฐ ์๋น๊ฐ ํ๊ท 40% ๊ฐ์ํ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. GiST, GIN ๋ฐ SP-GiST ์ธ๋ฑ์ค ์ ํ์ ๋ํ WAL(๋ฏธ๋ฆฌ ์ฐ๊ธฐ ๋ก๊ทธ) ์์ฑ ์ ์ค๋ฒํค๋๊ฐ ๊ฐ์๋์์ต๋๋ค. GiST์ ๊ฒฝ์ฐ ์ถ๊ฐ ์ด์ ํฌํจํ๋ ๋ํผ ์ธ๋ฑ์ค(INCLUDE ํํ์์ ํตํด)๋ฅผ ์์ฑํ๋ ๊ธฐ๋ฅ์ด ์ถ๊ฐ๋์์ต๋๋ค. ์ด์ ์ค
ํต๊ณ ์์ฑ ๊ณ ๋ฅด์ง ์๊ฒ ๋ถ์ฐ๋ ์ด์ ์ฌ์ฉํ ๋ ๋ณด๋ค ์ต์ ์ ์ฟผ๋ฆฌ ๊ณํ์ ์์ฑํ๋ ๋ฐ ๋์์ด ๋๋๋ก MCV(๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ฐ) ํต๊ณ์ ๋ํ ์ง์์ด ์ ๊ณต๋ฉ๋๋ค. - ๋ถํ ๊ตฌํ์ ์์ฒ ๊ฐ์ ํํฐ์ ์ด ์๋ ํ ์ด๋ธ์ ๊ฑธ์ณ ์๋ ์ฟผ๋ฆฌ์ ์ต์ ํ๋์ด ์์ง๋ง ์ ํ๋ ๋ฐ์ดํฐ ํ์ ์งํฉ์ ์ ํํ๋ ๊ฒ์ผ๋ก ์ ํ๋ฉ๋๋ค. INSERT, COPY ์ฐ์ฐ์ ํตํด ๋ถํ ๋ ํ ์ด๋ธ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ์ฑ๋ฅ์ด ํฅ์๋์์ผ๋ฉฐ, ์ฟผ๋ฆฌ ์คํ์ ์ฐจ๋จํ์ง ์๊ณ โALTER TABLE ATTACH PARTITIONโ์ ํตํด ์๋ก์ด ์น์ ์ ์ถ๊ฐํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.
- ์ผ๋ฐํ๋ ํ
์ด๋ธ ํํ์์ ์๋ ์ธ๋ผ์ธ ํ์ฅ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค(
๊ณตํต ํ ์ด๋ธ ํํ์ , CTE)์ WITH ๋ฌธ์ ์ฌ์ฉํ์ฌ ์ง์ ๋ ์์ ๋ช ๋ช ๋ ๊ฒฐ๊ณผ ์งํฉ์ ์ฌ์ฉ์ ํ์ฉํฉ๋๋ค. ์ธ๋ผ์ธ ๋ฐฐํฌ๋ ๋๋ถ๋ถ์ ์ฟผ๋ฆฌ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ง๋ง ํ์ฌ๋ ๋น์ฌ๊ท์ CTE์๋ง ์ฌ์ฉ๋ฉ๋๋ค. - ์ถ๊ฐ ์ง์
๋น๊ฒฐ์ ์ ๋ฌธ์์ ์๋ฏธ๋ฅผ ๊ณ ๋ คํ์ฌ ์ ๋ ฌ ๊ท์น๊ณผ ์ผ์น ๋ฐฉ๋ฒ์ ์ค์ ํ ์ ์๋ "์กฐํฉ" ๋ก์ผ์ผ์ ์์ฑ(์: ๋์งํธ ๊ฐ์ ์ ๋ ฌํ ๋ ์ซ์ ์์ ๋ง์ด๋์ค์ ์ ์ด ์๋์ง, ๋ค์ํ ์ ํ์ด ์๋์ง) ์ฒ ์๋ฒ์ด ๊ณ ๋ ค๋๋ฉฐ ๋น๊ตํ ๋ ๋ฌธ์์ ๋์ ๋ฌธ์์ ์ ์ผํธ ํ์์ ์กด์ฌ๋ ๊ณ ๋ ค๋์ง ์์ต๋๋ค) ; - pg_hba.conf์์ ์ธ์ฆ์ ์ํด SSL ์ธ์ฆ์ ์ธ์ฆ(clientcert=verify-full)๊ณผ scram-sha-256๊ณผ ๊ฐ์ ์ถ๊ฐ ์ธ์ฆ ๋ฐฉ๋ฒ์ ๊ฒฐํฉํ ์ ์๋ ๋ค์ค ์์ ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ๋ค์์ ํตํด ์ธ์ฆํ ๋ ํต์ ์ฑ๋ ์ํธํ์ ๋ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
GSSAPI , ํด๋ผ์ด์ธํธ ์ธก๊ณผ ์๋ฒ ์ธก ๋ชจ๋์์; - PostgreSQL์ด OpenLDAP๋ก ๊ตฌ์ถ๋ ๊ฒฝ์ฐ "DNS SRV" ๋ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก LDAP ์๋ฒ๋ฅผ ๊ฒฐ์ ํ๊ธฐ ์ํ ์ง์์ด ์ถ๊ฐ๋์์ต๋๋ค.
- ์ถ๊ฐ๋ ์์
"
๋์์ ์ฌ์์ธ ยป ์ธ๋ฑ์ค์ ๋ํ ์ฐ๊ธฐ ์์ ์ ์ฐจ๋จํ์ง ์๊ณ ์ธ๋ฑ์ค๋ฅผ ์ฌ๊ตฌ์ถํฉ๋๋ค. - ํ์ด ์ถ๊ฐ๋์์ต๋๋ค
pg_checksums , ๊ธฐ์กด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ ๋ฐ์ดํฐ ํ์ด์ง์ ์ฒดํฌ์ฌ ํ์ธ์ ํ์ฑํํ๊ฑฐ๋ ๋นํ์ฑํํ ์ ์์ต๋๋ค(์ด์ ์๋ ์ด ์์ ์ด ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ด๊ธฐํ ์ค์๋ง ์ง์๋์์ต๋๋ค). - CREATE INDEX, REINDEX, CLUSTER, VACUUM FULL ๋ฐ pg_checksums ์์ ์ ๋ํ ์งํ๋ฅ ํ์๊ธฐ ์ถ๋ ฅ ์ ๊ณต;
- "๋ผ๋ ๋ช
๋ น์ ์ถ๊ฐํ์ต๋๋ค.
์ก์ธ์ค ๋ฐฉ๋ฒ ์์ฑ ยป ๋ค์ํ ํน์ ์์ ์ ์ต์ ํ๋ ์๋ก์ด ํ ์ด๋ธ ์ ์ฅ ๋ฐฉ๋ฒ์ ์ํ ํธ๋ค๋ฌ๋ฅผ ์ฐ๊ฒฐํฉ๋๋ค. ํ์ฌ ๋ด์ฅ๋ ์ ์ผํ ํ ์ด๋ธ ์ก์ธ์ค ๋ฐฉ๋ฒ์ "ํ"์ ๋๋ค. - Recovery.conf ๊ตฌ์ฑ ํ์ผ์ด postgresql.conf์ ๋ณํฉ๋์์ต๋๋ค. ์ฅ์ ํ ๋ณต๊ตฌ ์ํ๋ก์ ์ ํ์ ๋ํ๋ด๋ ์งํ๋ก์ ์ด์
ํด์ผ Recovery.signal ๋ฐ Standby.signal ํ์ผ์ ์ฌ์ฉํ์ญ์์ค.
์ถ์ฒ : opennet.ru