เบ›เบฐเบซเบเบฑเบ”เป€เบ‡เบดเบ™เปƒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™ PostgreSQL

เบชเบทเบšเบ•เปเปˆเบซเบปเบงเบ‚เปเป‰เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบ‚เปเป‰เบกเบนเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ—เบตเปˆเบเบปเบเบ‚เบถเป‰เบ™เบกเบฒเป‚เบ”เบ เบšเบปเบ”โ€‹เบ„เบงเบฒเบกโ€‹เบ—เบตเปˆโ€‹เบœเปˆเบฒเบ™โ€‹เบกเบฒโ€‹เบเปˆเบฝเบงโ€‹เบเบฑเบšโ€‹เบเบฒเบ™โ€‹เปเบšเปˆเบ‡โ€‹เบ›เบฑเบ™โ€‹, เปƒเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบšเบดเปˆเบ‡เบงเบดเบ—เบตเบเบฒเบ™เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰ เบซเบผเบธเบ”เบœเปˆเบญเบ™เบ‚เบฐเบซเบ™เบฒเบ” "เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบ" เบ‚เบญเบ‡เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป„เบงเป‰ เปƒเบ™ PostgreSQL, เปเบฅเบฐเบœเบปเบ™เบเบฐเบ—เบปเบšเบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเบ•เปเปˆเบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เปเบกเปˆเบ‚เปˆเบฒเบ.

เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบชเบปเบ™เบ—เบฐเบ™เบฒเบเปˆเบฝเบงเบเบฑเบš เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ TOAST เปเบฅเบฐเบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เบ‚เปเป‰เบกเบนเบ™. "เป‚เบ”เบเบชเบฐเป€เบฅเปˆเบ," เบงเบดเบ—เบตเบเบฒเบ™เป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบˆเบฐเบšเปเปˆเบ›เบฐเบซเบเบฑเบ”เบŠเบฑเบšเบžเบฐเบเบฒเบเบญเบ™เบซเบผเบฒเบเป€เบเบตเบ™เป„เบ›, เปเบ•เปˆเป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ”เบฑเบ”เปเบ›เบ‡เบฅเบฐเบซเบฑเบ”เบ„เปเบฒเบฎเป‰เบญเบ‡เบชเบฐเบซเบกเบฑเบเบ—เบฑเบ‡เบซเบกเบปเบ”.

เบ›เบฐเบซเบเบฑเบ”เป€เบ‡เบดเบ™เปƒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™ PostgreSQL
เบขเปˆเบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบ›เบฐเบชเบปเบšเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบซเบฑเบ™เบญเบญเบเป€เบ›เบฑเบ™เบœเบปเบ™เบœเบฐเบฅเบดเบ”เบซเบผเบฒเบเปƒเบ™เป€เบฅเบทเปˆเบญเบ‡เบ™เบตเป‰, เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเป€เบเบทเบญเบšเบ—เบธเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบกเป‚เบ”เบเบ—เปเบฒเบกเบฐเบŠเบฒเบ”เบ‚เบญเบ‡เบกเบฑเบ™ เบชเปˆเบงเบ™เบซเบผเบฒเบเปเบกเปˆเบ™เบ•เปเปˆเบ—เป‰เบฒเบเป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™ เปƒเบ™เปเบ‡เปˆเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบšเบฑเบ™เบ—เบถเบเป„เบงเป‰. เปเบฅเบฐเบ–เป‰เบฒเบ—เปˆเบฒเบ™เบชเบปเบ‡เป„เบชเบงเปˆเบฒเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบชเบญเบ™เบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เปƒเบซเป‰เบ‚เบฝเบ™เปƒเบชเปˆเปเบœเปˆเบ™เบ”เบดเบ”เป„เบ”เป‰เปเบ™เบงเปƒเบ” 200MB / s เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เป€เบ›เบฑเบ™เบซเบผเบฒเบ - เบเบฐเบฅเบธเบ™เบฒเบžเบฒเบเปƒเบ•เป‰ cat.

เบ„เบงเบฒเบกเบฅเบฑเบšเบ™เป‰เบญเบเป†เบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เปƒเบซเบเปˆ

เป‚เบ”เบเป‚เบ›เบฃเป„เบŸเบฅเปŒเบงเบฝเบ เบšเปเบฅเบดเบเบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ, เบžเบงเบเป€เบ‚เบปเบฒเป€เบˆเบปเป‰เบฒเป€เบ›เบฑเบ™เบ›เบปเบเบเบฐเบ•เบดเบšเบดเบ™เป„เบ›เบซเบฒเบžเบฃเบฐเบญเบปเบ‡เบˆเบฒเบ lairs เป„เบ”เป‰ เบŠเบธเบ”เบ‚เปเป‰เบ„เบงเบฒเบก.

เปเบฅเบฐเบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆ เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™ VLSIเบ–เบฒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบเบงเบ”เบชเบญเบšเปเบกเปˆเบ™เบœเบฐเบฅเบดเบ”เบ•เบฐเบžเบฑเบ™เบซเบผเบฒเบเบญเบปเบ‡เบ›เบฐเบเบญเบšเบ—เบตเปˆเบกเบตเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เปเป‰เบกเบนเบ™เบชเบฐเบฅเบฑเบšเบชเบฑเบšเบŠเป‰เบญเบ™, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบชเบญเบšเบ–เบฒเบก เบชเปเบฒเบฅเบฑเบšเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบชเบนเบ‡เบชเบธเบ” เบญเบญเบเบกเบฒเบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เป€เบ›เบฑเบ™เปเบšเบšเบ™เบตเป‰ "เบซเบผเบฒเบเบ›เบฐเบฅเบดเบกเบฒเบ™" เบ—เบตเปˆเบกเบตเป€เบซเบ”เบœเบปเบ™เบ‚เบญเบ‡เบชเบนเบ”เบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเบ—เบตเปˆเบŠเบฑเบšเบŠเป‰เบญเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบ„เปเบฒเบฎเป‰เบญเบ‡เบ‚เปเบซเบผเบทเปเบœเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเปƒเบ™เบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเบกเบฒเบฎเบญเบ”เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบเบฒเบเป€เบ›เบฑเบ™ "เป‚เบ”เบเบชเบฐเป€เบฅเปˆเบ" เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡เปƒเบซเบเปˆ.

เบ‚เปเปƒเบซเป‰เป€เบšเบดเปˆเบ‡เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ‚เบฝเบ™เบ‚เปเป‰เบกเบนเบ™ "เบ”เบดเบš" - เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ™เบตเป‰เปเบกเปˆเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบˆเบฒเบเบฅเบฒเบเบเบฒเบ™เบšเบฑเบ™เบ—เบถเบ:

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

เบชเบฑเบ™เบเบฒเบฅเบฑเบเบ›เบปเบเบเบฐเบ•เบด (เปเบกเปˆเบ™เบžเบฒเบเบชเปˆเบงเบ™เปเบฅเป‰เบง, เปเบ™เปˆเบ™เบญเบ™, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบ™เบตเป‰เปเบกเปˆเบ™เปเบกเปˆเปเบšเบšเบžเบฒเบ), เป€เบŠเบดเปˆเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆเบชเปเบฒเบ„เบฑเบ™เบ—เบตเปˆเบชเบธเบ”เปเบกเปˆเบ™เบ‚เปเป‰เบ„เบงเบฒเบก. เบšเบฒเบ‡เบ„เบฑเป‰เบ‡เบ‚เป‰เบญเบ™เบ‚เป‰เบฒเบ‡ voluminous.

เบˆเบทเปˆเป„เบงเป‰เบงเปˆเบฒเบ‚เบฐเบซเบ™เบฒเบ” "เบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบ" เบ‚เบญเบ‡เบšเบฑเบ™เบ—เบถเบเบซเบ™เบถเปˆเบ‡เปƒเบ™ PG เบšเปเปˆเบชเบฒเบกเบฒเบ”เบ„เบญเบšเบ„เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบซเบผเบฒเบเบเบงเปˆเบฒเบซเบ™เบถเปˆเบ‡เบซเบ™เป‰เบฒ, เปเบ•เปˆเบ‚เบฐเบซเบ™เบฒเบ” "เบชเบปเบกเป€เบซเบ”เบชเบปเบกเบœเบปเบ™" เปเบกเปˆเบ™เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเปเบ•เบเบ•เปˆเบฒเบ‡เบเบฑเบ™เบซเบกเบปเบ”. เป€เบžเบทเปˆเบญเบ‚เบฝเบ™เบ„เปˆเบฒเบ›เบฐเบฅเบดเบกเบฒเบ™ (varchar/text/bytea) เปƒเบชเปˆเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เปƒเบซเป‰เปƒเบŠเป‰ เป€เบ—เบฑเบเป‚เบ™เป‚เบฅเบเบต TOAST:

PostgreSQL เปƒเบŠเป‰เบ‚เบฐเบซเบ™เบฒเบ”เบซเบ™เป‰เบฒเบ„เบปเบ‡เบ—เบตเปˆ (เบ›เบปเบเบเบฐเบ•เบด 8 KB), เปเบฅเบฐเบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰ tuples เบ‚เบฐเบซเบเบฒเบเบซเบผเบฒเบเบซเบ™เป‰เบฒ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบกเบฑเบ™เป€เบ›เบฑเบ™เป„เบ›เบšเปเปˆเป„เบ”เป‰เบ—เบตเปˆเบˆเบฐเป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ„เปˆเบฒเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ—เบตเปˆเบกเบตเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบซเบผเบฒเบเป‚เบ”เบเบเบปเบ‡. เป€เบžเบทเปˆเบญเป€เบญเบปเบฒเบŠเบฐเบ™เบฐเบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบ™เบตเป‰, เบ„เปˆเบฒเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเบ–เบทเบเบšเบตเบšเบญเบฑเบ”เปเบฅเบฐ / เบซเบผเบทเปเบšเปˆเบ‡เบญเบญเบเปƒเบ™เบ—เบปเปˆเบงเบชเบฒเบเบ—เบฒเบ‡เบ”เป‰เบฒเบ™เบฎเปˆเบฒเบ‡เบเบฒเบเบซเบผเบฒเบ. เบ™เบตเป‰เป€เบเบตเบ”เบ‚เบทเป‰เบ™เป‚เบ”เบเบœเบนเป‰เปƒเบŠเป‰เบšเปเปˆเป„เบ”เป‰เบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เปเบฅเบฐเบกเบตเบœเบปเบ™เบเบฐเบ—เบปเบšเป€เบฅเบฑเบเบ™เป‰เบญเบเบ•เปเปˆเบฅเบฐเบซเบฑเบ”เป€เบŠเบตเบŸเป€เบงเบตเบชเปˆเบงเบ™เปƒเบซเบเปˆ. เบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เป€เบญเบตเป‰เบ™เบงเปˆเบฒ TOAST ...

เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบชเปเบฒเบฅเบฑเบšเบ—เบธเบเป†เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบกเบตเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™ "เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ", เบญเบฑเบ”เบ•เบฐเป‚เบ™เบกเบฑเบ” เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ„เบนเปˆเบเบฑเบš "slicing" เปเบกเปˆเบ™เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™ เปเบ•เปˆเบฅเบฐเบšเบฑเบ™เบ—เบถเบ "เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ" เปƒเบ™ 2KB segments:

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

เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบ–เป‰เบฒเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบ‚เบฝเบ™เบ‚เปเป‰เบ„เบงเบฒเบกเบ—เบตเปˆเบกเบตเบ„เปˆเบฒ "เปƒเบซเบเปˆ". data, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบˆเบฐเป€เบเบตเบ”เบ‚เบถเป‰เบ™ เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ•เบปเป‰เบ™เบ•เปเปเบฅเบฐ PK เบ‚เบญเบ‡เบกเบฑเบ™, เปเบ•เปˆเบเบฑเบ‡เบเบฑเบš TOAST เปเบฅเบฐ PK เบ‚เบญเบ‡เบกเบฑเบ™.

เบเบฒเบ™เบซเบผเบธเบ”เบœเปˆเบญเบ™เบญเบดเบ”เบ—เบดเบžเบปเบ™เบ‚เบญเบ‡ TOAST

เปเบ•เปˆเบšเบฑเบ™เบ—เบถเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบชเปˆเบงเบ™เปƒเบซเบเปˆเบเบฑเบ‡เบšเปเปˆเปƒเบซเบเปˆเบ›เบฒเบ™เปƒเบ”, เบ„เบงเบ™เบžเปเบ”เบตเบเบฑเบš 8KB - เบ‚เป‰เบญเบเบชเบฒเบกเบฒเบ”เบ›เบฐเบซเบเบฑเบ”เป€เบ‡เบดเบ™เป„เบ”เป‰เปเบ™เบงเปƒเบ”? ..

เบ™เบตเป‰เปเบกเปˆเบ™เบšเปˆเบญเบ™เบ—เบตเปˆเบ„เบธเบ™เบฅเบฑเบเบชเบฐเบ™เบฐเบกเบฒเปƒเบซเป‰เบเบฒเบ™เบŠเปˆเบงเบเป€เบซเบผเบทเบญเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ STORAGE เบขเบนเปˆเปƒเบ™เบ–เบฑเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡:

  • เบญเบฐเบ—เบดเบšเบฒเบ เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบ—เบฑเบ‡เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”เปเบฅเบฐเบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. เบ™เบตเป‰ เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบกเบฒเบ”เบ•เบฐเบ–เบฒเบ™ เบชเปเบฒเบฅเบฑเบšเบ›เบฐเป€เบžเบ”เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบš TOAST เบชเปˆเบงเบ™เปƒเบซเบเปˆ. เบ—เปเบฒเบญเบดเบ”เบกเบฑเบ™เบžเบฐเบเบฒเบเบฒเบกเบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบšเบตเบšเบญเบฑเบ”, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบกเบฑเบ™เบขเบนเปˆเบ™เบญเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ–เป‰เบฒเปเบ–เบงเบเบฑเบ‡เปƒเบซเบเปˆเป€เบเบตเบ™เป„เบ›.
  • HAND เบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบšเบตเบšเบญเบฑเบ”เปเบ•เปˆเบšเปเปˆเปเบกเปˆเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ. (เปƒเบ™โ€‹เบ„เบงเบฒเบกโ€‹เป€เบ›เบฑเบ™โ€‹เบˆเบดเบ‡, เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบเบฑเบ‡เบˆเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ„เปเบฅเปเบฒเบ”เบฑเปˆเบ‡เบเปˆเบฒเบง, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆ เป€เบ›เบฑเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบชเบธเบ”เบ—เป‰เบฒเบ, เป€เบกเบทเปˆเบญเบšเปเปˆเบกเบตเบงเบดเบ—เบตเบญเบทเปˆเบ™เบ—เบตเปˆเบˆเบฐเบซเบปเบ”เบชเบฒเบเป€เบžเบทเปˆเบญเปƒเบซเป‰เบกเบฑเบ™เป€เบซเบกเบฒเบฐเบเบฑเบšเบซเบ™เป‰เบฒ.)

เปƒเบ™เบ„เบงเบฒเบกเป€เบ›เบฑเบ™เบˆเบดเบ‡, เบ™เบตเป‰เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบ•เป‰เบญเบ‡เบเบฒเบ™เบชเปเบฒเบฅเบฑเบšเบ‚เปเป‰เบ„เบงเบฒเบก - เบšเบตเบšเบกเบฑเบ™เปƒเบซเป‰เบซเบผเบฒเบเป€เบ—เบปเปˆเบฒเบ—เบตเปˆเป€เบ›เบฑเบ™เป„เบ›เป„เบ”เป‰, เปเบฅเบฐเบ–เป‰เบฒเบกเบฑเบ™เบšเปเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เป€เบญเบปเบฒเปƒเบชเปˆเปƒเบ™ 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 เป€เบ—เบทเปˆเบญ, เป€เบŠเบดเปˆเบ‡ unloaded เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆเปเบœเปˆเบ™, เปเบ•เปˆเบเบฑเบ‡ CPU เป„เบ”เป‰:

เบ›เบฐเบซเบเบฑเบ”เป€เบ‡เบดเบ™เปƒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™ PostgreSQL
เบ›เบฐเบซเบเบฑเบ”เป€เบ‡เบดเบ™เปƒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™ PostgreSQL
เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบˆเบฐเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบเบฒเบเป€เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”เบ™เป‰เบญเบเบเบงเปˆเบฒเปƒเบ™ "เบญเปˆเบฒเบ™" เปเบœเปˆเบ™, เบšเปเปˆเบžเบฝเบ‡เปเบ•เปˆ "เบ‚เบฝเบ™" - เบ™เบฑเบšเบ•เบฑเป‰เบ‡เปเบ•เปˆเป€เบกเบทเปˆเบญเปƒเบชเปˆเบšเบฑเบ™เบ—เบถเบเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบ•เป‰เบญเบ‡ "เบญเปˆเบฒเบ™" เบชเปˆเบงเบ™เบ‚เบญเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เบ‚เบญเบ‡เปเบ•เปˆเบฅเบฐเบ”เบฑเบ”เบŠเบฐเบ™เบตเป€เบžเบทเปˆเบญเบเปเบฒเบ™เบปเบ”เบ‚เบญเบ‡เบกเบฑเบ™. เบ•เปเบฒโ€‹เปเบซเบ™เปˆเบ‡โ€‹เปƒเบ™โ€‹เบญเบฐโ€‹เบ™เบฒโ€‹เบ„เบปเบ”โ€‹เบ‚เบญเบ‡โ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹.

เปƒเบœเบชเบฒเบกเบฒเบ”เบ”เปเบฒเบฅเบปเบ‡เบŠเบตเบงเบดเบ”เป„เบ”เป‰เบ”เบตเปƒเบ™ PostgreSQL 11

เบซเบผเบฑเบ‡โ€‹เบˆเบฒเบโ€‹เบเบฒเบ™โ€‹เบ›เบฑเบšโ€‹เบ›เบธเบ‡โ€‹เป€เบ›เบฑเบ™ PG11โ€‹, เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบ•เบฑเบ”โ€‹เบชเบดเบ™โ€‹เปƒเบˆโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบชเบทเบšโ€‹เบ•เปเปˆ "เบ›เบฑเบšโ€‹" TOAST เปเบฅเบฐโ€‹เบชเบฑเบ‡โ€‹เป€เบเบ”โ€‹เป€เบซเบฑเบ™โ€‹เบงเปˆเบฒโ€‹เบเบฒเบ™โ€‹เป€เบฅเบตเปˆเบกโ€‹เบ•เบปเป‰เบ™โ€‹เบˆเบฒเบโ€‹เบชเบฐโ€‹เบšเบฑเบšโ€‹เบ™เบตเป‰โ€‹เบžเบฒโ€‹เบฅเบฒโ€‹เบกเบดโ€‹เป€เบ•เบตโ€‹เป„เบ”เป‰โ€‹เบกเบตโ€‹เปƒเบซเป‰โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบ›เบฑเบš toast_tuple_target:

เบฅเบฐเบซเบฑเบ”เบเบฒเบ™เบ›เบฐเบกเบงเบ™เบœเบปเบ™ TOAST เบžเบฝเบ‡เปเบ•เปˆเป„เบŸเป„เบซเบกเป‰เป€เบกเบทเปˆเบญเบ„เปˆเบฒเปเบ–เบงเบ—เบตเปˆเบˆเบฐเป€เบเบฑเบšเป„เบงเป‰เปƒเบ™เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปƒเบซเบเปˆเบเบงเปˆเบฒ TOAST_TUPLE_THRESHOLD bytes (เบ›เบปเบเบเบฐเบ•เบด 2 KB). เบฅเบฐเบซเบฑเบ” TOAST เบˆเบฐเบšเบตเบšเบญเบฑเบ” เปเบฅเบฐ/เบซเบผเบท เบเป‰เบฒเบเบ„เปˆเบฒเบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบญเบญเบเบˆเบฒเบเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบˆเบปเบ™เบเปˆเบงเบฒเบ„เปˆเบฒเปเบ–เบงเบเบฒเบเป€เบ›เบฑเบ™เปœเป‰เบญเบเบเบงเปˆเบฒ TOAST_TUPLE_TARGET bytes (เบ„เปˆเบฒเบ•เบปเบงเปเบ›, เบ›เบปเบเบเบฐเบ•เบดเปเบกเปˆเบ™ 2 KB) เบซเบผเบทเบ‚เบฐเปœเบฒเบ”เบšเปเปˆเบชเบฒเบกเบฒเบ”เบซเบผเบธเบ”เป„เบ”เป‰.

เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบ•เบฑเบ”โ€‹เบชเบดเบ™โ€‹เปƒเบˆโ€‹เบงเปˆเบฒโ€‹เบ‚เปเป‰โ€‹เบกเบนเบ™โ€‹เบ—เบตเปˆโ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เบ›เบปเบโ€‹เบเบฐโ€‹เบ•เบดโ€‹เปเบฅเป‰เบงโ€‹เปเบกเปˆเบ™ "เบชเบฑเป‰เบ™โ€‹เบซเบผเบฒเบโ€‹" เบซเบผเบท "เบเบฒเบงโ€‹เบซเบผเบฒเบโ€‹"โ€‹, เบ”เบฑเปˆเบ‡โ€‹เบ™เบฑเป‰เบ™โ€‹เบžเบงเบโ€‹เป€เบฎเบปเบฒโ€‹เป„เบ”เป‰โ€‹เบ•เบฑเบ”โ€‹เบชเบดเบ™โ€‹เปƒเบˆโ€‹เบ—เบตเปˆโ€‹เบˆเบฐโ€‹เบˆเปเบฒโ€‹เบเบฑเบ”โ€‹เบ•เบปเบงโ€‹เป€เบฎเบปเบฒโ€‹เป€เบญเบ‡โ€‹เปƒเบ™โ€‹เบ„เปˆเบฒโ€‹เบ•เปเบฒโ€‹เปˆโ€‹เบชเบธเบ”โ€‹เบ—เบตเปˆโ€‹เป€เบ›เบฑเบ™โ€‹เป„เบ›โ€‹เป„เบ”เป‰โ€‹:

ALTER TABLE rawplan_orig SET (toast_tuple_target = 128);

เบกเบฒเป€เบšเบดเปˆเบ‡เบงเปˆเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปƒเปเปˆเบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบเบฒเบ™เป‚เบซเบผเบ”เปเบœเปˆเบ™เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ„เบทเบ™เปƒเปเปˆเปเบ™เบงเปƒเบ”:

เบ›เบฐเบซเบเบฑเบ”เป€เบ‡เบดเบ™เปƒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™ PostgreSQL
เบšเปเปˆเบ”เบต! เบชเบฐเป€เบฅเปˆเบ เปเบ–เบงเป„เบ›เบซเบฒเปเบœเปˆเบ™เป„เบ”เป‰เบซเบผเบธเบ”เบฅเบปเบ‡ เบ›เบฐเบกเบฒเบ™ 1.5 เป€เบ—เบทเปˆเบญ, เปเบฅเบฐเปเบœเปˆเบ™ โ€œเบšเปเปˆเบซเบงเปˆเบฒเบ‡โ€ เปเบกเปˆเบ™ 20 เป€เบ›เบตเป€เบŠเบฑเบ™! เปเบ•เปˆเบšเบฒเบ‡เบ—เบตเบ™เบตเป‰เบญเบฒเบ”เบˆเบฐเบชเบปเปˆเบ‡เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆ CPU เบšเป?

เบ›เบฐเบซเบเบฑเบ”เป€เบ‡เบดเบ™เปƒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™ PostgreSQL
เบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบเบกเบฑเบ™เบšเปเปˆเบฎเป‰เบฒเบเปเบฎเบ‡เบเบงเปˆเบฒเป€เบเบปเปˆเบฒ. เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ, เบกเบฑเบ™เป€เบ›เบฑเบ™เบเบฒเบ™เบเบฒเบเบ—เบตเปˆเบˆเบฐเบ•เบฑเบ”เบชเบดเบ™เบงเปˆเบฒเป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบ›เบฐเบฅเบดเบกเบฒเบ™เบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเบเบฑเบ‡เบšเปเปˆเบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบกเบเบฒเบ™เป‚เบซเบผเบ” CPU เป‚เบ”เบเบชเบฐเป€เบฅเปˆเบเบชเบนเบ‡เบ‚เบถเป‰เบ™ 5%.

เป‚เบ”เบเบเบฒเบ™เบ›เปˆเบฝเบ™เปเบ›เบ‡เบชเบฐเบ–เบฒเบ™เบ—เบตเปˆเบ‚เบญเบ‡เบ‚เปเป‰เบเปเบฒเบ™เบปเบ”, เบœเบปเบ™เบฅเบงเบก ... เบ›เปˆเบฝเบ™เปเบ›เบ‡!

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบฎเบนเป‰, เป€เบ‡เบดเบ™เบซเบ™เบถเปˆเบ‡เบˆเบฐเบŠเปˆเบงเบเบ›เบฐเบขเบฑเบ” ruble, เปเบฅเบฐเบ”เป‰เบงเบเบ›เบฐเบฅเบดเบกเบฒเบ™เบเบฒเบ™เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบกเบฑเบ™เบ›เบฐเบกเบฒเบ™ 10TB/เป€เบ”เบทเบญเบ™ เป€เบ–เบดเบ‡เปเบกเปˆเบ™เบงเปˆเบฒเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเป€เบฅเบฑเบเบ™เป‰เบญเบเบเปเปˆเบชเบฒเบกเบฒเบ”เปƒเบซเป‰เบเปเบฒเป„เบฅเบ—เบตเปˆเบ”เบต. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบญเบปเบฒเปƒเบˆเปƒเบชเปˆเบเบฑเบšเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ—เบฒเบ‡เบเบฒเบเบฐเบžเบฒเบšเบ‚เบญเบ‡เบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ - เปเบ™เบงเปƒเบ”เปเบ—เป‰ เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™ "เบงเบฒเบ‡เบŠเป‰เบญเบ™เบเบฑเบ™" เบขเบนเปˆเปƒเบ™เบšเบฑเบ™เบ—เบถเบ เปเบ•เปˆเบฅเบฐเบ•เบฒเบ•เบฐเบฅเบฒเบ‡.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบงเปˆเบฒ เบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡เบ‚เปเป‰เบกเบนเบ™ เบ™เบตเป‰เปเบกเปˆเบ™เบเบปเบ‡เป„เบ›เบเบปเบ‡เบกเบฒ เบœเบปเบ™เบเบฐเบ—เบปเบšเบ•เปเปˆเบ›เบฐเบฅเบดเบกเบฒเบ™เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบš:

เบชเบฐเบ–เบฒเบ›เบฑเบ”เบ•เบฐเบเบฐเบเปเบฒเบˆเปเบฒเบ™เบงเบ™เบซเบผเบฒเบเบชเบฐเบซเบ™เบญเบ‡เบเบฒเบ™เบˆเบฑเบ”เบฅเปเบฒเบ”เบฑเบšเบ‚เปเป‰เบกเบนเบ™เปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ„เปเบฒเบชเบฑเบšเบ‚เบญเบ‡เป€เบ„เบทเปˆเบญเบ‡เบˆเบฑเบ. เบ•เบปเบงเบขเปˆเบฒเบ‡, เปƒเบ™เบฅเบฐเบšเบปเบš 32-bit x86, integers (integer type, 4 bytes) เบˆเบฐเบ–เบทเบเบˆเบฑเบ”เปƒเบชเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ”เบ‚เบญเบ‡เบ„เปเบฒ 4-byte, เบ„เบทเบเบฑเบ™เบเบฑเบšเบˆเบฐ double precision floating point (double precision floating point, 8 bytes). เปเบฅเบฐเปƒเบ™เบฅเบฐเบšเบปเบš 64-bit, เบ„เปˆเบฒเบชเบญเบ‡เป€เบ—เบปเปˆเบฒเบˆเบฐเบ–เบทเบเบชเบญเบ”เบ„เปˆเบญเบ‡เบเบฑเบšเบ‚เบญเบšเป€เบ‚เบ”เบ„เปเบฒเบชเบฑเบš 8-byte. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบซเบ”เบœเบปเบ™เบญเบทเปˆเบ™เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบšเปเปˆเป€เบ‚เบปเป‰เบฒเบเบฑเบ™เป„เบ”เป‰.

เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบเบฒเบ™เบˆเบฑเบ”เบฎเบฝเบ‡, เบ‚เบฐเปœเบฒเบ”เบ‚เบญเบ‡เปเบ–เบงเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เปเบกเปˆเบ™เบ‚เบถเป‰เบ™เบเบฑเบšเบฅเบณเบ”เบฑเบšเบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™. เบ›เบปเบเบเบฐเบ•เบดเปเบฅเป‰เบงเบœเบปเบ™เบเบฐเบ—เบปเบšเบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบชเบฑเบ‡เป€เบเบ”เป€เบซเบฑเบ™เบซเบผเบฒเบ, เปเบ•เปˆเปƒเบ™เบšเบฒเบ‡เบเปเบฅเบฐเบ™เบตเบกเบฑเบ™เบชเบฒเบกเบฒเบ”เบ™เปเบฒเป„เบ›เบชเบนเปˆเบเบฒเบ™เป€เบžเบตเปˆเบกเบ‚เบถเป‰เบ™เบขเปˆเบฒเบ‡เบซเบผเบงเบ‡เบซเบผเบฒเบเปƒเบ™เบ‚เบฐเบซเบ™เบฒเบ”. เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ–เป‰เบฒเป€เบˆเบปเป‰เบฒเบ›เบฐเบชเบปเบก char(1) เปเบฅเบฐ integer fields, เป‚เบ”เบเบ›เบปเบเบเบฐเบ•เบดเบˆเบฐเบกเบต 3 bytes เป€เบชเบเป„เบ›เบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเบกเบฑเบ™.

เปƒเบซเป‰เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบ•เบปเบงเปเบšเบšเบชเบฑเบ‡เป€เบ„เบฒเบฐ:

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 ะฑะฐะนั‚

เบชเบญเบ‡เบชเบฒเบก bytes เบžเบดเป€เบชเบ”เบกเบฒเบˆเบฒเบเปƒเบชเปƒเบ™เบเปเบฅเบฐเบ™เบตเบ—เปเบฒเบญเบดเบ”? เบกเบฑเบ™โ€‹เป€เบ›เบฑเบ™โ€‹เบ‡เปˆเบฒเบโ€‹เบ”เบฒเบ - เบ‚เบฐเปœเบฒเบ”เบ™เป‰เบญเบ 2-byte เบˆเบฑเบ”เบฎเบฝเบ‡เบขเบนเปˆเปƒเบ™เบ‚เบญเบšเป€เบ‚เบ” 4-byte เบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบžเบฒเบเบชเบฐเบซเบ™เบฒเบกเบ•เปเปˆเป„เบ›, เปเบฅเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบกเบฑเบ™เป€เบ›เบฑเบ™เบญเบฑเบ™เบชเบธเบ”เบ—เป‰เบฒเบ, เบšเปเปˆเบกเบตเบซเบเบฑเบ‡เปเบฅเบฐเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบชเบญเบ”เบ„เปˆเบญเบ‡.

เปƒเบ™เบ—เบฒเบ‡เบ—เบดเบ”เบชเบฐเบ”เบต, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบ”เบตเปเบฅเบฐเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบˆเบฑเบ”เปเบˆเบ‡เบ—เบปเปˆเบ‡เบ™เบฒเบ„เบทเบ™เปƒเบซเบกเปˆเบ•เบฒเบกเบ—เบตเปˆเบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™. เปƒเบซเป‰เบเบงเบ”เป€เบšเบดเปˆเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™เบ‚เปเป‰เบกเบนเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เป‚เบ”เบเปƒเบŠเป‰เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‚เบญเบ‡เบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบซเบ™เบถเปˆเบ‡, เบชเปˆเบงเบ™เบ›เบฐเบˆเปเบฒเบงเบฑเบ™เบ—เบตเปˆเบ„เบญเบšเบ„เบญเบ‡ 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)

เบ›เบฐเบฅเบดเบกเบฒเบ™เบ—เบฑเบ‡เบซเบกเบปเบ”เบ‚เบญเบ‡เบžเบฒเบเปเบกเปˆเบ™เบ–เบทเบเบเปเบฒเบ™เบปเบ”เป‚เบ”เบเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡ "เบ‚เปเป‰เป€เบ—เบฑเบ”เบˆเบดเบ‡" เปเบฅเบฐเบ‚เบถเป‰เบ™เบเบฑเบšเบžเบฝเบ‡เปเบ•เปˆเบ‚เบฐเบšเบงเบ™เบเบฒเบ™เบžเบฒเบเบ™เบญเบ, เบชเบฐเบ™เบฑเป‰เบ™เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเปเบšเปˆเบ‡เบ‚เบฐเบซเบ™เบฒเบ”เบ‚เบญเบ‡ heap เป„เบ”เป‰ (pg_relation_size) เป‚เบ”เบเบˆเปเบฒเบ™เบงเบ™เบ‚เบญเบ‡เบšเบฑเบ™เบ—เบถเบเปƒเบ™เบกเบฑเบ™ - เบ™เบฑเป‰เบ™เปเบกเปˆเบ™, เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เบฎเบฑเบš เบ‚เบฐเบซเบ™เบฒเบ”เบชเบฐเป€เบฅเปˆเบเบ‚เบญเบ‡เบเบฒเบ™เบšเบฑเบ™เบ—เบถเบเบ•เบปเบงเบˆเบดเบ‡:

เบ›เบฐเบซเบเบฑเบ”เป€เบ‡เบดเบ™เปƒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™ PostgreSQL
เบฅเบปเบš 6%., เบเบดเปˆเบ‡เปƒเบซเบเปˆ!

เปเบ•เปˆ, เปเบ™เปˆเบ™เบญเบ™, เบ—เบธเบเบชเบดเปˆเบ‡เบ—เบธเบเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เบšเปเปˆ rosy - เบซเบผเบฑเบ‡เบˆเบฒเบเบ—เบตเปˆเบ—เบฑเบ‡เบซเบกเบปเบ”, เปƒเบ™เบ”เบฑเบ”เบŠเบฐเบ™เบตเบžเบงเบเป€เบฎเบปเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เบ›เปˆเบฝเบ™เบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบŠเปˆเบญเบ‡เบ‚เปเป‰เบกเบนเบ™, เปเบฅเบฐเบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™ "เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›" (pg_total_relation_size) ...

เบ›เบฐเบซเบเบฑเบ”เป€เบ‡เบดเบ™เปƒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™ PostgreSQL
...เบเบฑเบ‡เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰เบ„เบทเบเบฑเบ™ เบšเบฑเบ™เบ—เบถเบ 1.5%เป‚เบ”เบเบšเปเปˆเบกเบตเบเบฒเบ™เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ”เบฝเบงเบ‚เบญเบ‡เบฅเบฐเบซเบฑเบ”. เปเบกเปˆเบ™เปเบฅเป‰เบง!

เบ›เบฐเบซเบเบฑเบ”เป€เบ‡เบดเบ™เปƒเบ™เบ›เบฐเบฅเบดเบกเบฒเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเปƒเบ™ PostgreSQL

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเบชเบฑเบ‡เป€เบเบ”เบงเปˆเบฒเบ—เบฒเบ‡เป€เบฅเบทเบญเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบˆเบฑเบ”เปเบˆเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบšเปเปˆเปเบกเปˆเบ™เบ„เบงเบฒเบกเบˆเบดเบ‡เบ—เบตเปˆเบงเปˆเบฒเบกเบฑเบ™เปเบกเปˆเบ™เบ”เบตเบ—เบตเปˆเบชเบธเบ”. เป€เบžเบฒเบฐเบงเปˆเบฒเป€เบˆเบปเป‰เบฒเบšเปเปˆเบ•เป‰เบญเบ‡เบเบฒเบ™ "เบˆเบตเบ" เบšเบฒเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡เบ—เบปเปˆเบ‡เบ™เบฒเบ”เป‰เบงเบเป€เบซเบ”เบœเบปเบ™เบ”เป‰เบฒเบ™เบ„เบงเบฒเบกเบ‡เบฒเบก - เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ„เบนเปˆเบœเบปเบงเป€เบกเบ. (pack, recno), เบŠเบถเปˆเบ‡เป€เบ›เบฑเบ™ PK เบชเปเบฒเบฅเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ™เบตเป‰.

เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›, เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบˆเบฑเบ” "เบ•เปเบฒเปˆเบชเบธเบ”เบ—เบตเปˆ" เบ‚เบญเบ‡เบ—เบปเปˆเบ‡เบ™เบฒเปเบกเปˆเบ™เป€เบ›เบฑเบ™เบงเบฝเบเบ‡เบฒเบ™เบ—เบตเปˆเบ‡เปˆเบฒเบเบ”เบฒเบเบžเปเบชเบปเบกเบ„เบงเบ™. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป„เบ”เป‰เบฎเบฑเบšเบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ—เบตเปˆเบ”เบตเบเบงเปˆเบฒเบˆเบฒเบเบ‚เปเป‰เบกเบนเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เบซเบผเบฒเบเบเปˆเบงเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ - เบฅเบญเบ‡เบกเบฑเบ™!

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™