PostgreSQL เจตเจฟเฉฑเจš เจตเฉฑเจกเฉ€ เจฎเจพเจคเจฐเจพ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉˆเจธเจพ เจฌเจšเจพเจ“

เจฆเฉเจ†เจฐเจพ เจ‰เจ เจพเจ เจ—เจ เจตเฉฑเจกเฉ‡ เจกเฉ‡เจŸเจพ เจธเจŸเฉเจฐเฉ€เจฎ เจจเฉ‚เฉฐ เจฐเจฟเจ•เจพเจฐเจก เจ•เจฐเจจ เจฆเฉ‡ เจตเจฟเจธเจผเฉ‡ เจจเฉ‚เฉฐ เจœเจพเจฐเฉ€ เจฐเฉฑเจ–เจฃเจพ เจตเฉฐเจก เจฌเจพเจฐเฉ‡ เจชเจฟเจ›เจฒเจพ เจฒเฉ‡เจ–, เจ‡เจธ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ‰เจนเจจเจพเจ‚ เจคเจฐเฉ€เจ•เจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจพเจ‚เจ—เฉ‡ เจœเจฟเจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจš เจคเฉเจธเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ "เจญเฉŒเจคเจฟเจ•" เจ†เจ•เจพเจฐ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ“ PostgreSQL เจตเจฟเฉฑเจš, เจ…เจคเฉ‡ เจธเจฐเจตเจฐ เจชเฉเจฐเจฆเจฐเจธเจผเจจ 'เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจฆเจพ เจชเฉเจฐเจญเจพเจต.

เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐเจพเจ‚เจ—เฉ‡ TOAST เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจ…เจคเฉ‡ เจกเจพเจŸเจพ เจ…เจฒเจพเจˆเจจเจฎเฉˆเจ‚เจŸ. โ€œเจ”เจธเจคเจจ,โ€ เจ‡เจน เจตเจฟเจงเฉ€เจ†เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€ เจฌเฉฑเจšเจค เจจเจนเฉ€เจ‚ เจ•เจฐเจจเจ—เฉ€เจ†เจ‚, เจชเจฐ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจธเฉ‹เจงเฉ‡ เจฌเจฟเจจเจพเจ‚เฅค

PostgreSQL เจตเจฟเฉฑเจš เจตเฉฑเจกเฉ€ เจฎเจพเจคเจฐเจพ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉˆเจธเจพ เจฌเจšเจพเจ“
เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจธเจพเจกเจพ เจคเจœเจฐเจฌเจพ เจ‡เจธ เจธเจฌเฉฐเจง เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจฒเจพเจญเจ•เจพเจฐเฉ€ เจธเจพเจฌเจค เจนเฉ‹เจ‡เจ†, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฒเจ—เจญเจ— เจ•เจฟเจธเฉ‡ เจตเฉ€ เจจเจฟเจ—เจฐเจพเจจเฉ€ เจฆเจพ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจ‡เจธเจฆเฉ‡ เจธเฉเจญเจพเจ… เจฆเฉเจ†เจฐเจพ เจœเจฟเจ†เจฆเจพเจคเจฐ เจœเฉ‹เฉœ-เจธเจฟเจฐเจซเจผ เจฐเจฟเจ•เจพเจฐเจก เจ•เฉ€เจคเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš. เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจธเฉ‹เจš เจฐเจนเฉ‡ เจนเฉ‹ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจกเจพเจŸเจพเจฌเฉ‡เจธ เจจเฉ‚เฉฐ เจกเจฟเจธเจ• 'เจคเฉ‡ เจฒเจฟเจ–เจฃเจพ เจ•เจฟเจตเฉ‡เจ‚ เจธเจฟเจ–เจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ 200MB / เจนเจตเจพเจˆเจ…เฉฑเจกเฉ‡ เจ…เฉฑเจงเจพ เจœเจฟเฉฐเจจเจพ - เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจฌเจฟเฉฑเจฒเฉ€ เจฆเฉ‡ เจนเฉ‡เจ เจพเจ‚เฅค

เจตเฉฑเจกเฉ‡ เจกเฉ‡เจŸเจพ เจฆเฉ‡ เจ›เฉ‹เจŸเฉ‡ เจฐเจพเจœเจผ

เจจเฉŒเจ•เจฐเฉ€ เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจฆเฉเจ†เจฐเจพ เจธเจพเจกเฉ€ เจธเฉ‡เจตเจพ, เจ‰เจน เจจเจฟเจฏเจฎเจฟเจค เจคเฉŒเจฐ 'เจคเฉ‡ lairs เจคเฉฑเจ• เจ‰เจธ เจจเฉ‚เฉฐ เจ‰เฉฑเจกเจฆเฉ€ เจนเฉˆ เจŸเฉˆเจ•เจธเจŸ เจชเฉˆเจ•เฉ‡เจœ.

เจ…เจคเฉ‡ เจ‰เจฆเฉ‹เจ‚ เจคเฉ‹เจ‚ 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) เจฒเจฟเจ–เจฃ เจฒเจˆ, เจตเจฐเจคเฉ‹ เจŸเฉ‹เจธเจŸ เจคเจ•เจจเจพเจฒเฉ‹เจœเฉ€:

PostgreSQL เจ‡เฉฑเจ• เจจเจฟเจธเจผเจšเจฟเจค เจชเฉฐเจจเฉ‡ เจฆเจพ เจ†เจ•เจพเจฐ (เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ 8 KB) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจŸเฉ‚เจชเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจˆ เจชเฉฐเจจเจฟเจ†เจ‚ เจจเฉ‚เฉฐ เจซเฉˆเจฒเจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจฒเจˆ, เจฌเจนเฉเจค เจตเฉฑเจกเฉ‡ เจ–เฉ‡เจคเจฐ เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจเจพ เจ…เจธเฉฐเจญเจต เจนเฉˆเฅค เจ‡เจธ เจธเฉ€เจฎเจพ เจจเฉ‚เฉฐ เจฆเฉ‚เจฐ เจ•เจฐเจจ เจฒเจˆ, เจตเฉฑเจกเฉ‡ เจซเฉ€เจฒเจก เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉฐเจ•เฉเจšเจฟเจค เจ…เจคเฉ‡/เจœเจพเจ‚ เจ•เจˆ เจญเฉŒเจคเจฟเจ• เจฐเฉ‡เจ–เจพเจตเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจฆเฉเจ†เจฐเจพ เจ…เจฃเจฆเฉ‡เจ–เจฟเจ† เจนเฉ‹เจ‡เจ† เจตเจพเจชเจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจธเจฐเจตเจฐ เจ•เฉ‹เจก 'เจคเฉ‡ เจฌเจนเฉเจค เจ˜เฉฑเจŸ เจชเฉเจฐเจญเจพเจต เจชเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจธ เจตเจฟเจงเฉ€ เจจเฉ‚เฉฐ เจŸเฉ‹เจธเจŸ เจตเจœเฉ‹เจ‚ เจœเจพเจฃเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ ...

เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, "เจธเฉฐเจญเจพเจตเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ เจตเฉฑเจกเฉ‡" เจ–เฉ‡เจคเจฐเจพเจ‚ เจตเจพเจฒเฉ€ เจนเจฐเฉ‡เจ• เจธเจพเจฐเจฃเฉ€ เจฒเจˆ, เจ†เจชเจฃเฉ‡ เจ†เจช "เจธเจฒเจพเจˆเจธเจฟเฉฐเจ—" เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจชเฉ‡เจ…เจฐเจก เจŸเฉ‡เจฌเจฒ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ 2KB เจ–เฉฐเจกเจพเจ‚ เจตเจฟเฉฑเจš เจนเจฐเฉ‡เจ• "เจตเฉฑเจกเจพ" เจฐเจฟเจ•เจพเจฐเจก:

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

เจญเจพเจต, เจœเฉ‡เจ•เจฐ เจธเจพเจจเฉ‚เฉฐ "เจตเฉฑเจกเฉ‡" เจฎเฉเฉฑเจฒ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจธเจคเจฐ เจฒเจฟเจ–เจฃเฉ€ เจนเฉˆ data, เจซเจฟเจฐ เจ…เจธเจฒเฉ€ เจฐเจฟเจ•เจพเจฐเจกเจฟเฉฐเจ— เจนเฉ‹เจตเฉ‡เจ—เฉ€ เจจเจพ เจธเจฟเจฐเจซเจผ เจฎเฉเฉฑเจ– เจŸเฉ‡เจฌเจฒ เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ PK เจฒเจˆ, เจธเจ—เฉ‹เจ‚ TOAST เจ…เจคเฉ‡ เจ‡เจธเจฆเฉ‡ PK เจฒเจˆ เจตเฉ€.

เจŸเฉ‹เจธเจŸ เจชเฉเจฐเจญเจพเจต เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‰เจฃเจพ

เจชเจฐ เจธเจพเจกเฉ‡ เจฌเจนเฉเจคเฉ‡ เจฐเจฟเจ•เจพเจฐเจก เจ…เจœเฉ‡ เจตเฉ€ เจ‡เฉฐเจจเฉ‡ เจตเฉฑเจกเฉ‡ เจจเจนเฉ€เจ‚ เจนเจจ, 8KB เจตเจฟเฉฑเจš เจซเจฟเฉฑเจŸ เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ - เจฎเฉˆเจ‚ เจ‡เจธ 'เจคเฉ‡ เจชเฉˆเจธเฉ‡ เจ•เจฟเจตเฉ‡เจ‚ เจฌเจšเจพ เจธเจ•เจฆเจพ เจนเจพเจ‚? ..

เจ‡เจน เจ‰เจน เจฅเจพเจ‚ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจ—เฉเจฃ เจธเจพเจกเฉ€ เจธเจนเจพเจ‡เจคเจพ เจฒเจˆ เจ†เจ‰เจ‚เจฆเจพ เจนเฉˆ STORAGE เจŸเฉ‡เจฌเจฒ เจ•เจพเจฒเจฎ 'เจคเฉ‡:

  • เจตเจงเจพเจ‡เจ† เจ•เฉฐเจชเจฐเฉˆเจธเจผเจจ เจ…เจคเฉ‡ เจตเฉฑเจ–เจฐเฉ€ เจธเจŸเฉ‹เจฐเฉ‡เจœ เจฆเฉ‹เจตเจพเจ‚ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจฎเจฟเจ†เจฐเฉ€ เจตเจฟเจ•เจฒเจช เจœเจผเจฟเจ†เจฆเจพเจคเจฐ 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 เจ•เฉ‹เจก เจธเฉฐเจ•เฉเจšเจฟเจค เจ…เจคเฉ‡/เจœเจพเจ‚ เจซเฉ€เจฒเจก เจฎเฉเฉฑเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจธเจพเจฐเจฃเฉ€ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจฒเจฟเจœเจพเจเจ—เจพ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจคเจพเจฐ เจฆเจพ เจฎเฉเฉฑเจฒ TOAST_TUPLE_TARGET เจฌเจพเจˆเจŸ (เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจฎเฉเฉฑเจฒ, เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ 2 KB) เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจจเจนเฉ€เจ‚ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจœเจพเจ‚ เจ†เจ•เจพเจฐ เจจเฉ‚เฉฐ เจ˜เจŸเจพเจ‡เจ† เจจเจนเฉ€เจ‚ เจœเจพ เจธเจ•เจฆเจพเฅค

เจ…เจธเฉ€เจ‚ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ เจ•เจฟ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจœเฉ‹ เจกเฉ‡เจŸเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ‰เจน เจœเจพเจ‚ เจคเจพเจ‚ "เจฌเจนเฉเจค เจ›เฉ‹เจŸเจพ" เจœเจพเจ‚ "เจฌเจนเฉเจค เจฒเฉฐเจฎเจพ" เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจธเฉฐเจญเจต เจฎเฉเฉฑเจฒ เจคเฉฑเจ• เจธเฉ€เจฎเจค เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ:

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

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹