αžŸαž“αŸ’αžŸαŸ†αž˜αž½αž™αž€αžΆαž€αŸ‹αž›αžΎαž”αžšαž·αž˜αžΆαžŽαž’αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„ 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)
);

αžŸαž‰αŸ’αž‰αžΆαž’αž˜αŸ’αž˜αžαžΆ (αž‡αžΆαž•αŸ’αž“αŸ‚αž€αžšαž½αž…αž αžΎαž™ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž‚αŸ†αžšαžΌαž•αŸ’αž“αŸ‚αž€) αžŠαŸ‚αž›αž’αŸ’αžœαžΈαžŠαŸ‚αž›αžŸαŸ†αžαžΆαž“αŸ‹αž”αŸ†αž•αž»αžαž‚αžΊαž’αžαŸ’αžαž”αž‘αŸ” αž–αŸαž›αžαŸ’αž›αŸ‡αž˜αžΆαž“αž–αž“αŸ’αž›αžΊαžαŸ’αž›αžΆαŸ†αž„αŸ”

αžŸαžΌαž˜αž…αžΆαŸ†αžαžΆαž‘αŸ†αž αŸ† "αžšαžΌαž”αžœαž·αž‘αŸ’αž™αžΆ" αž“αŸƒαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž˜αž½αž™αž“αŸ…αž€αŸ’αž“αž»αž„ PG αž˜αž·αž“αž’αžΆαž…αž€αžΆαž“αŸ‹αž€αžΆαž”αŸ‹αž…αŸ’αžšαžΎαž“αž‡αžΆαž„αž˜αž½αž™αž‘αŸ†αž–αŸαžšαž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αž”αžΆαž“αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‘αŸ†αž αŸ† "αž‘αžΌαž‡αžΈαžαž›" αž‚αžΊαž‡αžΆαž”αž‰αŸ’αž αžΆαžαž»αžŸαž‚αŸ’αž“αžΆαž‘αžΆαŸ†αž„αžŸαŸ’αžšαž»αž„αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžšαžŸαŸαžšαžαž˜αŸ’αž›αŸƒαž”αžšαž·αž˜αžΆαžŽ (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αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž€αžΆαžšαžαžαž–αž·αžαž”αŸ’αžšαžΆαž€αžŠαž“αžΉαž„αž€αžΎαžαž‘αžΎαž„ αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αžαžΆαžšαžΆαž„αž˜αŸ αž“αž·αž„ PK αžšαž”αžŸαŸ‹αžœαžΆαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ‚αž˜αž‘αžΆαŸ†αž„ TOAST αž“αž·αž„ PK αžšαž”αžŸαŸ‹αžœαžΆαž•αž„αžŠαŸ‚αžšαŸ”.

αž€αžΆαžαŸ‹αž”αž“αŸ’αžαž™αž₯αž‘αŸ’αž’αž·αž–αž› TOAST

αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαžšαž”αžŸαŸ‹αž™αžΎαž„αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αž“αŸ…αžαŸ‚αž˜αž·αž“αž’αŸ† αž‚αž½αžšαžαŸ‚αžŸαž˜αž“αžΉαž„ 8KB - αžαžΎαžαŸ’αž‰αž»αŸ†αž’αžΆαž…αžŸαž“αŸ’αžŸαŸ†αž›αž»αž™αžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ? ..

αž“αŸαŸ‡αž‚αžΊαž‡αžΆαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž‚αž»αžŽαž›αž€αŸ’αžαžŽαŸˆαž˜αž€αžŠαž›αŸ‹αž‡αŸ†αž“αž½αž™αžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” STORAGE αž“αŸ…αž‡αž½αžšαžαžΆαžšαžΆαž„αŸ–

  • αž‘αžΆαž‰αž™αž€ αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž‘αžΆαŸ†αž„αž€αžΆαžšαž”αž„αŸ’αž αžΆαž”αŸ‹ αž“αž·αž„αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αŸ” αž“αŸαŸ‡αŸ” αž‡αž˜αŸ’αžšαžΎαžŸαžŸαŸ’αžαž„αŸ‹αžŠαžΆαžš αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž”αŸ’αžšαž—αŸαž‘αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž’αž“αž»αž›αŸ„αž˜αžαžΆαž˜ TOAST αž—αžΆαž‚αž…αŸ’αžšαžΎαž“αŸ” αžŠαŸ†αž”αžΌαž„αžœαžΆαž–αŸ’αž™αžΆαž™αžΆαž˜αž’αŸ’αžœαžΎαž€αžΆαžšαž”αž„αŸ’αž αžΆαž”αŸ‹ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž‘αž»αž€αžœαžΆαž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ…αžαžΆαžšαžΆαž„ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž‡αž½αžšαžŠαŸαž€αž“αŸ…αžαŸ‚αž’αŸ†αž–αŸαž€αŸ”
  • αžŠαŸƒ αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž”αž„αŸ’αž αžΆαž”αŸ‹αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž•αŸ’αž‘αž»αž€αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€ (αž‡αžΆαž€αžΆαžšαž–αž·αž αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž“αžΉαž„αž“αŸ…αžαŸ‚αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‡αž½αžšαžˆαžšαž”αŸ‚αž”αž“αŸαŸ‡ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αžΆαž“αžαŸ‚αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αž‡αžΆαž˜αž’αŸ’αž™αŸ„αž”αžΆαž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αžšαž½αž‰αžαŸ’αžŸαŸ‚αž’αž€αŸ’αžŸαžšαžŠαžΎαž˜αŸ’αž”αžΈαž±αŸ’αž™αžœαžΆαžŸαž˜αž“αŸ…αž›αžΎαž‘αŸ†αž–αŸαžšαŸ” )

αžαžΆαž˜αž–αž·αžαž“αŸαŸ‡αž‚αžΊαž‡αžΆαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžαŸ’αžαž”αž‘ - αž”αž„αŸ’αž αžΆαž”αŸ‹αžœαžΆαž±αŸ’αž™αž”αžΆαž“αž…αŸ’αžšαžΎαž“αžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž”αžΆαž“ αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαžœαžΆαž˜αž·αž“αžŸαž˜αž‘αžΆαž›αŸ‹αžαŸ‚αžŸαŸ„αŸ‡ αž…αžΌαžšαžŠαžΆαž€αŸ‹αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ TOAST. αž“αŸαŸ‡αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž—αŸ’αž›αžΆαž˜αŸ—αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž˜αž½αž™αŸ–

ALTER TABLE rawdata_orig ALTER COLUMN data SET STORAGE MAIN;

αžšαž”αŸ€αž”αžœαžΆαž™αžαž˜αŸ’αž›αŸƒαž•αž›αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹

αžŠαŸ„αž™αžŸαžΆαžšαž›αŸ†αž αžΌαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž‡αžΆαžšαŸ€αž„αžšαžΆαž›αŸ‹αžαŸ’αž„αŸƒ αž™αžΎαž„αž˜αž·αž“αž’αžΆαž…αž”αŸ’αžšαŸ€αž”αž’αŸ€αž”αž…αŸ†αž“αž½αž“αžŠαžΆαž…αŸ‹αžαžΆαžαž”αžΆαž“αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž“αŸαž™αž’αŸ€αž” αž—αžΆαž‚αž αŸŠαž»αž“αžαžΌαž…αž‡αžΆαž„ αž™αžΎαž„αžŸαžšαžŸαŸαžšαžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„ TOAST - αž€αžΆαž“αŸ‹αžαŸ‚αž›αŸ’αž’αž‡αžΆαž„αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžœαžΆαž˜αžΆαž“αž‚αŸ’αžšαŸ„αŸ‡αžαŸ’αž“αžΆαž€αŸ‹αž“αŸ…αž‘αžΈαž“αŸαŸ‡ - αž”αžšαž·αž˜αžΆαžŽ "αžšαžΌαž”αžœαž“αŸ’αž" αž€αžΆαž“αŸ‹αžαŸ‚αž’αŸ†αž“αŸƒαž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆαž”αž»αž‚αŸ’αž‚αž›αž“αžΈαž˜αž½αž™αŸ— αž›αž·αž”αž·αž€αŸ’αžšαž˜ "αž€αžΆαž“αŸ‹αžαŸ‚αž‘αžΌαž›αŸ†αž‘αžΌαž›αžΆαž™" αž“αžΉαž„αž€αŸ’αž›αžΆαž™αž‡αžΆ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž™αžΎαž„αžαŸ’αžšαžΌαžœαž‚αŸ’αžšαž”αžŠαžŽαŸ’αžαž”αŸ‹αž‘αŸ†αž–αŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž€αžΆαž“αŸ‹αžαŸ‚αž…αŸ’αžšαžΎαž“αŸ”

αž•αŸ’αž“αŸ‚αž€ αž˜αž»αž“αž–αŸαž›αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš:

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

αž•αŸ’αž“αŸ‚αž€ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš:

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

αžαžΆαž˜αž–αž·αžαž™αžΎαž„ αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαžšαžŸαŸαžšαž‘αŸ… TOAST 2 αžŠαž„αžαž·αž…αž‡αžΆαž„αž‰αžΉαž€αž‰αžΆαž”αŸ‹αžŠαŸ‚αž›αž˜αž·αž“αž•αŸ’αž‘αž»αž€αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αžαžΆαžŸαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸαž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ‚αž˜αž‘αžΆαŸ†αž„αžŸαŸŠαžΈαž—αžΈαž™αžΌαž•αž„αžŠαŸ‚αžšαŸ–

αžŸαž“αŸ’αžŸαŸ†αž˜αž½αž™αž€αžΆαž€αŸ‹αž›αžΎαž”αžšαž·αž˜αžΆαžŽαž’αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„ 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 αž—αžΆαž‚αžšαž™! αž”αŸ‰αž»αž“αŸ’αžαŸ‚β€‹αž”αŸ’αžšαž αŸ‚αž›β€‹αž‡αžΆβ€‹αžœαžΆβ€‹αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹β€‹αžŠαž›αŸ‹β€‹αžŸαŸŠαžΈαž—αžΈαž™αžΌβ€‹αžαŸ’αž›αŸ‡β€‹αžŠαŸ‚αžšβ€‹αž¬β€‹αž‘αŸ?

αžŸαž“αŸ’αžŸαŸ†αž˜αž½αž™αž€αžΆαž€αŸ‹αž›αžΎαž”αžšαž·αž˜αžΆαžŽαž’αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„ PostgreSQL
αž™αŸ‰αžΆαž„αž αŸ„αž…αžŽαžΆαžŸαŸ‹αžœαžΆαž˜αž·αž“αž’αžΆαž€αŸ’αžšαž€αŸ‹αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸαŸ” αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆ, αžœαžΆαž–αž·αž”αžΆαž€αž€αŸ’αž“αž»αž„αž€αžΆαžšαžœαž·αž“αž·αž…αŸ’αž†αŸαž™αžαžΆαžαžΎαžŸαžΌαž˜αŸ’αž”αžΈαžαŸ‚αž”αžšαž·αž˜αžΆαžŽαž”αŸ‚αž”αž“αŸαŸ‡αž“αŸ…αžαŸ‚αž˜αž·αž“αž’αžΆαž…αž”αž„αŸ’αž€αžΎαž“αž€αžΆαžšαž•αŸ’αž‘αž»αž€αžŸαŸŠαžΈαž—αžΈαž™αžΌαž‡αžΆαž˜αž’αŸ’αž™αž˜αžαŸ’αž–αžŸαŸ‹αž‡αžΆαž„αž“αŸαŸ‡αŸ” 5%.

αžŠαŸ„αž™β€‹αž€αžΆαžšβ€‹αž•αŸ’αž›αžΆαžŸαŸ‹β€‹αž”αŸ’αžαžΌβ€‹αžšβ€‹αž€αž“αŸ’αž›αŸ‚αž„β€‹αž“αŸƒβ€‹αž›αž€αŸ’αžαžαžŽαŸ’αžŒβ€‹, αž”αžΌαž€ ... αž•αŸ’αž›αžΆαžŸαŸ‹β€‹αž”αŸ’αžαžΌβ€‹αžšβ€‹!

αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž”αžΆαž“αžŠαžΉαž„αž αžΎαž™αžαžΆαž€αžΆαž€αŸ‹αž˜αž½αž™αžŸαž“αŸ’αžŸαŸ†αž”αžΆαž“αž˜αž½αž™αžšαžΌαž” αž αžΎαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αŸ†αž αŸ†αž•αŸ’αž‘αž»αž€αžšαž”αžŸαŸ‹αž™αžΎαž„αžœαžΆαž‡αž·αžαžŠαž›αŸ‹αž αžΎαž™αŸ” 10TB/αžαŸ‚ αžŸαžΌαž˜αŸ’αž”αžΈβ€‹αžαŸ‚β€‹αž€αžΆαžšβ€‹αž”αž„αŸ’αž€αžΎαž“β€‹αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–β€‹αžαž·αž…αžαž½αž…β€‹αž’αžΆαž…β€‹αž•αŸ’αžαž›αŸ‹β€‹αž”αŸ’αžšαžΆαž€αŸ‹β€‹αž…αŸ†αžŽαŸαž‰β€‹αž”αžΆαž“β€‹αž›αŸ’αž’αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž αžΎαž™ αž™αžΎαž„αž”αžΆαž“αž™αž€αž…αž·αžαŸ’αžαž‘αž»αž€αžŠαžΆαž€αŸ‹αž›αžΎαžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžšαžΌαž”αžœαž“αŸ’αžαž“αŸƒαž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αž™αžΎαž„ - αžšαž”αŸ€αž”αž–αž·αžαž”αŸ’αžšαžΆαž€αžŠ αžœαžΆαž› "αž‡αž„αŸ‹" αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž€αŸ†αžŽαžαŸ‹αžαŸ’αžšαžΆ αžαžΆαžšαžΆαž„αž“αžΈαž˜αž½αž™αŸ—αŸ”

αžŠαŸ„αž™αžŸαžΆαžšαžαŸ‚ αž€αžΆαžšαžαž˜αŸ’αžšαžΉαž˜αž‘αž·αž“αŸ’αž“αž“αŸαž™ αž“αŸαŸ‡αž‚αžΊαžαŸ’αžšαž„αŸ‹αž‘αŸ…αž˜αž»αž αž”αŸ‰αŸ‡αž–αžΆαž›αŸ‹αžŠαž›αŸ‹αž”αžšαž·αž˜αžΆαžŽαž›αž‘αŸ’αž’αž•αž›:

αžŸαŸ’αžαžΆαž”αžαŸ’αž™αž€αž˜αŸ’αž˜αž‡αžΆαž…αŸ’αžšαžΎαž“αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαž€αžΆαžšαžαž˜αŸ’αžšαžΉαž˜αž‘αž·αž“αŸ’αž“αž“αŸαž™αž“αŸ…αž›αžΎαž–αŸ’αžšαŸ†αžŠαŸ‚αž“αž–αžΆαž€αŸ’αž™αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’ 32 αž”αŸŠαžΈαž x86 αž…αŸ†αž“αž½αž“αž‚αžαŸ‹ (αž”αŸ’αžšαž—αŸαž‘αž…αŸ†αž“αž½αž“αž‚αžαŸ‹ 4 αž”αŸƒ) αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαž˜αŸ’αžšαžΉαž˜αž“αŸ…αž›αžΎαž–αŸ’αžšαŸ†αžŠαŸ‚αž“αž–αžΆαž€αŸ’αž™ 4 αž”αŸƒ αžŠαžΌαž…αž“αžΉαž„αž›αŸαžαž…αŸ†αž“αž»αž…αž’αžŽαŸ’αžαŸ‚αžαž‘αžΉαž€αžŠαŸ‚αž›αž˜αžΆαž“αž—αžΆαž–αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž‘αŸ’αžœαŸαžŠαž„ (αž…αŸ†αžŽαž»αž…αž’αžŽαŸ’αžαŸ‚αžαž—αžΆαž–αž‡αžΆαž€αŸ‹αž›αžΆαž€αŸ‹αž–αžΈαžšαžŠαž„ 8 αž”αŸƒ)αŸ” αž αžΎαž™αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’ 64 αž”αŸŠαžΈαž αžαž˜αŸ’αž›αŸƒαž‘αŸ’αžœαŸαžŠαž„αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžαž˜αŸ’αžšαžΉαž˜αž‘αŸ…αž–αŸ’αžšαŸ†αžŠαŸ‚αž“αž–αžΆαž€αŸ’αž™ 8 αž”αŸƒαŸ” αž“αŸαŸ‡αž‡αžΆαž αŸαžαž»αž•αž›αž˜αž½αž™αž‘αŸ€αžαž“αŸƒαž—αžΆαž–αž˜αž·αž“αžŸαŸŠαžΈαž‚αŸ’αž“αžΆ

αžŠαŸ„αž™αžŸαžΆαžšαž€αžΆαžšαžαž˜αŸ’αžšαžΉαž˜ αž‘αŸ†αž αŸ†αž“αŸƒαž‡αž½αžšαžαžΆαžšαžΆαž„αž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαž›αŸ†αžŠαžΆαž”αŸ‹αž“αŸƒαžœαžΆαž›αŸ” αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž₯αž‘αŸ’αž’αž·αž–αž›αž“αŸαŸ‡αž˜αž·αž“αž‚αž½αžšαž’αŸ„αž™αž€αžαŸ‹αžŸαŸ†αž‚αžΆαž›αŸ‹αžαŸ’αž›αžΆαŸ†αž„αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžαŸ’αž›αŸ‡αžœαžΆαž’αžΆαž…αž“αžΆαŸ†αž’αŸ„αž™αž˜αžΆαž“αž€αžΆαžšαž€αžΎαž“αž‘αžΎαž„αž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž“αŸƒαž‘αŸ†αž αŸ†αŸ” αž§αž‘αžΆαž αžšαžŽαŸ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αž›αžΆαž™ 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 Π±Π°ΠΉΡ‚

αžαžΎαž–αžΈαžšαž”αŸƒαž”αž“αŸ’αžαŸ‚αž˜αž”αžΆαž“αž˜αž€αž–αžΈαžŽαžΆαž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžŠαŸ†αž”αžΌαž„? αžœαžΆαžŸαžΆαž˜αž‰αŸ’αž‰ - αž’αž€αŸ’αžŸαžšαžαžΌαž… 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

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹