PostgreSQL เชฎเชพเช‚ เชฎเซ‹เชŸเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเชฐ เชเช• เชชเซˆเชธเซ‹ เชฌเชšเชพเชตเซ‹

เชฆเซเชตเชพเชฐเชพ เช‰เชญเชพ เช•เชฐเชพเชฏเซ‡เชฒเชพ เชฎเซ‹เชŸเชพ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเซ€เชฎเซเชธเชจเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเชตเชพเชจเซ‹ เชตเชฟเชทเชฏ เชšเชพเชฒเซ เชฐเชพเช–เชตเซ‹ เชชเชพเชฐเซเชŸเซ€เชถเชจ เชตเชฟเชถเซ‡ เช…เช—เชพเช‰เชจเซ‹ เชฒเซ‡เช–, เช†เชฎเชพเช‚ เช…เชฎเซ‡ เชคเชฎเซ‡ เช•เชˆ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เชคเซ‡ เชœเซ‹เชˆเชถเซเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชคเชจเซเช‚ "เชญเซŒเชคเชฟเช•" เช•เชฆ เช˜เชŸเชพเชกเชตเซเช‚ PostgreSQL เชฎเชพเช‚, เช…เชจเซ‡ เชธเชฐเซเชตเชฐ เชชเซเชฐเชฆเชฐเซเชถเชจ เชชเชฐ เชคเซ‡เชฎเชจเซ€ เช…เชธเชฐ.

เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถเซเช‚ TOAST เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เช…เชจเซ‡ เชกเซ‡เชŸเชพ เช—เซ‹เช เชตเชฃเซ€. "เชธเชฐเซ‡เชฐเชพเชถ," เช† เชชเชฆเซเชงเชคเชฟเช“ เช˜เชฃเชพ เชฌเชงเชพ เชธเช‚เชธเชพเชงเชจเซ‹เชจเซ‡ เชฌเชšเชพเชตเชถเซ‡ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชกเชจเซ‡ เชฌเชฟเชฒเช•เซเชฒ เชธเช‚เชถเซ‹เชงเชฟเชค เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ.

PostgreSQL เชฎเชพเช‚ เชฎเซ‹เชŸเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเชฐ เชเช• เชชเซˆเชธเซ‹ เชฌเชšเชพเชตเซ‹
เชœเซ‹ เช•เซ‡, เช…เชฎเชพเชฐเซ‹ เช…เชจเซเชญเชต เช† เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เช–เซ‚เชฌ เชœ เชซเชณเชฆเชพเชฏเซ€ เชธเชพเชฌเชฟเชค เชฅเชฏเซ‹, เช•เชพเชฐเชฃ เช•เซ‡ เชฒเช—เชญเช— เช•เซ‹เชˆเชชเชฃ เชฆเซ‡เช–เชฐเซ‡เช–เชจเซ‹ เชธเช‚เช—เซเชฐเชน เชคเซ‡เชจเซ€ เชชเซเชฐเช•เซƒเชคเชฟ เชฆเซเชตเชพเชฐเชพ เชฎเซ‹เชŸเซ‡ เชญเชพเช—เซ‡ เชซเช•เซเชค เชœเซ‹เชกเชพเชฏ เช›เซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเซ‡เชฒเชพ เชกเซ‡เชŸเชพเชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚. เช…เชจเซ‡ เชœเซ‹ เชคเชฎเซ‡ เช†เชถเซเชšเชฐเซเชฏ เชชเชพเชฎเซ€ เชฐเชนเซเชฏเชพ เชนเซ‹เชต เช•เซ‡ เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡ เชคเชฎเซ‡ เชกเซ‡เชŸเชพเชฌเซ‡เชเชจเซ‡ เชกเชฟเชธเซเช• เชชเชฐ เชฒเช–เชตเชพเชจเซเช‚ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชถเซ€เช–เชตเซ€ เชถเช•เซ‹ เช›เซ‹ 200MB / เชธเซ‡เช•เช‚เชก เช…เชกเชงเชพ เชœเซ‡เชŸเชฒเซเช‚ - เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เชฌเชฟเชฒเชพเชกเซ€เชจเซ€ เชจเซ€เชšเซ‡.

เชฎเซ‹เชŸเชพ เชกเซ‡เชŸเชพเชจเชพ เชจเชพเชจเชพ เชฐเชนเชธเซเชฏเซ‹

เชœเซ‹เชฌ เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชฆเซเชตเชพเชฐเชพ เช…เชฎเชพเชฐเซ€ เชธเซ‡เชตเชพ, เชคเซ‡เช“ เชจเชฟเชฏเชฎเชฟเชคเชชเชฃเซ‡ เชฅเชพเช‚เชญเชฒเชพเชฎเชพเช‚เชฅเซ€ เชคเซ‡เชจเซ€ เชชเชพเชธเซ‡ เช‰เชกเซ‡ เช›เซ‡ เชŸเซ‡เช•เซเชธเซเชŸ เชชเซ‡เช•เซ‡เชœเซ‹.

เช…เชจเซ‡ เชคเซเชฏเชพเชฐเชฅเซ€ VLSI เชธเช‚เช•เซเชฒเชœเซ‡เชจเซ‹ เชกเซ‡เชŸเชพเชฌเซ‡เช เช…เชฎเซ‡ เชฎเซ‹เชจเชฟเชŸเชฐ เช•เชฐเซ€เช เช›เซ€เช เชคเซ‡ เชœเชŸเชฟเชฒ เชกเซ‡เชŸเชพ เชธเซเชŸเซเชฐเช•เซเชšเชฐเซเชธ เชธเชพเชฅเซ‡ เชฌเชนเซ-เช˜เชŸเช• เช‰เชคเซเชชเชพเชฆเชจ เช›เซ‡, เชชเช›เซ€ เชชเซเชฐเชถเซเชจเซ‹ เชฎเชนเชคเซเชคเชฎ เช•เชพเชฎเช—เซ€เชฐเซ€ เชฎเชพเชŸเซ‡ เชคเชฆเซเชฆเชจ เช† เชฐเซ€เชคเซ‡ เชฌเชนเชพเชฐ เชตเชณเซ‹ เชœเชŸเชฟเชฒ เช…เชฒเซเช—เซ‹เชฐเชฟเชงเชฎเชฟเช• เชคเชฐเซเช• เชธเชพเชฅเซ‡ "เชฎเชฒเซเชŸเซ€-เชตเซ‹เชฒเซเชฏเซเชฎ".. เชคเซ‡เชฅเซ€ เชตเชฟเชจเช‚เชคเซ€เชจเชพ เชฆเชฐเซ‡เช• เชตเซเชฏเช•เซเชคเชฟเช—เชค เชฆเชพเช–เชฒเชพเชจเซเช‚ เชตเซ‹เชฒเซเชฏเซเชฎ เช…เชฅเชตเชพ เชฒเซ‹เช—เชฎเชพเช‚ เชชเชฐเชฟเชฃเชพเชฎเซ€ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชฏเซ‹เชœเชจเชพ เชœเซ‡ เช…เชฎเชจเซ‡ เช†เชตเซ‡ เช›เซ‡ เชคเซ‡ "เชธเชฐเซ‡เชฐเชพเชถ" เช–เซ‚เชฌ เชฎเซ‹เชŸเซ€ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡.

เชšเชพเชฒเซ‹ เช•เซ‹เชทเซเชŸเช•เซ‹เชฎเชพเช‚เชฅเซ€ เชเช•เชจเซ€ เชฐเชšเชจเชพ เชœเซ‹เชˆเช เชœเซ‡เชฎเชพเช‚ เช†เชชเชฃเซ‡ "เช•เชพเชšเซ‹" เชกเซ‡เชŸเชพ เชฒเช–เซ€เช เช›เซ€เช - เชเชŸเชฒเซ‡ เช•เซ‡, เช…เชนเซ€เช‚ เชฒเซ‹เช— เชเชจเซเชŸเซเชฐเซ€เชฎเชพเช‚เชฅเซ€ เชฎเซ‚เชณ เชŸเซ‡เช•เซเชธเซเชŸ เช›เซ‡:

CREATE TABLE rawdata_orig(
  pack -- PK
    uuid NOT NULL
, recno -- PK
    smallint NOT NULL
, dt -- ะบะปัŽั‡ ัะตะบั†ะธะธ
    date
, data -- ัะฐะผะพะต ะณะปะฐะฒะฝะพะต
    text
, PRIMARY KEY(pack, recno)
);

เชเช• เชฒเชพเช•เซเชทเชฃเชฟเช• เชšเชฟเชนเซเชจ (เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชตเชฟเชญเชพเช— เช•เชฐเซ‡เชฒ เช›เซ‡, เช…เชฒเชฌเชคเซเชค, เชคเซ‡เชฅเซ€ เช† เชเช• เชตเชฟเชญเชพเช—เชจเซ‹ เชจเชฎเซ‚เชจเซ‹ เช›เซ‡), เชœเซเชฏเชพเช‚ เชธเซŒเชฅเซ€ เชฎเชนเชคเซเชตเชจเซ€ เชตเชธเซเชคเซ เชŸเซ‡เช•เซเชธเซเชŸ เช›เซ‡. เช•เซเชฏเชพเชฐเซ‡เช• เชคเชฆเซเชฆเชจ เชชเซเชฐเชšเช‚เชก.

เชฏเชพเชฆ เช•เชฐเซ‹ เช•เซ‡ เชชเซ€เชœเซ€เชฎเชพเช‚ เชเช• เชฐเซ‡เช•เซ‹เชฐเซเชกเชจเซเช‚ "เชญเซŒเชคเชฟเช•" เช•เชฆ เชกเซ‡เชŸเชพเชจเชพ เชเช• เช•เชฐเชคเชพเช‚ เชตเชงเซ เชชเซƒเชทเซเช เชจเซ‡ เชฐเซ‹เช•เซ€ เชถเช•เชคเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ "เชคเชพเชฐเซเช•เชฟเช•" เช•เชฆ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช…เชฒเช— เชฌเชพเชฌเชค เช›เซ‡. เชซเซ€เชฒเซเชกเชฎเชพเช‚ เชตเซ‹เชฒเซเชฏเซเชฎเซ‡เชŸเซเชฐเชฟเช• เชฎเซ‚เชฒเซเชฏ (varchar/text/bytea) เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡, เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‹ TOAST เชŸเซ‡เช•เชจเซ‹เชฒเซ‹เชœเซ€:

PostgreSQL เชจเชฟเชถเซเชšเชฟเชค เชชเซƒเชทเซเช  เช•เชฆ (เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ 8 KB) เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชŸเซเชฏเซเชชเชฒเซเชธเชจเซ‡ เชฌเชนเซเชตเชฟเชง เชชเซƒเชทเซเช เซ‹เชจเซ‡ เชซเซ‡เชฒเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชคเซเช‚ เชจเชฅเซ€. เชคเซ‡เชฅเซ€, เช–เซ‚เชฌ เชฎเซ‹เชŸเชพ เชซเซ€เชฒเซเชก เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ‡ เชธเซ€เชงเชพ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเซเช‚ เช…เชถเช•เซเชฏ เช›เซ‡. เช† เชฎเชฐเซเชฏเชพเชฆเชพเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชฎเซ‹เชŸเชพ เช•เซเชทเซ‡เชคเซเชฐเชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ‡ เชธเช‚เช•เซเชšเชฟเชค เช…เชจเซ‡/เช…เชฅเชตเชพ เชฌเชนเซเชตเชฟเชง เชญเซŒเชคเชฟเช• เชฐเซ‡เช–เชพเช“เชฎเชพเช‚ เชตเชฟเชญเชพเชœเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฆเซเชตเชพเชฐเชพ เช•เซ‹เชˆเชจเชพ เชงเซเชฏเชพเชจ เชตเชฟเชจเชพ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชฎเซ‹เชŸเชพเชญเชพเช—เชจเชพ เชธเชฐเซเชตเชฐ เช•เซ‹เชก เชชเชฐ เชคเซ‡เชจเซ€ เช“เช›เซ€ เช…เชธเชฐ เชชเชกเซ‡ เช›เซ‡. เช† เชชเชฆเซเชงเชคเชฟ TOAST เชคเชฐเซ€เช•เซ‡ เช“เชณเช–เชพเชฏ เช›เซ‡...

เชตเชพเชธเซเชคเชตเชฎเชพเช‚, "เชธเช‚เชญเชตเชฟเชค เชฐเซ‚เชชเซ‡ เชฎเซ‹เชŸเชพ" เช•เซเชทเซ‡เชคเซเชฐเซ‹ เชธเชพเชฅเซ‡เชจเชพ เชฆเชฐเซ‡เช• เช•เซ‹เชทเซเชŸเช• เชฎเชพเชŸเซ‡, เช†เชชเชฎเซ‡เชณเซ‡ "เชธเซเชฒเชพเช‡เชธเชฟเช‚เช—" เชธเชพเชฅเซ‡ เชœเซ‹เชกเซ€ เชŸเซ‡เชฌเชฒ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ 2KB เชธเซ‡เช—เชฎเซ‡เชจเซเชŸเชฎเชพเช‚ เชฆเชฐเซ‡เช• "เชฎเซ‹เชŸเซ‹" เชฐเซ‡เช•เซ‹เชฐเซเชก:

TOAST(
  chunk_id
    integer
, chunk_seq
    integer
, chunk_data
    bytea
, PRIMARY KEY(chunk_id, chunk_seq)
);

เชเชŸเชฒเซ‡ เช•เซ‡, เชœเซ‹ เช†เชชเชฃเซ‡ "เชฎเซ‹เชŸเชพ" เชฎเซ‚เชฒเซเชฏ เชธเชพเชฅเซ‡ เชธเซเชŸเซเชฐเชฟเช‚เช— เชฒเช–เชตเชพเชจเซ€ เชนเซ‹เชฏ data, เชชเช›เซ€ เชตเชพเชธเซเชคเชตเชฟเช• เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช— เชฅเชถเซ‡ เชฎเชพเชคเซเชฐ เชฎเซเช–เซเชฏ เชŸเซ‡เชฌเชฒ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชชเซ€เช•เซ‡ เชฎเชพเชŸเซ‡ เชœ เชจเชนเซ€เช‚, เชชเชฃ เชŸเซ‹เชธเซเชŸ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชชเซ€เช•เซ‡ เชฎเชพเชŸเซ‡ เชชเชฃ.

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 เชฎเชพเช‚ เชฎเซ‹เชŸเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเชฐ เชเช• เชชเซˆเชธเซ‹ เชฌเชšเชพเชตเซ‹
PostgreSQL เชฎเชพเช‚ เชฎเซ‹เชŸเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเชฐ เชเช• เชชเซˆเชธเซ‹ เชฌเชšเชพเชตเซ‹
เชนเซเช‚ เชจเซ‹เช‚เชง เช•เชฐเซ€เชถ เช•เซ‡ เช†เชชเชฃเซ‡ เชกเชฟเชธเซเช•เชจเซ‡ "เชตเชพเช‚เชšเชตเชพ" เชฎเชพเช‚ เชชเชฃ เชจเชพเชจเชพ เชฅเชˆ เช—เชฏเชพ เช›เซ€เช, เชฎเชพเชคเซเชฐ "เชฒเซ‡เช–เชจ" เชœ เชจเชนเซ€เช‚ - เช•เชพเชฐเชฃ เช•เซ‡ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชก เชฆเชพเช–เชฒ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เช†เชชเชฃเซ‡ เชคเซ‡เชจเชพ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฆเชฐเซ‡เช• เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเชจเชพ เชตเซƒเช•เซเชทเชจเซ‹ เชญเชพเช— "เชตเชพเช‚เชšเชตเซเช‚" เชชเชกเชถเซ‡. เชคเซ‡เชฎเชจเชพเชฎเชพเช‚ เชญเชพเชตเชฟ เชธเซเชฅเชฟเชคเชฟ.

PostgreSQL 11 เชชเชฐ เช•เซ‹เชฃ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชœเซ€เชตเซ€ เชถเช•เซ‡ เช›เซ‡

PG11 เชฎเชพเช‚ เช…เชชเชกเซ‡เชŸ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเซ‡ TOAST "เชŸเซเชฏเซเชจเชฟเช‚เช—" เชšเชพเชฒเซ เชฐเชพเช–เชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เชจเซ‹เช‚เชงเซเชฏเซเช‚ เช•เซ‡ เช† เชธเช‚เชธเซเช•เชฐเชฃเชฅเซ€ เชถเชฐเซ‚ เช•เชฐเซ€เชจเซ‡ เชชเชฐเชฟเชฎเชพเชฃ เชŸเซเชฏเซเชจเชฟเช‚เช— เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง เชฌเชจเซเชฏเซเช‚ เช›เซ‡. toast_tuple_target:

TOAST เชชเซเชฐเซ‹เชธเซ‡เชธเชฟเช‚เช— เช•เซ‹เชก เชคเซเชฏเชพเชฐเซ‡ เชœ เชซเชพเชฏเชฐ เชฅเชพเชฏ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชชเช‚เช•เซเชคเชฟเชจเซ€ เช•เชฟเช‚เชฎเชค TOAST_TUPLE_THRESHOLD เชฌเชพเช‡เชŸเซเชธ (เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ 2 KB) เช•เชฐเชคเชพเช‚ เชฎเซ‹เชŸเซ€ เชนเซ‹เชฏ. เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชชเช‚เช•เซเชคเชฟเชจเซเช‚ เชฎเซ‚เชฒเซเชฏ TOAST_TUPLE_TARGET เชฌเชพเช‡เชŸเซเชธ (เชšเชฒ เชฎเซ‚เชฒเซเชฏ, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ 2 KB เชชเชฃ) เช•เชฐเชคเชพเช‚ เช“เช›เซเช‚ เชจ เชฅเชพเชฏ เชคเซเชฏเชพเช‚ เชธเซเชงเซ€ TOAST เช•เซ‹เชก เชซเซ€เชฒเซเชก เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ‡ เช•เซ‹เชฎเซเชชเซเชฐเซ‡เชธ เช•เชฐเชถเซ‡ เช…เชจเซ‡/เช…เชฅเชตเชพ เช•เซ‹เชทเซเชŸเช•เชจเซ€ เชฌเชนเชพเชฐ เช–เชธเซ‡เชกเชถเซ‡ เช…เชฅเชตเชพ เช•เชฆ เช˜เชŸเชพเชกเซ€ เชถเช•เชพเชถเซ‡ เชจเชนเซ€เช‚.

เช…เชฎเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชœเซ‡ เชกเซ‡เชŸเชพ เชนเซ‹เชฏ เช›เซ‡ เชคเซ‡ เช•เชพเช‚ เชคเซ‹ "เช–เซ‚เชฌ เชœ เชŸเซ‚เช‚เช•เซ‹" เช…เชฅเชตเชพ "เช–เซ‚เชฌ เชฒเชพเช‚เชฌเซ‹" เชนเซ‹เชฏ เช›เซ‡, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชชเซ‹เชคเชพเชจเซ‡ เชจเซเชฏเซ‚เชจเชคเชฎ เชธเช‚เชญเชตเชฟเชค เชฎเซ‚เชฒเซเชฏ เชธเซเชงเซ€ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เช›เซ‡:

ALTER TABLE rawplan_orig SET (toast_tuple_target = 128);

เชšเชพเชฒเซ‹ เชœเซ‹เชˆเช เช•เซ‡ เชจเชตเซ€ เชธเซ‡เชŸเชฟเช‚เช—เซเชธ เชซเชฐเซ€เชฅเซ€ เช—เซ‹เช เชตเชฃเซ€ เชชเช›เซ€ เชกเชฟเชธเซเช• เชฒเซ‹เชกเชฟเช‚เช—เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡:

PostgreSQL เชฎเชพเช‚ เชฎเซ‹เชŸเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเชฐ เชเช• เชชเซˆเชธเซ‹ เชฌเชšเชพเชตเซ‹
เช–เชฐเชพเชฌ เชจเชฅเซ€! เชธเชฐเซ‡เชฐเชพเชถ เชกเชฟเชธเซเช•เชจเซ€ เช•เชคเชพเชฐเชฎเชพเช‚ เช˜เชŸเชพเชกเซ‹ เชฅเชฏเซ‹ เช›เซ‡ เชฒเช—เชญเช— 1.5 เชตเช–เชค, เช…เชจเซ‡ เชกเชฟเชธเซเช• "เชตเซเชฏเชธเซเชค" 20 เชŸเช•เชพ เช›เซ‡! เชชเชฐเช‚เชคเซ เช•เชฆเชพเชš เช† เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ CPU เชจเซ‡ เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡?

PostgreSQL เชฎเชพเช‚ เชฎเซ‹เชŸเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเชฐ เชเช• เชชเซˆเชธเซ‹ เชฌเชšเชพเชตเซ‹
เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชคเซ‡ เชตเชงเซ เช–เชฐเชพเชฌ เชจ เชฅเชฏเซเช‚. เชคเซ‡เชฎ เช›เชคเชพเช‚, เชคเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเชตเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡ เช•เซ‡ เชถเซเช‚ เช†เชตเชพ เชตเซ‹เชฒเซเชฏเซเชฎเซ‹ เชชเชฃ เชธเชฐเซ‡เชฐเชพเชถ CPU เชฒเซ‹เชกเชจเซ‡ เชตเชงเชพเชฐเซ‡ เชตเชงเชพเชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€ 5%.

เชถเชฐเชคเซ‹เชจเชพ เชธเซเชฅเชพเชจเซ‹ เชฌเชฆเชฒเชตเชพเชฅเซ€, เชธเชฐเชตเชพเชณเซ‹... เชฌเชฆเชฒเชพเชฏ เช›เซ‡!

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเชพเชฃเซ‹ เช›เซ‹, เชเช• เชชเซˆเชธเซ‹ เชฐเซ‚เชฌเชฒ เชฌเชšเชพเชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเชพเชฐเชพ เชธเซเชŸเซ‹เชฐเซ‡เชœ เชตเซ‹เชฒเซเชฏเซเชฎเซ‹ เชธเชพเชฅเซ‡ เชคเซ‡ เชฒเช—เชญเช— เช›เซ‡ 10TB/เชฎเชนเชฟเชจเซ‹ เชฅเซ‹เชกเซเช‚ เช“เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เชชเชฃ เชธเชพเชฐเซ‹ เชจเชซเซ‹ เช†เชชเซ€ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เช…เชฎเซ‡ เช…เชฎเชพเชฐเชพ เชกเซ‡เชŸเชพเชจเซ€ เชญเซŒเชคเชฟเช• เชฐเชšเชจเชพ เชชเชฐ เชงเซเชฏเชพเชจ เช†เชชเซเชฏเซเช‚ - เชฌเชฐเชพเชฌเชฐ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฐเซ‡เช•เซ‹เชฐเซเชกเชจเซ€ เช…เช‚เชฆเชฐ "เชธเซเชŸเซ…เช•เซเชก" เชซเซ€เชฒเซเชกเซเชธ เชฆเชฐเซ‡เช• เช•เซ‹เชทเซเชŸเช•เซ‹.

เช•เชพเชฐเชฃ เช•เซ‡ เชกเซ‡เชŸเชพ เช—เซ‹เช เชตเชฃเซ€ เช† เชธเซ€เชงเซเช‚ เช†เช—เชณ เช›เซ‡ เชชเชฐเชฟเชฃเชพเชฎเซ€ เชตเซ‹เชฒเซเชฏเซเชฎเชจเซ‡ เช…เชธเชฐ เช•เชฐเซ‡ เช›เซ‡:

เช˜เชฃเชพ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชฎเชถเซ€เชจ เชถเชฌเซเชฆ เชธเซ€เชฎเชพเช“ เชชเชฐ เชกเซ‡เชŸเชพ เช—เซ‹เช เชตเชฃเซ€ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, 32-เชฌเซ€เชŸ x86 เชธเชฟเชธเซเชŸเชฎ เชชเชฐ, เชชเซ‚เชฐเซเชฃเชพเช‚เช•เซ‹ (เชชเซ‚เชฐเซเชฃเชพเช‚เช• เชชเซเชฐเช•เชพเชฐ, 4 เชฌเชพเช‡เชŸเซเชธ) 4-เชฌเชพเช‡เชŸ เชตเชฐเซเชก เชฌเชพเช‰เชจเซเชกเซเชฐเซ€ เชชเชฐ เชธเช‚เชฐเซ‡เช–เชฟเชค เชฅเชถเซ‡, เชœเซ‡เชฎ เช•เซ‡ เชฌเชฎเชฃเซ€ เชšเซ‹เช•เชธเชพเช‡ เชซเซเชฒเซ‹เชŸเชฟเช‚เช— เชชเซ‹เช‡เชจเซเชŸ เชจเช‚เชฌเชฐเซเชธ (เชกเชฌเชฒ เชชเซเชฐเชฟเชธเชฟเชเชจ เชซเซเชฒเซ‹เชŸเชฟเช‚เช— เชชเซ‹เช‡เชจเซเชŸ, 8 เชฌเชพเช‡เชŸเซเชธ) เชนเชถเซ‡. เช…เชจเซ‡ 64-เชฌเซ€เชŸ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ, เชกเชฌเชฒ เชฎเซ‚เชฒเซเชฏเซ‹ 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-เชฌเชพเช‡เชŸ เชฌเชพเช‰เชจเซเชกเซเชฐเซ€ เชชเชฐ เชธเช‚เชฐเซ‡เช–เชฟเชค เช†เช—เชฒเชพ เช•เซเชทเซ‡เชคเซเชฐ เชชเชนเซ‡เชฒเชพเช‚, เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชคเซ‡ เช›เซ‡เชฒเซเชฒเซเช‚ เช›เซ‡, เชคเซเชฏเชพเช‚ เช•เช‚เชˆ เชจเชฅเซ€ เช…เชจเซ‡ เชธเช‚เชฐเซ‡เช–เชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.

เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เชฌเชงเซเช‚ เชธเชพเชฐเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเซ‡ เชคเชฎเชพเชฐเซ€ เชชเชธเช‚เชฆ เชฎเซเชœเชฌ เช•เซเชทเซ‡เชคเซเชฐเซ‹เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เช—เซ‹เช เชตเซ€ เชถเช•เซ‹ เช›เซ‹. เชšเชพเชฒเซ‹ เช•เซ‹เชทเซเชŸเช•เซ‹เชฎเชพเช‚เชฅเซ€ เชเช•เชจเชพ เช‰เชฆเชพเชนเชฐเชฃเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชจเซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชกเซ‡เชŸเชพ เชชเชฐ เชคเชชเชพเชธเซ€เช, เชœเซ‡เชจเซ‹ เชฆเซˆเชจเชฟเช• เชตเชฟเชญเชพเช— 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) เชคเซ‡เชฎเชพเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธเชจเซ€ เชธเช‚เช–เซเชฏเชพ เชฆเซเชตเชพเชฐเชพ - เชเชŸเชฒเซ‡ เช•เซ‡, เช†เชชเชฃเชจเซ‡ เชฎเชณเซ‡ เช›เซ‡ เชตเชพเชธเซเชคเชตเชฟเช• เชธเช‚เช—เซเชฐเชนเชฟเชค เชฐเซ‡เช•เซ‹เชฐเซเชกเชจเซเช‚ เชธเชฐเซ‡เชฐเชพเชถ เช•เชฆ:

PostgreSQL เชฎเชพเช‚ เชฎเซ‹เชŸเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเชฐ เชเช• เชชเซˆเชธเซ‹ เชฌเชšเชพเชตเซ‹
เชฎเชพเชˆเชจเชธ 6% เชตเซ‹เชฒเซเชฏเซเชฎ, เชฎเชนเชพเชจ!

เชชเชฐเช‚เชคเซ เชฌเชงเซเช‚, เช…เชฒเชฌเชคเซเชค, เชเชŸเชฒเซเช‚ เชฐเซ‹เชเซ€ เชจเชฅเซ€ - เช›เซ‡เชตเชŸเซ‡, เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“เชฎเชพเช‚ เช†เชชเชฃเซ‡ เช•เซเชทเซ‡เชคเซเชฐเซ‹เชจเซ‹ เช•เซเชฐเชฎ เชฌเชฆเชฒเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เช…เชจเซ‡ เชคเซ‡เชฅเซ€ "เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡" (pg_total_relation_size) ...

PostgreSQL เชฎเชพเช‚ เชฎเซ‹เชŸเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเชฐ เชเช• เชชเซˆเชธเซ‹ เชฌเชšเชพเชตเซ‹
...เชนเชœเซ€ เชชเชฃ เช…เชนเซ€เช‚ 1.5% เชฌเชšเชพเชตเซเชฏเซเช‚เช•เซ‹เชกเชจเซ€ เชเช• เชฒเซ€เชŸเซ€ เชฌเชฆเชฒเซเชฏเชพ เชตเช—เชฐ. เชนเชพ เชนเชพ!

PostgreSQL เชฎเชพเช‚ เชฎเซ‹เชŸเชพ เชตเซ‹เชฒเซเชฏเซเชฎ เชชเชฐ เชเช• เชชเซˆเชธเซ‹ เชฌเชšเชพเชตเซ‹

เชนเซเช‚ เชจเซ‹เช‚เชงเซเช‚ เช›เซเช‚ เช•เซ‡ เช•เซเชทเซ‡เชคเซเชฐเซ‹ เช—เซ‹เช เชตเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เช‰เชชเชฐเซ‹เช•เซเชค เชตเชฟเช•เชฒเซเชช เช เชนเช•เซ€เช•เชค เชจเชฅเซ€ เช•เซ‡ เชคเซ‡ เชธเซŒเชฅเซ€ เชถเซเชฐเซ‡เชทเซเช  เช›เซ‡. เช•เชพเชฐเชฃ เช•เซ‡ เชคเชฎเซ‡ เชธเซŒเช‚เชฆเชฐเซเชฏเชฒเช•เซเชทเซ€ เช•เชพเชฐเชฃเซ‹เชธเชฐ เชซเซ€เชฒเซเชกเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชฌเซเชฒเซ‹เช•เซเชธเชจเซ‡ "เชซเชพเชกเชตเชพ" เชจเชฅเซ€ เชฎเชพเช‚เช—เชคเชพ - เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชเช• เชฆเช‚เชชเชคเซ€ (pack, recno), เชœเซ‡ เช† เช•เซ‹เชทเซเชŸเช• เชฎเชพเชŸเซ‡ PK เช›เซ‡.

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช•เซเชทเซ‡เชคเซเชฐเซ‹เชจเซ€ "เชฒเช˜เซเชคเซเชคเชฎ" เช—เซ‹เช เชตเชฃเซ€ เชจเช•เซเช•เซ€ เช•เชฐเชตเซ€ เช เชเช•เชฆเชฎ เชธเชฐเชณ "เชœเชก เชฌเชณ" เช•เชพเชฐเซเชฏ เช›เซ‡. เชคเซ‡เชฅเซ€, เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชกเซ‡เชŸเชพเชฎเชพเช‚เชฅเซ€ เช…เชฎเชพเชฐเชพ เช•เชฐเชคเชพ เชตเชงเซ เชธเชพเชฐเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชฎเซ‡เชณเชตเซ€ เชถเช•เซ‹ เช›เซ‹ - เชคเซ‡เชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹!

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹