๋์ฉ๋ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๊ธฐ๋กํ๋ ์ฃผ์ ๋ฅผ ๊ณ์ํด์ ์ ๊ธฐํ์ต๋๋ค. , ์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ๋น์ ์ด ํ ์ ์๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ คํ ๊ฒ์ ๋๋ค ์ ์ฅ๋ "๋ฌผ๋ฆฌ์ " ํฌ๊ธฐ๋ฅผ ์ค์ด์ธ์ PostgreSQL์์์ ์ฐจ์ด์ ๊ณผ ์๋ฒ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ๋ํด ์ค๋ช ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ~์ ๋ํด ์ด์ผ๊ธฐ ํ ๊ฒ์ด๋ค TOAST ์ค์ ๋ฐ ๋ฐ์ดํฐ ์ ๋ ฌ. "ํ๊ท ์ ์ผ๋ก" ์ด๋ฌํ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด๋ ๋ง์ ๋ฆฌ์์ค๋ฅผ ์ ์ฝํ ์๋ ์์ง๋ง ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ์ ํ ์์ ํ์ง ์๊ณ ๋ ๋ฆฌ์์ค๋ฅผ ์ ์ฝํ ์ ์์ต๋๋ค.

๊ทธ๋ฌ๋ ๊ฑฐ์ ๋ชจ๋ ๋ชจ๋ํฐ๋ง์ ์ ์ฅ์ ๋ณธ์ง์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ์ ์์ ์ฐ๋ฆฌ์ ๊ฒฝํ์ด ๋งค์ฐ ์์ฐ์ ์์ด ์
์ฆ๋์์ต๋๋ค. ๋๋ถ๋ถ ์ถ๊ฐ โโ์ ์ฉ ๊ธฐ๋ก๋๋ ๋ฐ์ดํฐ์ ๊ด์ ์์. ๊ทธ๋ฆฌ๊ณ ๋์คํฌ์ ์ฐ๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ด๋ป๊ฒ ๊ฐ๋ฅด์น ์ ์๋์ง์ ๊ด์ฌ์ด ์๋ค๋ฉด 200MB / s์ ๋ ๋ฐฐ๋ก ์ค์์ต๋๋ค. ์๋๋ฅผ ์ฐธ์กฐํ์ธ์.
๋น ๋ฐ์ดํฐ์ ์์ ๋น๋ฐ
์ง์ ํ๋กํ๋ณ ๊ทธ๋ ์ ๊ธฐ์ ์ผ๋ก ๋ก๊ทธ์์ ๋ฉ์์ง๋ฅผ ๋ฐ์ต๋๋ค. ํ ์คํธ ํจํค์ง.
์ดํ ์ฐ๋ฆฌ๊ฐ ๋ชจ๋ํฐ๋งํ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ๋ณต์กํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ ๋ค์ค ๊ตฌ์ฑ ์์ ์ ํ์ด๋ฉฐ ์ฟผ๋ฆฌ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ์ต๋ ์ฑ๋ฅ์ ๋ฌ์ฑํ๊ธฐ ์ํด ๊ทธ๋ค์ ๊ฝค ๊ทธ๋ฐ ์์ผ๋ก ๋์จ๋ค . ๋ฐ๋ผ์ ๋ก๊ทธ์ ๊ธฐ๋ก๋๋ ๊ฐ ๊ฐ๋ณ ์ฟผ๋ฆฌ ์ธ์คํด์ค์ ํฌ๊ธฐ๋ ๊ทธ ๊ฒฐ๊ณผ ์คํ ๊ณํ์ "ํ๊ท ์ ์ผ๋ก" ๋งค์ฐ ํฐ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค.
"์์" ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ํ ์ด๋ธ ์ค ํ๋์ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฆ, ๋ก๊ทธ ํญ๋ชฉ์ ์๋ณธ ํ ์คํธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
CREATE TABLE rawdata_orig(
pack -- PK
uuid NOT NULL
, recno -- PK
smallint NOT NULL
, dt -- ะบะปัั ัะตะบัะธะธ
date
, data -- ัะฐะผะพะต ะณะปะฐะฒะฝะพะต
text
, PRIMARY KEY(pack, recno)
);์ด์ ๊ฐ์ ์ ํ์ ์ธ ํ(๋ฌผ๋ก ์ด๋ฏธ ์น์ ์ด ๋๋์ด ์์ผ๋ฏ๋ก ์ด๋ ์น์ ํ ํ๋ฆฟ์ ๋๋ค)์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ์ ํ ์คํธ์ ๋๋ค. ๋๋ก๋ ๋งค์ฐ ๋ฐฉ๋ํฉ๋๋ค.
PG์์ ํ ๋ ์ฝ๋์ "๋ฌผ๋ฆฌ์ " ํฌ๊ธฐ๋ ํ ํ์ด์ง ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฐจ์งํ ์ ์์ง๋ง "๋ ผ๋ฆฌ์ " ํฌ๊ธฐ๋ ์ ํ ๋ค๋ฅธ ๋ฌธ์ ์ ๋๋ค. ํ๋์ ๋ณผ๋ฅจ ๊ฐ(varchar/text/bytea)์ ์ฐ๋ ค๋ฉด ๋ค์์ ์ฌ์ฉํ์ธ์. :
PostgreSQL์ ๊ณ ์ ๋ ํ์ด์ง ํฌ๊ธฐ(๋ณดํต 8KB)๋ฅผ ์ฌ์ฉํ๋ฉฐ, ํํ์ด ์ฌ๋ฌ ํ์ด์ง์ ๊ฑธ์ณ ์๋ ๊ฒ์ ํ์ฉํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ๋งค์ฐ ํฐ ํ๋ ๊ฐ์ ์ง์ ์ ์ฅํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค. ์ด๋ฌํ ์ ํ์ ๊ทน๋ณตํ๊ธฐ ์ํด ํฐ ํ๋ ๊ฐ์ ์์ถ๋๊ฑฐ๋ ์ฌ๋ฌ ๊ฐ์ ๋ฌผ๋ฆฌ์ ํ์ ๋ถํ ๋ฉ๋๋ค. ์ด ์์ ์ ์ฌ์ฉ์์๊ฒ ํฌ๋ช ํ๊ฒ ์ด๋ฃจ์ด์ง๋ฉฐ ๋๋ถ๋ถ์ ์๋ฒ ์ฝ๋์ ๊ฑฐ์ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ TOASTโฆ๋ผ๊ณ ๋ถ๋ฆฝ๋๋ค.
์ค์ ๋ก "์ ์ฌ์ ์ผ๋ก ํฐ" ํ๋๊ฐ ์๋ ๋ชจ๋ ํ ์ด๋ธ์ ๊ฒฝ์ฐ ์๋์ผ๋ก ๊ฐ "๋ํ" ๋ ์ฝ๋๋ 2KB ์ธ๊ทธ๋จผํธ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
TOAST(
chunk_id
integer
, chunk_seq
integer
, chunk_data
bytea
, PRIMARY KEY(chunk_id, chunk_seq)
); ์ฆ, "ํฐ" ๊ฐ์ ๊ฐ๋ ์ค์ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ data๊ทธ๋ฌ๋ฉด ์ค์ ๋
น์์ด ์งํ๋ฉ๋๋ค. ๋ฉ์ธ ํ
์ด๋ธ๊ณผ ๊ทธ PK๋ฟ๋ง ์๋๋ผ TOAST์ ๊ทธ PK์๋ ์ ์ฉ๋ฉ๋๋ค..
TOAST ์ํฅ ๊ฐ์
ํ์ง๋ง ์ฐ๋ฆฌ์ ๊ธฐ๋ก ๋๋ถ๋ถ์ ๊ทธ๋ ๊ฒ ํฌ์ง ์์ต๋๋ค. 8KB์ ๋ง์์ผ ํฉ๋๋ค - ์ด๋ป๊ฒ ํ๋ฉด ๋์ ์๋ ์ ์์๊น์?
์ฌ๊ธฐ์ ์์ฑ์ด ์ฐ๋ฆฌ์๊ฒ ๋์์ด ๋ฉ๋๋ค. ํ ์ด๋ธ ์ด์ ๋ํด:
- ํ์ฅ ์์ถ๊ณผ ๋ณ๋ ์ ์ฅ์ด ๋ชจ๋ ๊ฐ๋ฅํฉ๋๋ค. ์ด๊ฒ ํ์ค ์ต์ ๋๋ถ๋ถ์ TOAST ํธํ ๋ฐ์ดํฐ ์ ํ์ ๋ํด. ๋จผ์ ์์ถ์ ์๋ํ ๋ค์, ํ์ด ์ฌ์ ํ ๋๋ฌด ํด ๊ฒฝ์ฐ ํ ์ด๋ธ์์ ์ ์ฅ์ ์๋ํฉ๋๋ค.
- ๋ฉ์ธ ์์ถ์ ๊ฐ๋ฅํ์ง๋ง ๋ณ๋๋ก ์ ์ฅํ ์๋ ์์ต๋๋ค. (์ค์ ๋ก ์ด๋ฌํ ์ด์ ๋ํด์๋ ๋ณ๋์ ์ ์ฅ์ด ๊ณ์ ์ํ๋์ง๋ง ์ตํ์ ์๋จ์ผ๋ก(ํ์ด์ง์ ๋ง๊ฒ ์ค์ ์ค์ผ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ์๋ ๊ฒฝ์ฐ)
์ฌ์ค, ์ด๊ฒ์ ๋ฐ๋ก ์ฐ๋ฆฌ๊ฐ ํ ์คํธ์ ํ์๋ก ํ๋ ๊ฒ์ ๋๋ค. ์ต๋ํ ์์ถํ๊ณ , ์ ํ ์๋ง์ผ๋ฉด TOAST์ ๋ฃ์ด์ฃผ์ธ์. ๋ค์ ๋ช ๋ น ํ๋๋ก ๋ฐ๋ก ์ด ์์ ์ ์ํํ ์ ์์ต๋๋ค.
ALTER TABLE rawdata_orig ALTER COLUMN data SET STORAGE MAIN;ํจ๊ณผ๋ฅผ ํ๊ฐํ๋ ๋ฐฉ๋ฒ
๋ฐ์ดํฐ ํ๋ฆ์ ๋งค์ผ ๋ฐ๋๊ธฐ ๋๋ฌธ์ ์ ๋์ ์ธ ์์น๋ฅผ ๋น๊ตํ ์๋ ์์ง๋ง ์๋์ ์ธ ์์น๋ฅผ ๋น๊ตํ ์ ์์ต๋๋ค. ๋ ์์ ๋ชซ ์ฐ๋ฆฌ๋ ๊ทธ๊ฒ์ TOAST์ ์ ์ด ๋์์ต๋๋ค. ๊ทธ๊ฒ ๋ ์ข์์ต๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์๋ ์ํ์ด ์์ต๋๋ค. ๊ฐ ๊ฐ๋ณ ๋ ์ฝ๋์ "๋ฌผ๋ฆฌ์ " ๋ณผ๋ฅจ์ด ํด์๋ก ์ธ๋ฑ์ค๋ ๋ "๋์ด์ง๋๋ค". ์๋ํ๋ฉด ์ธ๋ฑ์ค๊ฐ ๋ค๋ฃจ์ด์ผ ํ ๋ฐ์ดํฐ ํ์ด์ง ์๊ฐ ๋ ๋ง์์ง๊ธฐ ๋๋ฌธ์ ๋๋ค.
์น์ ๋ณ๊ฒฝ ์ :
heap = 37GB (39%)
TOAST = 54GB (57%)
PK = 4GB ( 4%)
์น์ ๋ณ๊ฒฝ ํ:
heap = 37GB (67%)
TOAST = 16GB (29%)
PK = 2GB ( 4%)์ฌ์ค, ์ฐ๋ฆฌ๋ TOAST์ ๊ธ์ ์ฐ๋ ๋น๋๊ฐ 2๋ฐฐ ์ค์์ต๋๋ค.๋์คํฌ๋ฟ๋ง ์๋๋ผ CPU๋ ์ธ๋ก๋ํฉ๋๋ค.


๋ํ, ๋์คํฌ๋ฅผ "์ฐ๊ธฐ"๋ง ํ๋ ๊ฒ์ด ์๋๋ผ "์ฝ๊ธฐ"๋ ๋ ํ๊ฒ ๋์๋ค๋ ์ ์ ์ ์ํ์๊ธฐ ๋ฐ๋๋๋ค. ์ด๋ค ํ
์ด๋ธ์ ๋ ์ฝ๋๋ฅผ ์ฝ์
ํ ๋, ๊ฐ ์ธ๋ฑ์ค์ ํธ๋ฆฌ ์ผ๋ถ๋ฅผ "์ฝ์ด์" ํด๋น ์ธ๋ฑ์ค์ ๋ฏธ๋ ์์น๋ฅผ ๊ฒฐ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์
๋๋ค.
PostgreSQL 11์์ ์ ์ฌ๋ ์ฌ๋
PG11๋ก ์ ๋ฐ์ดํธํ ํ TOAST๋ฅผ "์กฐ์ "ํ๊ธฐ๋ก ๊ฒฐ์ ํ๊ณ ์ด ๋ฒ์ ๋ถํฐ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ์ฑ์ ์ฌ์ฉํ ์ ์๊ฒ ๋์๋ค๋ ๊ฒ์ ์์์ต๋๋ค. :
TOAST ์ฒ๋ฆฌ ์ฝ๋๋ ํ ์ด๋ธ์ ์ ์ฅ๋ ํ ๊ฐ์ด TOAST_TUPLE_THRESHOLD ๋ฐ์ดํธ(์ผ๋ฐ์ ์ผ๋ก 2KB)๋ณด๋ค ํฐ ๊ฒฝ์ฐ์๋ง ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค. TOAST ์ฝ๋๋ ํ ๊ฐ์ด TOAST_TUPLE_TARGET ๋ฐ์ดํธ(๋ณ์, ์ผ๋ฐ์ ์ผ๋ก 2KB)๋ณด๋ค ์๊ฑฐ๋ ํฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์ ๋๊น์ง ํ ์ด๋ธ์์ ํ๋ ๊ฐ์ ์์ถํ๊ฑฐ๋ ํ ์ด๋ธ ๋ฐ์ผ๋ก ์ด๋ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ๊ฐ ์ผ๋ฐ์ ์ผ๋ก "๋งค์ฐ ์งง๊ฑฐ๋" "๋งค์ฐ ๊ธธ๋ค"๊ณ ํ๋จํ์ฌ ๊ฐ๋ฅํ ์ต์๊ฐ์ผ๋ก ์ ํํ๊ธฐ๋ก ํ์ต๋๋ค.
ALTER TABLE rawplan_orig SET (toast_tuple_target = 128);์ฌ๊ตฌ์ฑ ํ ์๋ก์ด ์ค์ ์ด ๋์คํฌ ๋ก๋ฉ์ ์ด๋ค ์ํฅ์ ๋ฏธ์น๋์ง ์ดํด๋ณด๊ฒ ์ต๋๋ค.

๋์์ง ์๋ค์! ํ๊ท ๋์คํฌ ๋๊ธฐ์ด์ด ์ค์์ต๋๋ค ์ฝ 1.5๋ฐฐ์ด๊ณ ๋์คํฌ "์ ์ ์จ"์ 20%์
๋๋ค! ํ์ง๋ง ์ด์ฉ๋ฉด CPU์ ์ํฅ์ ๋ฏธ์ณค์ ์๋ ์์๊น?

์ ์ด๋ ํ์คํ ๋ ๋๋น ์ง์ง๋ ์์์ด์. ๊ทธ๋ฌ๋ ๊ทธ๋ฌํ ๋ณผ๋ฅจ์กฐ์ฐจ๋ ์ฌ์ ํ ํ๊ท CPU ๋ถํ๋ฅผ ๋ ๋์ผ ์ ์๋์ง ํ๋จํ๊ธฐ๋ ์ด๋ ต์ต๋๋ค. 5%.
ํญ์ ์์๋ฅผ ๋ฐ๊พธ๋ฉด ํฉ๊ณ๊ฐ ๋ฐ๋์ฃ !
์์๋ค์ํผ, ์ ์ฝํ 1ํ๋๋ ๋ฒ์ด๋ค์ธ 1ํ๋์ ๊ฐ์ผ๋ฉฐ, ์ฐ๋ฆฌ์ ์ ์ฅ ์ฉ๋์๋ ์ฃผ๋ฌธ์ด ์์ต๋๋ค. 10TB/์ ์กฐ๊ธ๋ง ์ต์ ํํด๋ ์ข์ ์์ต์ ๋ผ ์ ์์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ฐ์ดํฐ์ ๋ฌผ๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ดํด๋ณด์์ต๋๋ค. ์ ํํ ์ด๋ป๊ฒ ๋ ์ฝ๋ ๋ด๋ถ์ "์คํ" ํ๋ ๊ฐ ํ ์ด๋ธ
๋๋ฌธ์ ๊ทธ๊ฒ์ ์ง์ ์ด๋ค :
๋ง์ ์ํคํ ์ฒ๋ ๋จธ์ ๋จ์ด ๊ฒฝ๊ณ์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ์ ๋ ฌ์ ์ ๊ณตํฉ๋๋ค. ์๋ฅผ ๋ค์ด, 32๋นํธ x86 ์์คํ ์์ ์ ์(์ ์ํ, 4๋ฐ์ดํธ)๋ 4๋ฐ์ดํธ ๋จ์ด ๊ฒฝ๊ณ์ ์ ๋ ฌ๋๊ณ , ๋ฐฐ์ ๋ฐ๋ ๋ถ๋ ์์์ ์ซ์(๋ฐฐ์ ๋ฐ๋ํ, 8๋ฐ์ดํธ)๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. 64๋นํธ ์์คํ ์์๋ double ๊ฐ์ด 8๋ฐ์ดํธ ๋จ์ด ๊ฒฝ๊ณ์ ์ ๋ ฌ๋ฉ๋๋ค. ์ด๋ ๋นํธํ์ฑ์ ๋ ๋ค๋ฅธ ์ด์ ์ ๋๋ค.
์ ๋ ฌ๋ก ์ธํด ํ ์ด๋ธ โโํ์ ํฌ๊ธฐ๋ ํ๋ ์์์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ด๋ฌํ ํจ๊ณผ๋ ํฌ๊ฒ ๋์ ๋์ง ์์ง๋ง ์ด๋ค ๊ฒฝ์ฐ์๋ ํฌ๊ธฐ๊ฐ ์๋นํ ์ฆ๊ฐํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, char(1) ํ๋์ ์ ์ ํ๋๋ฅผ ์์ผ๋ฉด ์ผ๋ฐ์ ์ผ๋ก ๋ ํ๋ ์ฌ์ด์ 3๋ฐ์ดํธ๊ฐ ๋ญ๋น๋ฉ๋๋ค.
ํฉ์ฑ ๋ชจ๋ธ๋ถํฐ ์์ํด ๋ณด๊ฒ ์ต๋๋ค.
SELECT pg_column_size(ROW(
'0000-0000-0000-0000-0000-0000-0000-0000'::uuid
, 0::smallint
, '2019-01-01'::date
));
-- 48 ะฑะฐะนั
SELECT pg_column_size(ROW(
'2019-01-01'::date
, '0000-0000-0000-0000-0000-0000-0000-0000'::uuid
, 0::smallint
));
-- 46 ะฑะฐะนั์ฒซ ๋ฒ์งธ ๊ฒฝ์ฐ์ ์ถ๊ฐ๋ ๋ช ๋ฐ์ดํธ๋ ์ด๋์ ๋์๋์? ๊ฐ๋จํฉ๋๋ค. 2๋ฐ์ดํธ smallint๋ 4๋ฐ์ดํธ ๊ฒฝ๊ณ์ ์ ๋ ฌ๋ฉ๋๋ค. ๋ค์ ํ๋ ์ , ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ํ๋์ผ ๋๋ ์๋ฌด๊ฒ๋ ์์ผ๋ฏ๋ก ์ ๋ ฌํ ํ์๊ฐ ์์ต๋๋ค.
์ด๋ก ์์ผ๋ก๋ ๋ชจ๋ ๊ฒ์ด ๊ด์ฐฎ์ผ๋ฉฐ ์ํ๋ ๋๋ก ํ๋๋ฅผ ์ฌ๋ฐฐ์ดํ ์ ์์ต๋๋ค. ์์๋ก ํ ์ด๋ธ ์ค ํ๋๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ ๋ฐ์ดํฐ์์ ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค. ์ด ํ ์ด๋ธ์ ์ผ์ผ ์น์ ์ 10~15GB๋ฅผ ์ฐจ์งํฉ๋๋ค.
์๋ ๊ตฌ์กฐ:
CREATE TABLE public.plan_20190220
(
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: pack uuid NOT NULL,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: recno smallint NOT NULL,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: host uuid,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: ts timestamp with time zone,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: exectime numeric(32,3),
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: duration numeric(32,3),
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: bufint bigint,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: bufmem bigint,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: bufdsk bigint,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: apn uuid,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: ptr uuid,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: dt date,
CONSTRAINT plan_20190220_pkey PRIMARY KEY (pack, recno),
CONSTRAINT chck_ptr CHECK (ptr IS NOT NULL),
CONSTRAINT plan_20190220_dt_check CHECK (dt = '2019-02-20'::date)
)
INHERITS (public.plan)์ด ์์๋ฅผ ๋ณ๊ฒฝํ ํ์ ์น์ ์ ์ง์์ ๋๋ค. ๊ฐ์ ํ๋, ๋ค๋ง ์์๋ง ๋ค๋ฅผ ๋ฟ:
CREATE TABLE public.plan_20190221
(
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: dt date NOT NULL,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: ts timestamp with time zone,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: pack uuid NOT NULL,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: recno smallint NOT NULL,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: host uuid,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: apn uuid,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: ptr uuid,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: bufint bigint,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: bufmem bigint,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: bufdsk bigint,
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: exectime numeric(32,3),
-- ะฃะฝะฐัะปะตะดะพะฒะฐะฝะฐ from table plan: duration numeric(32,3),
CONSTRAINT plan_20190221_pkey PRIMARY KEY (pack, recno),
CONSTRAINT chck_ptr CHECK (ptr IS NOT NULL),
CONSTRAINT plan_20190221_dt_check CHECK (dt = '2019-02-21'::date)
)
INHERITS (public.plan) ์น์
์ ์ด ๋ณผ๋ฅจ์ "ํฉํธ"์ ์์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ฉฐ ์ธ๋ถ ํ๋ก์ธ์ค์๋ง ์์กดํ๋ฏ๋ก ํ์ ํฌ๊ธฐ๋ฅผ ๋๋๋๋ค(pg_relation_size) ๊ทธ ์์ ์๋ ๋ ์ฝ๋์ ์์ ๋ฐ๋ผ - ์ฆ, ์ฐ๋ฆฌ๋ ์ป์ต๋๋ค. ์ค์ ์ ์ฅ๋ ๋ ์ฝ๋์ ํ๊ท ํฌ๊ธฐ:

๋ง์ด๋์ค 6% ๋ณผ๋ฅจ, ์์ฒญ๋!
ํ์ง๋ง ๋ฌผ๋ก ๋ชจ๋ ๊ฒ์ด ๊ทธ๋ ๊ฒ ์ฅ๋ฐ๋น์ธ ๊ฒ์ ์๋๋๋ค. ์ธ๋ฑ์ค์์๋ ํ๋ ์์๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค., ๋ฐ๋ผ์ "์ผ๋ฐ์ ์ผ๋ก"(pg_total_relation_size) ...

โฆ๊ทธ๋ฆฌ๊ณ ์ฌ๊ธฐ์๋ ๊ฒฐ๊ตญ 1.5% ์ ์ฝ์ฝ๋ ํ ์ค๋ ๋ณ๊ฒฝํ์ง ์๊ณ ๋. ๋ฌผ๋ก ์ด์ฃ !

์์ ํ๋ ๋ฐฐ์ด ์ต์
์ด ๋ฐ๋์ ๊ฐ์ฅ ์ต์ ์ ์๋๋ผ๋ ์ ์ ์๋ ค๋๋ฆฌ๊ณ ์ถ์ต๋๋ค. ์ผ๋ถ ํ๋ ๋ธ๋ก์ ๋ฏธํ์ ์ด์ ๋ก "์ฐข์ด์ง๋" ๊ฒ์ ์ํ์ง ์๊ธฐ ๋๋ฌธ์ - ์๋ฅผ ๋ค์ด, (pack, recno)์ด ํ
์ด๋ธ์ PK๋ ์
๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ํ๋์ "์ต์" ๋ฐฐ์ด์ ๊ฒฐ์ ํ๋ ๊ฒ์ ์๋นํ ๊ฐ๋จํ "์ด๊ฑฐ" ์์
์
๋๋ค. ๋ฐ๋ผ์ ๊ทํ๋ ๋น์ฌ๋ณด๋ค ๋ ๋์ ๋ฐ์ดํฐ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ์๋ํด ๋ณด์ธ์!
์ถ์ฒ : habr.com
