๊ณ์ํด์ ๋ฐ์ํ๋ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์คํธ๋ฆผ ๊ธฐ๋ก ์ฃผ์
์ฐ๋ฆฌ๋์ ๋ํด ์ด์ผ๊ธฐ ํ ๊ฒ์ ๋๋ค 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๋ผ๊ณ ํฉ๋๋ค.
์ค์ ๋ก "์ ์ฌ์ ์ผ๋ก ํฐ" ํ๋๊ฐ ์๋ ๋ชจ๋ ํ
์ด๋ธ์ ๋ํด ์๋์ผ๋ก
TOAST(
chunk_id
integer
, chunk_seq
integer
, chunk_data
bytea
, PRIMARY KEY(chunk_id, chunk_seq)
);
์ฆ, "ํฐ" ๊ฐ์ ๊ฐ์ง ๋ฌธ์์ด์ ์์ฑํด์ผ ํ๋ ๊ฒฝ์ฐ data
, ๊ทธ๋ฌ๋ฉด ์ค์ ๋
น์์ด ๋ฐ์ํฉ๋๋ค ๋ฉ์ธ ํ
์ด๋ธ๊ณผ ํด๋น PK๋ฟ๋ง ์๋๋ผ TOAST์ ํด๋น PK๊น์ง.
TOAST ์ํฅ๋ ฅ ๊ฐ์
ํ์ง๋ง ์ฐ๋ฆฌ์ ๋๋ถ๋ถ์ ๊ธฐ๋ก์ ์์ง ๊ทธ๋ ๊ฒ ํฌ์ง๋ ์์ต๋๋ค. 8KB์ ๋ง์์ผ ํจ - ์ด๋ป๊ฒ ํ๋ฉด ๋์ ์ ์ฝํ ์ ์๋์?..
์ด๊ฒ์ด ๋ฐ๋ก ์์ฑ์ด ์ฐ๋ฆฌ์๊ฒ ๋์์ด ๋๋ ๊ณณ์
๋๋ค. STORAGE
- ํ์ฅ ์์ถ๊ณผ ๋ณ๋ ์ ์ฅ์ด ๋ชจ๋ ๊ฐ๋ฅํฉ๋๋ค. ์ด๊ฒ ํ์ค ์ต์ ๋๋ถ๋ถ์ 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_tuple_target
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%.
์ฉ์ด์ ์์น๋ฅผ โโ๋ณ๊ฒฝํ๋ฉด ํฉ๊ณ๊ฐ... ๋ณ๊ฒฝ๋ฉ๋๋ค!
์์๋ค์ํผ, XNUMXํ๋๋ ๋ฃจ๋ธ์ ์ ์ฝํ๋ฉฐ ์ ์ฅ๋์ ๋๋ต 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๋ฐ์ดํธ ๊ฒฝ๊ณ์ ์ ๋ ฌ๋ 4๋ฐ์ดํธ smallint ๋ค์ ํ๋ ์๊ณผ ๋ง์ง๋ง ํ๋์ธ ๊ฒฝ์ฐ ์๋ฌด๊ฒ๋ ์์ผ๋ฉฐ ์ ๋ ฌํ ํ์๋ ์์ต๋๋ค.
์ด๋ก ์ ์ผ๋ก๋ ๋ชจ๋ ๊ฒ์ด ์ ์์ด๋ฉฐ ์ํ๋ ๋๋ก ํ๋๋ฅผ ๋ค์ ์ ๋ ฌํ ์ ์์ต๋๋ค. ์ผ์ผ ์น์ ์ด 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