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), เด•เต‚เดŸเดพเดคเต† เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดชเต‡เดœเตเด•เตพ เดตเตเดฏเดพเดชเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป tuples-เดจเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ. เด…เดคเดฟเดจเดพเตฝ, เดตเดณเดฐเต† เดตเดฒเดฟเดฏ เดซเต€เตฝเดกเต เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เด…เดธเดพเดงเตเดฏเดฎเดพเดฃเต. เดˆ เดชเดฐเดฟเดฎเดฟเดคเดฟ เดฎเดฑเดฟเด•เดŸเด•เตเด•เดพเตป, เดตเดฒเดฟเดฏ เดซเต€เตฝเดกเต เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด•เด‚เดชเตเดฐเดธเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด•เต‚เดŸเดพเดคเต†/เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดซเดฟเดธเดฟเด•เตเด•เตฝ เดฒเตˆเดจเตเด•เดณเดฟเตฝ เดตเดฟเดญเดœเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดคเต เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเตปเตเดฑเต† เดถเตเดฐเดฆเตเดงเดฏเดฟเตฝเดชเตเดชเต†เดŸเดพเดคเต† เดธเด‚เดญเดตเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดฎเดฟเด•เตเด• เดธเต†เตผเดตเตผ เด•เต‹เดกเตเด•เดณเดฟเดฒเตเด‚ เดšเต†เดฑเดฟเดฏ เดธเตเดตเดพเดงเต€เดจเด‚ เดšเต†เดฒเตเดคเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดˆ เดฐเต€เดคเดฟ TOAST เดŽเดจเตเดจเดพเดฃเต เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเดคเต...

เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, "เดธเดพเดงเตเดฏเดคเดฏเตเดณเตเดณ" เดซเต€เตฝเดกเตเด•เดณเตเดณเตเดณ เดŽเดฒเตเดฒเดพ เดŸเต‡เดฌเดฟเดณเดฟเดจเตเด‚ เดธเตเดตเดฏเดฎเต‡เดต "เดธเตเดฒเตˆเดธเดฟเด‚เด—เต" เด‰เดณเตเดณ เด’เดฐเต เดœเต‹เดŸเดฟเดฏเดพเด•เตเด•เดฟเดฏ เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต 2KB เดธเต†เด—เตโ€Œเดฎเต†เตปเตเดฑเตเด•เดณเดฟเดฒเต† เด“เดฐเต‹ "เดตเดฒเดฟเดฏ" เดฑเต†เด•เตเด•เต‹เตผเดกเตเด‚:

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

เด…เดคเดพเดฏเดคเต, "เดตเดฒเดฟเดฏ" เดฎเต‚เดฒเตเดฏเดฎเตเดณเตเดณ เด’เดฐเต เดธเตเดŸเตเดฐเดฟเด‚เด—เต เดŽเดดเตเดคเดฃเดฎเต†เด™เตเด•เดฟเตฝ data, เด…เดชเตเดชเต‹เตพ เดฏเดฅเดพเตผเดคเตเดฅ เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเด‚เด—เต เดธเด‚เดญเดตเดฟเด•เตเด•เตเด‚ เดชเตเดฐเดงเดพเดจ เดŸเต‡เดฌเดฟเดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เด…เดคเดฟเตปเตเดฑเต† เดชเดฟเด•เต†เดฏเดฟเดฒเต‡เด•เตเด•เตเด‚ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดŸเต‹เดธเตโ€Œเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เตเด‚ เด…เดคเดฟเตปเตเดฑเต† เดชเดฟเด•เต†เดฏเดฟเดฒเต‡เด•เตเด•เตเด‚.

TOAST เดธเตเดตเดพเดงเต€เดจเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเดจเตเดจเต

เดŽเดจเตเดจเดพเตฝ เดžเด™เตเด™เดณเตเดŸเต† เดฎเดฟเด•เตเด• เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เดณเตเด‚ เด‡เดชเตเดชเต‹เดดเตเด‚ เด…เดคเตเดฐ เดตเดฒเตเดคเดฒเตเดฒ, 8KB-เดฏเดฟเดฒเต‡เด•เตเด•เต เดฏเต‹เดœเดฟเดชเตเดชเดฟเด•เตเด•เดฃเด‚ - เด‡เดคเดฟเตฝ เดŽเดจเดฟเด•เตเด•เต เดŽเด™เตเด™เดจเต† เดชเดฃเด‚ เดฒเดพเดญเดฟเด•เตเด•เดพเด‚?..

เด‡เดตเดฟเดŸเต†เดฏเดพเดฃเต เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเต เดจเดฎเตเดฎเตเดŸเต† เดธเดนเดพเดฏเดคเตเดคเดฟเดจเต เดตเดฐเตเดจเตเดจเดคเต STORAGE เดชเดŸเตเดŸเดฟเด• เดจเดฟเดฐเดฏเดฟเตฝ:

  • เดตเดฟเดชเตเดฒเต€เด•เดฐเดฟเดšเตเดšเต เด•เด‚เดชเตเดฐเดทเดจเตเด‚ เดชเตเดฐเดคเตเดฏเต‡เด• เดธเด‚เดญเดฐเดฃเดตเตเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดธเตเดฑเตเดฑเดพเตปเดกเต‡เตผเดกเต เด“เดชเตเดทเตป เดฎเดฟเด•เตเด• เดŸเต‹เดธเตเดฑเตเดฑเต เด•เด‚เดชเตเดฒเดฏเดฟเตปเตเดฑเต เดกเดพเดฑเตเดฑเดพ เดคเดฐเด™เตเด™เตพเด•เตเด•เตเด‚. เด‡เดคเต เด†เดฆเตเดฏเด‚ เด•เด‚เดชเตเดฐเดทเตป เดจเดŸเดคเตเดคเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เดตเดฐเดฟ เด‡เดชเตเดชเต‹เดดเตเด‚ เดตเดณเดฐเต† เดตเดฒเตเดคเดพเดฃเต†เด™เตเด•เดฟเตฝ เด…เดคเต เดชเดŸเตเดŸเดฟเด•เดฏเตเด•เตเด•เต เดชเตเดฑเดคเตเดคเต เดธเต‚เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.
  • เด•เตˆ เด•เด‚เดชเตเดฐเดทเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดพเตฝ เดชเตเดฐเดคเตเดฏเต‡เด• เดธเด‚เดญเดฐเดฃเดฎเดฒเตเดฒ. (เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เด…เดคเตเดคเดฐเด‚ เดจเดฟเดฐเด•เตพเด•เตเด•เดพเดฏเดฟ เดชเตเดฐเดคเตเดฏเต‡เด• เดธเด‚เดญเดฐเดฃเด‚ เดคเตเดŸเตผเดจเตเดจเตเด‚ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเด‚, เดชเด•เตเดทเต‡ เดฎเดพเดคเตเดฐเด‚ เด…เดตเดธเดพเดจ เด†เดถเตเดฐเดฏเดฎเดพเดฏเดฟ, เดธเตเดŸเตเดฐเดฟเด‚เด—เต เดšเตเดฐเตเด•เตเด•เดพเตป เดฎเดฑเตเดฑเตŠเดฐเต เดฎเดพเตผเด—เดตเตเดฎเดฟเดฒเตเดฒเดพเดคเตเดคเดชเตเดชเต‹เตพ เด…เดคเต เดชเต‡เดœเดฟเตฝ เดฏเต‹เดœเดฟเด•เตเด•เตเด‚.)

เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดŸเต†เด•เตเดธเตเดฑเตเดฑเดฟเดจเดพเดฏเดฟ เดจเดฎเตเด•เตเด•เต เดตเต‡เดฃเตเดŸเดคเต เด‡เดคเดพเดฃเต - เด‡เดคเต เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เด•เด‚เดชเตเดฐเดธเต เดšเต†เดฏเตเดฏเตเด•, เด…เดคเต เด’เดŸเตเดŸเตเด‚ เดฏเต‹เดœเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด…เดคเต เดŸเต‹เดธเตเดฑเตเดฑเดฟเตฝ เด‡เดŸเตเด•. เด’เดฐเต เด•เดฎเดพเตปเดกเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‡เดคเต เดซเตเดฒเตˆเดฏเดฟเตฝ เดจเต‡เดฐเดฟเดŸเตเดŸเต เดšเต†เดฏเตเดฏเดพเด‚:

ALTER TABLE rawdata_orig ALTER COLUMN data SET STORAGE MAIN;

เดชเตเดฐเดญเดพเดตเด‚ เดŽเด™เตเด™เดจเต† เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเดพเด‚

เดกเดพเดฑเตเดฑเดพ เดซเตเดฒเต‹ เด“เดฐเต‹ เดฆเดฟเดตเดธเดตเตเด‚ เดฎเดพเดฑเตเดจเตเดจเดคเดฟเดจเดพเตฝ, เดจเดฎเตเด•เตเด•เต เด•เต‡เดตเดฒ เดธเด‚เด–เตเดฏเด•เดณเต† เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เด†เดชเต‡เด•เตเดทเดฟเด•เดฎเดพเดฏเดฟ เดšเต†เดฑเดฟเดฏ เดชเด™เตเด•เต เดžเด™เตเด™เตพ เด…เดคเต เดŸเต‹เดธเตเดฑเตเดฑเดฟเตฝ เดŽเดดเตเดคเดฟ - เด…เดคเตเดฐเดฏเตเด‚ เดจเดฒเตเดฒเดคเต. เดŽเดจเตเดจเดพเตฝ เด‡เดตเดฟเดŸเต† เด’เดฐเต เด…เดชเด•เดŸเดฎเตเดฃเตเดŸเต - เด“เดฐเต‹ เดตเตเดฏเด•เตเดคเดฟเด—เดค เดฑเต†เด•เตเด•เต‹เตผเดกเดฟเตปเตเดฑเต†เดฏเตเด‚ "เดซเดฟเดธเดฟเด•เตเด•เตฝ" เดตเต‹เดณเดฟเดฏเด‚ เดตเดฒเตเดคเดพเด•เตเดฎเตเดชเต‹เตพ, เดธเต‚เดšเดฟเด• "เดตเดฟเดถเดพเดฒเดฎเดพเดฏเดฟ" เดฎเดพเดฑเตเดจเตเดจเต, เด•เดพเดฐเดฃเด‚ เดžเด™เตเด™เตพเด•เตเด•เต เด•เต‚เดŸเตเดคเตฝ เดกเดพเดฑเตเดฑ เดชเต‡เดœเตเด•เตพ เดจเตฝเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เดตเดฟเดญเดพเด—เด‚ เดฎเดพเดฑเตเดฑเด™เตเด™เตพเด•เตเด•เต เดฎเตเดฎเตเดชเต:

heap  = 37GB (39%)
TOAST = 54GB (57%)
PK    =  4GB ( 4%)

เดตเดฟเดญเดพเด—เด‚ เดฎเดพเดฑเตเดฑเด™เตเด™เตพเด•เตเด•เต เดถเต‡เดทเด‚:

heap  = 37GB (67%)
TOAST = 16GB (29%)
PK    =  2GB ( 4%)

เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ, เดžเด™เตเด™เตพ TOAST เดฒเต‡เด•เตเด•เต 2 เดฎเดŸเด™เตเด™เต เด•เตเดฑเดšเตเดšเต เดคเดตเดฃ เดŽเดดเตเดคเดพเตป เดคเตเดŸเด™เตเด™เดฟ, เด‡เดคเต เดกเดฟเดธเตเด•เต เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดธเดฟเดชเดฟเดฏเตเดตเตเด‚ เด…เตบเดฒเต‹เดกเต เดšเต†เดฏเตเดคเต:

PostgreSQL-เตฝ เดตเดฒเดฟเดฏ เดตเต‹เดณเตเดฏเด™เตเด™เดณเดฟเตฝ เด’เดฐเต เดชเตˆเดธ เดฒเดพเดญเดฟเด•เตเด•เตเด•
PostgreSQL-เตฝ เดตเดฒเดฟเดฏ เดตเต‹เดณเตเดฏเด™เตเด™เดณเดฟเตฝ เด’เดฐเต เดชเตˆเดธ เดฒเดพเดญเดฟเด•เตเด•เตเด•
"เดŽเดดเตเดคเตเดคเต" เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ, เดกเดฟเดธเตเด•เต "เดตเดพเดฏเดจ" เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดฒเตเด‚ เดžเด™เตเด™เตพ เดšเต†เดฑเตเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดžเดพเตป เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เตเด‚ - เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เด’เดฐเต เดฑเต†เด•เตเด•เต‹เตผเดกเต เดšเต‡เตผเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด“เดฐเต‹ เดธเต‚เดšเดฟเด•เดฏเตเดŸเต†เดฏเตเด‚ เดตเตƒเด•เตเดทเดคเตเดคเดฟเตปเตเดฑเต† เด’เดฐเต เดญเดพเด—เด‚ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพ "เดตเดพเดฏเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต" เด…เดตเดฏเดฟเตฝ เดญเดพเดตเดฟ เดธเตเดฅเดพเดจเด‚.

PostgreSQL 11-เตฝ เด†เตผเด•เตเด•เตŠเด•เตเด•เต† เดจเดจเตเดจเดพเดฏเดฟ เดœเต€เดตเดฟเด•เตเด•เดพเดจเดพเด•เตเด‚

PG11-เดฒเต‡เด•เตเด•เต เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดค เดถเต‡เดทเด‚, TOAST โ€œเดŸเตเดฏเต‚เดฃเดฟเด‚เด—เตโ€ เดคเตเดŸเดฐเดพเตป เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต, เดˆ เดชเดคเดฟเดชเตเดชเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเดพเดฐเดพเดฎเต€เดฑเตเดฑเตผ เด†เดฐเด‚เดญเดฟเด•เตเด•เตเดจเตเดจเดคเต เดถเตเดฐเดฆเตเดงเดฟเดšเตเดšเต toast_tuple_target:

เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดธเด‚เดญเดฐเดฟเด•เตเด•เต‡เดฃเตเดŸ เดตเดฐเดฟ เดฎเต‚เดฒเตเดฏเด‚ TOAST_TUPLE_THRESHOLD เดฌเตˆเดฑเตเดฑเตเด•เดณเต‡เด•เตเด•เดพเตพ (เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ 2 KB) เดตเดฒเตเดคเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดฎเดพเดคเตเดฐเดฎเต‡ TOAST เดชเตเดฐเต‹เดธเดธเตเดธเดฟเด‚เด—เต เด•เต‹เดกเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เต‚. เดตเดฐเดฟเดฏเตเดŸเต† เดฎเต‚เดฒเตเดฏเด‚ TOAST_TUPLE_TARGET เดฌเตˆเดฑเตเดฑเตเด•เดณเต‡เด•เตเด•เดพเตพ (เดตเต‡เดฐเดฟเดฏเดฌเดฟเตพ เดฎเต‚เดฒเตเดฏเด‚, เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ 2 KB) เด•เตเดฑเดฏเตเดจเตเดจเดคเต เดตเดฐเต† เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเดฒเตเดชเตเดชเด‚ เด•เตเดฑเดฏเตเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดพเดคเตเดคเดคเต เดตเดฐเต† TOAST เด•เต‹เดกเต เดซเต€เตฝเดกเต เดฎเต‚เดฒเตเดฏเด™เตเด™เตพ เด•เด‚เดชเตเดฐเดธเตเดธเตเดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด•เต‚เดŸเดพเดคเต†/เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเต€เด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚.

เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดžเด™เตเด™เดณเตเดŸเต† เดชเด•เตเด•เดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑ เด’เดจเตเดจเตเด•เดฟเตฝ "เดตเดณเดฐเต† เดšเต†เดฑเตเดคเต" เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ "เดตเดณเดฐเต† เดจเต€เดฃเตเดŸเดคเต" เด†เดฃเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต, เด…เดคเดฟเดจเดพเตฝ เดธเดพเดงเตเดฏเดฎเดพเดฏ เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดž เดฎเต‚เดฒเตเดฏเดคเตเดคเดฟเดฒเต‡เด•เตเด•เต เดธเตเดตเดฏเด‚ เดชเดฐเดฟเดฎเดฟเดคเดชเตเดชเต†เดŸเตเดคเตเดคเดพเตป เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต:

ALTER TABLE rawplan_orig SET (toast_tuple_target = 128);

เดตเต€เดฃเตเดŸเตเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเดจเตเดถเต‡เดทเด‚ เดชเตเดคเดฟเดฏ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด™เตเด™เตพ เดกเดฟเดธเตเด•เต เดฒเต‹เดกเดฟเด‚เด—เดฟเดจเต† เดŽเด™เตเด™เดจเต† เดฌเดพเดงเดฟเดšเตเดšเตเดตเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚:

PostgreSQL-เตฝ เดตเดฒเดฟเดฏ เดตเต‹เดณเตเดฏเด™เตเด™เดณเดฟเตฝ เด’เดฐเต เดชเตˆเดธ เดฒเดพเดญเดฟเด•เตเด•เตเด•
เดฎเต‡เดพเดถเดฎเดฒเตเดฒ! เดถเดฐเดพเดถเดฐเดฟ เดกเดฟเดธเตเด•เดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เด•เตเดฏเต‚ เด•เตเดฑเดžเตเดžเต เดเด•เดฆเต‡เดถเด‚ 1.5 เดคเดตเดฃ, เดกเดฟเดธเตเด•เต "เดคเดฟเดฐเด•เตเด•เดฟเดฒเดพเดฃเต" 20 เดถเดคเดฎเดพเดจเด‚! เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เดŽเด™เตเด™เดจเต†เดฏเต†เด™เตเด•เดฟเดฒเตเด‚ เดธเดฟเดชเดฟเดฏเตเดตเดฟเดจเต† เดฌเดพเดงเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดฎเต‹?

PostgreSQL-เตฝ เดตเดฒเดฟเดฏ เดตเต‹เดณเตเดฏเด™เตเด™เดณเดฟเตฝ เด’เดฐเต เดชเตˆเดธ เดฒเดพเดญเดฟเด•เตเด•เตเด•
เด•เตเดฑเดžเตเดžเดคเต เดฎเต‹เดถเดฎเดพเดฏเดฟเดฒเตเดฒ. เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เด…เดคเตเดคเดฐเด‚ เดตเต‹เดณเตเดฏเด™เตเด™เตพเด•เตเด•เต เดชเต‹เดฒเตเด‚ เดถเดฐเดพเดถเดฐเดฟ เดธเดฟเดชเดฟเดฏเต เดฒเต‹เดกเต เด‰เดฏเตผเดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเดพเตป เดชเตเดฐเดฏเดพเดธเดฎเดพเดฃเต 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), เดˆ เดŸเต‡เดฌเดฟเดณเดฟเตปเตเดฑเต† เดชเดฟ.เด•เต†.

เดชเตŠเดคเตเดตเต‡, เดซเต€เตฝเดกเตเด•เดณเตเดŸเต† "เดฎเดฟเดจเดฟเดฎเด‚" เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚ เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเต เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฏ เด’เดฐเต "เดฌเตเดฐเต‚เดŸเตเดŸเต เดซเต‹เดดเตเดธเต" เด†เดฃเต. เด…เดคเดฟเดจเดพเตฝ, เดžเด™เตเด™เดณเตเดŸเต‡เดคเดฟเดจเต‡เด•เตเด•เดพเตพ เดฎเดฟเด•เดšเตเดš เดซเดฒเด™เตเด™เตพ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดกเดพเดฑเตเดฑเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฒเดญเดฟเด•เตเด•เตเด‚ - เด‡เดคเต เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•!

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•