PostgreSQL āĻ āĻŦāĻĄāĻŧ āĻ­āĻ˛āĻŋāĻ‰āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧāĻ¸āĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§āĻ¨

āĻĻā§āĻŦāĻžāĻ°āĻž āĻ‰āĻ¤ā§āĻĨāĻžāĻĒāĻŋāĻ¤ āĻŦāĻĄāĻŧ āĻĄā§‡āĻŸāĻž āĻ¸ā§āĻŸā§āĻ°ā§€āĻŽ āĻ°ā§‡āĻ•āĻ°ā§āĻĄāĻŋāĻ‚ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻ…āĻŦā§āĻ¯āĻžāĻšāĻ¤ āĻŦāĻŋāĻ­āĻžāĻœāĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻĒā§‚āĻ°ā§āĻŦāĻŦāĻ°ā§āĻ¤ā§€ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§, āĻāĻ‡ āĻ†āĻŽāĻ°āĻž āĻ‰āĻĒāĻžāĻ¯āĻŧ āĻĻā§‡āĻ–āĻŦ āĻ¯āĻž āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ āĻ¸āĻžā§āĻšāĻŋāĻ¤ āĻāĻ° "āĻļāĻžāĻ°ā§€āĻ°āĻŋāĻ•" āĻ†āĻ•āĻžāĻ° āĻšā§āĻ°āĻžāĻ¸ āĻ•āĻ°ā§āĻ¨ PostgreSQL-āĻ, āĻāĻŦāĻ‚ āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻžāĻ° āĻ‰āĻĒāĻ° āĻ¤āĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻ­āĻžāĻŦāĨ¤

āĻ†āĻŽāĻ°āĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻĨāĻž āĻšāĻŦā§‡ TOAST āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻāĻŦāĻ‚ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻžāĻ¨ā§āĻ¤āĻŋāĻ•āĻ•āĻ°āĻŖ. "āĻ—āĻĄāĻŧā§‡," āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻ—ā§āĻ˛āĻŋ āĻ–ā§āĻŦ āĻŦā§‡āĻļāĻŋ āĻ¸āĻ‚āĻ¸ā§āĻĨāĻžāĻ¨ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŦā§‡ āĻ¨āĻž, āĻ¤āĻŦā§‡ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻŽā§‹āĻŸā§‡āĻ“ āĻ¸āĻ‚āĻļā§‹āĻ§āĻ¨ āĻ¨āĻž āĻ•āĻ°ā§‡āĨ¤

PostgreSQL āĻ āĻŦāĻĄāĻŧ āĻ­āĻ˛āĻŋāĻ‰āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧāĻ¸āĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§āĻ¨
āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ…āĻ­āĻŋāĻœā§āĻžāĻ¤āĻž āĻāĻ‡ āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡ āĻ–ā§āĻŦ āĻĢāĻ˛āĻĒā§āĻ°āĻ¸ā§‚ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ•ā§‹āĻ¨āĻ“ āĻĒāĻ°ā§āĻ¯āĻŦā§‡āĻ•ā§āĻˇāĻŖā§‡āĻ° āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻāĻ° āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻŋ āĻĻā§āĻŦāĻžāĻ°āĻž āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ—āĻ‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¯ā§‹āĻ— āĻ•āĻ°ā§āĻ¨ āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻ•āĻ°āĻž āĻ¤āĻĨā§āĻ¯ āĻĒāĻ°āĻŋāĻĒā§āĻ°ā§‡āĻ•ā§āĻˇāĻŋāĻ¤ā§‡. āĻāĻŦāĻ‚ āĻ¯āĻĻāĻŋ āĻ†āĻĒāĻ¨āĻŋ āĻ­āĻžāĻŦāĻ›ā§‡āĻ¨ āĻ¯ā§‡ āĻ†āĻĒāĻ¨āĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸āĻ•ā§‡ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻĄāĻŋāĻ¸ā§āĻ•ā§‡ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻļā§‡āĻ–āĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ 200MB / āĻ¸ā§‡āĻ•ā§‡āĻ¨ā§āĻĄ āĻ…āĻ°ā§āĻ§ā§‡āĻ• āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ…āĻ¨ā§‡āĻ• - āĻŦāĻŋāĻĄāĻŧāĻžāĻ˛ āĻ…āĻ§ā§€āĻ¨ā§‡ āĻĻāĻ¯āĻŧāĻž āĻ•āĻ°ā§‡.

āĻŦāĻĄāĻŧ āĻ¤āĻĨā§āĻ¯ā§‡āĻ° āĻ›ā§‹āĻŸ āĻ—ā§‹āĻĒāĻ¨ā§€āĻ¯āĻŧāĻ¤āĻž

āĻ•āĻžāĻœā§‡āĻ° āĻĒā§āĻ°ā§‹āĻĢāĻžāĻ‡āĻ˛ āĻĻā§āĻŦāĻžāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸ā§‡āĻŦāĻž, āĻ¤āĻžāĻ°āĻž āĻ¨āĻŋāĻ¯āĻŧāĻŽāĻŋāĻ¤ lairs āĻĨā§‡āĻ•ā§‡ āĻ¤āĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻ‰āĻĄāĻŧā§‡ āĻĒāĻžāĻ ā§āĻ¯ āĻĒā§āĻ¯āĻžāĻ•ā§‡āĻœ.

āĻāĻŦāĻ‚ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ­āĻŋāĻāĻ˛āĻāĻ¸āĻ†āĻ‡ āĻ•āĻŽāĻĒā§āĻ˛ā§‡āĻ•ā§āĻ¸āĻ¯āĻžāĻ° āĻĄāĻžāĻŸāĻžāĻŦā§‡āĻ¸ āĻ†āĻŽāĻ°āĻž āĻ¨āĻŋāĻ°ā§€āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻŋ āĻœāĻŸāĻŋāĻ˛ āĻĄāĻžāĻŸāĻž āĻ¸ā§āĻŸā§āĻ°āĻžāĻ•āĻšāĻžāĻ° āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻŽāĻžāĻ˛ā§āĻŸāĻŋ-āĻ•āĻŽā§āĻĒā§‹āĻ¨ā§‡āĻ¨ā§āĻŸ āĻĒā§āĻ°ā§‹āĻĄāĻžāĻ•ā§āĻŸ, āĻ¤āĻžāĻ°āĻĒāĻ° āĻ•ā§āĻ¯ā§‹āĻ¯āĻŧāĻžāĻ°ā§€ āĻ¸āĻ°ā§āĻŦā§‹āĻšā§āĻš āĻ•āĻ°ā§āĻŽāĻ•ā§āĻˇāĻŽāĻ¤āĻž āĻœāĻ¨ā§āĻ¯ āĻŦā§‡āĻļ āĻāĻ‡ āĻŽāĻ¤ āĻšāĻžāĻ˛ā§ āĻœāĻŸāĻŋāĻ˛ āĻ…ā§āĻ¯āĻžāĻ˛āĻ—āĻ°āĻŋāĻĻāĻŽāĻŋāĻ• āĻ¯ā§āĻ•ā§āĻ¤āĻŋ āĻ¸āĻš "āĻŽāĻžāĻ˛ā§āĻŸāĻŋ-āĻ­āĻ˛āĻŋāĻ‰āĻŽ". āĻ¸ā§āĻ¤āĻ°āĻžāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻ¸ā§āĻŦāĻ¤āĻ¨ā§āĻ¤ā§āĻ° āĻĻā§ƒāĻˇā§āĻŸāĻžāĻ¨ā§āĻ¤ā§‡āĻ° āĻ­āĻ˛āĻŋāĻ‰āĻŽ āĻŦāĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻ†āĻ¸āĻž āĻ˛āĻ—āĻŸāĻŋāĻ¤ā§‡ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ āĻ•āĻžāĻ°ā§āĻ¯āĻ•āĻ°ā§€ āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻžāĻŸāĻŋ "āĻ—āĻĄāĻŧā§‡" āĻŦā§‡āĻļ āĻŦāĻĄāĻŧ āĻŦāĻ˛ā§‡ āĻĒā§āĻ°āĻŽāĻžāĻŖāĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤

āĻ†āĻ¸ā§āĻ¨ āĻ†āĻŽāĻ°āĻž "āĻ•āĻžāĻāĻšāĻž" āĻĄā§‡āĻŸāĻž āĻ˛āĻŋāĻ–āĻŋ āĻāĻŽāĻ¨ āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ•āĻžāĻ āĻžāĻŽā§‹āĻŸāĻŋ āĻĻā§‡āĻ–āĻŋ - āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻ˛āĻ— āĻāĻ¨ā§āĻŸā§āĻ°āĻŋ āĻĨā§‡āĻ•ā§‡ āĻŽā§‚āĻ˛ āĻĒāĻžāĻ ā§āĻ¯āĻŸāĻŋ āĻāĻ–āĻžāĻ¨ā§‡ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡:

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), āĻāĻŦāĻ‚ āĻŸāĻŋāĻĒāĻ˛āĻ•ā§‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻĒā§ƒāĻˇā§āĻ āĻž āĻ¸ā§āĻĒā§āĻ¯āĻžāĻ¨ āĻ•āĻ°āĻžāĻ° āĻ…āĻ¨ā§āĻŽāĻ¤āĻŋ āĻĻā§‡āĻ¯āĻŧ āĻ¨āĻžāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ–ā§āĻŦ āĻŦāĻĄāĻŧ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻŽāĻžāĻ¨ āĻ¸āĻ°āĻžāĻ¸āĻ°āĻŋ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻ…āĻ¸āĻŽā§āĻ­āĻŦāĨ¤ āĻāĻ‡ āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§āĻ¤āĻž āĻ•āĻžāĻŸāĻŋāĻ¯āĻŧā§‡ āĻ‰āĻ āĻ¤ā§‡, āĻŦā§ƒāĻšā§Ž āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻ‚āĻ•ā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚/āĻ…āĻĨāĻŦāĻž āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻ­ā§ŒāĻ¤ āĻ°ā§‡āĻ–āĻž āĻœā§āĻĄāĻŧā§‡ āĻŦāĻŋāĻ­āĻ•ā§āĻ¤ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧāĨ¤ āĻāĻŸāĻŋ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻ…āĻ˛āĻ•ā§āĻˇā§āĻ¯ā§‡ āĻ˜āĻŸā§‡ āĻāĻŦāĻ‚ āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻ¸āĻžāĻ°ā§āĻ­āĻžāĻ° āĻ•ā§‹āĻĄā§‡āĻ° āĻ‰āĻĒāĻ° āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ­āĻžāĻŦ āĻĢā§‡āĻ˛ā§‡āĨ¤ āĻāĻ‡ āĻĒāĻĻā§āĻ§āĻ¤āĻŋāĻŸāĻŋ TOAST āĻ¨āĻžāĻŽā§‡ āĻĒāĻ°āĻŋāĻšāĻŋāĻ¤...

āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻĒāĻ•ā§āĻˇā§‡, "āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯āĻ­āĻžāĻŦā§‡ āĻŦāĻĄāĻŧ" āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻ¸āĻš āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻ¸ā§āĻŦāĻ¯āĻŧāĻ‚āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻ­āĻžāĻŦā§‡ "āĻ¸ā§āĻ˛āĻžāĻ‡āĻ¸āĻŋāĻ‚" āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻœā§‹āĻĄāĻŧāĻž āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ 2KB āĻŦāĻŋāĻ­āĻžāĻ—ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ "āĻŦāĻĄāĻŧ" āĻ°ā§‡āĻ•āĻ°ā§āĻĄ:

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

āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ "āĻŦāĻĄāĻŧ" āĻŽāĻžāĻ¨ āĻ¸āĻš āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻ¯āĻŧ data, āĻ¤āĻžāĻ°āĻĒāĻ° āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻ°ā§‡āĻ•āĻ°ā§āĻĄāĻŋāĻ‚ āĻ˜āĻŸāĻŦā§‡ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻāĻŦāĻ‚ āĻāĻ° āĻĒāĻŋāĻ•ā§‡ āĻ¨āĻ¯āĻŧ, āĻŸā§‹āĻ¸ā§āĻŸ āĻāĻŦāĻ‚ āĻāĻ° āĻĒāĻŋāĻ•ā§‡āĻ“.

TOAST āĻĒā§āĻ°āĻ­āĻžāĻŦ āĻšā§āĻ°āĻžāĻ¸

āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻ°ā§‡āĻ•āĻ°ā§āĻĄ āĻāĻ–āĻ¨āĻ“ āĻāĻ¤ āĻŦāĻĄāĻŧ āĻ¨āĻ¯āĻŧ, 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_TUPLE_TARGET āĻŦāĻžāĻ‡āĻŸā§‡āĻ° (āĻ­ā§‡āĻ°āĻŋāĻ¯āĻŧā§‡āĻŦāĻ˛ āĻŽāĻžāĻ¨, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ 2 KB) āĻĨā§‡āĻ•ā§‡ āĻ•āĻŽ āĻ¨āĻž āĻšāĻ“āĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ TOAST āĻ•ā§‹āĻĄāĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻŦāĻžāĻ‡āĻ°ā§‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻ¸āĻ‚āĻ•ā§āĻšāĻŋāĻ¤ āĻ•āĻ°āĻŦā§‡ āĻāĻŦāĻ‚/āĻ…āĻĨāĻŦāĻž āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻŦā§‡ āĻŦāĻž āĻ†āĻ•āĻžāĻ° āĻ•āĻŽāĻžāĻ¨ā§‹ āĻ¯āĻžāĻŦā§‡ āĻ¨āĻžā§ˇ

āĻ†āĻŽāĻ°āĻž āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ āĻ¯ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ•āĻžāĻ›ā§‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ¯ā§‡ āĻĄā§‡āĻŸāĻž āĻĨāĻžāĻ•ā§‡ āĻ¤āĻž āĻšāĻ¯āĻŧ "āĻ–ā§āĻŦ āĻ›ā§‹āĻŸ" āĻŦāĻž "āĻ–ā§āĻŦ āĻĻā§€āĻ°ā§āĻ˜", āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻ°āĻž āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻ¸āĻŽā§āĻ­āĻžāĻŦā§āĻ¯ āĻŽāĻžāĻ¨ā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¨āĻŋāĻœā§‡āĻĻā§‡āĻ° āĻ¸ā§€āĻŽāĻžāĻŦāĻĻā§āĻ§ āĻ°āĻžāĻ–āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ:

ALTER TABLE rawplan_orig SET (toast_tuple_target = 128);

āĻ†āĻ¸ā§āĻ¨ āĻĻā§‡āĻ–āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§‡āĻŸāĻŋāĻ‚āĻ¸ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ•āĻ¨āĻĢāĻŋāĻ—āĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻĒāĻ°ā§‡ āĻĄāĻŋāĻ¸ā§āĻ• āĻ˛ā§‹āĻĄāĻŋāĻ‚āĻ•ā§‡ āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻ•āĻ°ā§‡:

PostgreSQL āĻ āĻŦāĻĄāĻŧ āĻ­āĻ˛āĻŋāĻ‰āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧāĻ¸āĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§āĻ¨
āĻ–āĻžāĻ°āĻžāĻĒ āĻ¨āĻž! āĻ—āĻĄāĻŧ āĻĄāĻŋāĻ¸ā§āĻ•ā§‡āĻ° āĻ¸āĻžāĻ°āĻŋ āĻ•āĻŽā§‡ āĻ—ā§‡āĻ›ā§‡ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 1.5 āĻŦāĻžāĻ°, āĻāĻŦāĻ‚ āĻĄāĻŋāĻ¸ā§āĻ• "āĻŦā§āĻ¯āĻ¸ā§āĻ¤" 20 āĻļāĻ¤āĻžāĻ‚āĻļ! āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻāĻ‡ āĻāĻ•āĻ°āĻ•āĻŽ CPU āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤?

PostgreSQL āĻ āĻŦāĻĄāĻŧ āĻ­āĻ˛āĻŋāĻ‰āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧāĻ¸āĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§āĻ¨
āĻ…āĻ¨ā§āĻ¤āĻ¤ āĻāĻŸāĻž āĻ•ā§‹āĻ¨ āĻ–āĻžāĻ°āĻžāĻĒ āĻĒā§‡āĻ¤ā§‡ āĻ¨āĻž. āĻ¯āĻĻāĻŋāĻ“, āĻāĻŽāĻ¨āĻ•āĻŋ āĻāĻ‡ āĻ§āĻ°āĻ¨ā§‡āĻ° āĻ­āĻ˛āĻŋāĻ‰āĻŽ āĻāĻ–āĻ¨āĻ“ āĻ—āĻĄāĻŧ CPU āĻ˛ā§‹āĻĄ āĻŦāĻžāĻĄāĻŧāĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡ āĻ¨āĻž āĻ•āĻŋāĻ¨āĻž āĻ¤āĻž āĻŦāĻŋāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻ•āĻ āĻŋāĻ¨ 5%.

āĻĒāĻĻā§‡āĻ° āĻ¸ā§āĻĨāĻžāĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°ā§‡ āĻ¯ā§‹āĻ—āĻĢāĻ˛... āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻŋāĻ¤ āĻšāĻ¯āĻŧ!

āĻ†āĻĒāĻ¨āĻŋ āĻœāĻžāĻ¨ā§‡āĻ¨ āĻ¯ā§‡, āĻāĻ•āĻŸāĻŋ āĻĒā§‡āĻ¨āĻŋ āĻāĻ•āĻŸāĻŋ āĻ°ā§āĻŦā§‡āĻ˛ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§‡ āĻāĻŦāĻ‚ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸ā§āĻŸā§‹āĻ°ā§‡āĻœ āĻ­āĻ˛āĻŋāĻ‰āĻŽāĻ—ā§āĻ˛āĻŋāĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻŸāĻŋ āĻĒā§āĻ°āĻžāĻ¯āĻŧ 10TB/āĻŽāĻžāĻ¸ āĻāĻŽāĻ¨āĻ•āĻŋ āĻ¸āĻžāĻŽāĻžāĻ¨ā§āĻ¯ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻ˛āĻžāĻ­ āĻĻāĻŋāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡. āĻ…āĻ¤āĻāĻŦ, āĻ†āĻŽāĻ°āĻž āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĄā§‡āĻŸāĻžāĻ° āĻļāĻžāĻ°ā§€āĻ°āĻŋāĻ• āĻ—āĻ āĻ¨ā§‡āĻ° āĻĻāĻŋāĻ•ā§‡ āĻŽāĻ¨ā§‹āĻ¯ā§‹āĻ— āĻĻāĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ - āĻ āĻŋāĻ• āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ°ā§‡āĻ•āĻ°ā§āĻĄā§‡āĻ° āĻ­āĻŋāĻ¤āĻ°ā§‡ "āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ• āĻ•āĻ°āĻž" āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ° āĻŸā§‡āĻŦāĻŋāĻ˛ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ.

āĻ•āĻžāĻ°āĻŖ āĻāĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻĄā§‡āĻŸāĻž āĻĒā§āĻ°āĻžāĻ¨ā§āĻ¤āĻŋāĻ•āĻ•āĻ°āĻŖ āĻāĻ‡ āĻ¸ā§‹āĻœāĻž āĻāĻ—āĻŋāĻ¯āĻŧā§‡ āĻĢāĻ˛ā§‡ āĻ­āĻ˛āĻŋāĻ‰āĻŽ āĻĒā§āĻ°āĻ­āĻžāĻŦāĻŋāĻ¤ āĻ•āĻ°ā§‡:

āĻ…āĻ¨ā§‡āĻ• āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ° āĻŽā§‡āĻļāĻŋāĻ¨ āĻļāĻŦā§āĻĻā§‡āĻ° āĻ¸ā§€āĻŽāĻžāĻ¨āĻžāĻ¯āĻŧ āĻĄā§‡āĻŸāĻž āĻ¸āĻžāĻ°āĻŋāĻŦāĻĻā§āĻ§āĻ•āĻ°āĻŖ āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻ•āĻ°ā§‡āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ 32-āĻŦāĻŋāĻŸ x86 āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡, āĻĒā§‚āĻ°ā§āĻŖāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ—ā§āĻ˛āĻŋ (āĻĒā§‚āĻ°ā§āĻŖāĻ¸āĻ‚āĻ–ā§āĻ¯āĻžāĻ° āĻ§āĻ°āĻ¨, 4 āĻŦāĻžāĻ‡āĻŸ) āĻāĻ•āĻŸāĻŋ 4-āĻŦāĻžāĻ‡āĻŸ āĻļāĻŦā§āĻĻā§‡āĻ° āĻ¸ā§€āĻŽāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¸āĻžāĻ°āĻŋāĻŦāĻĻā§āĻ§ āĻ•āĻ°āĻž āĻšāĻŦā§‡, āĻ¯ā§‡āĻŽāĻ¨ āĻĻā§āĻŦāĻŋāĻ—ā§āĻŖ āĻ¨āĻŋāĻ°ā§āĻ­ā§āĻ˛āĻ¤āĻž āĻĢā§āĻ˛ā§‹āĻŸāĻŋāĻ‚ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž (āĻĄāĻŦāĻ˛ āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ¤āĻž āĻĢā§āĻ˛ā§‹āĻŸāĻŋāĻ‚ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ, 8 āĻŦāĻžāĻ‡āĻŸ) āĻšāĻŦā§‡āĨ¤ āĻāĻŦāĻ‚ āĻāĻ•āĻŸāĻŋ 64-āĻŦāĻŋāĻŸ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡, āĻĻā§āĻŦā§ˆāĻ¤ āĻŽāĻžāĻ¨āĻ—ā§āĻ˛āĻŋ 8-āĻŦāĻžāĻ‡āĻŸ āĻļāĻŦā§āĻĻā§‡āĻ° āĻ¸ā§€āĻŽāĻžāĻ¨āĻžāĻ¯āĻŧ āĻ¸āĻžāĻ°āĻŋāĻŦāĻĻā§āĻ§ āĻšāĻŦā§‡āĨ¤ āĻāĻŸāĻŋ āĻ…āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻ¤āĻžāĻ° āĻ†āĻ°ā§‡āĻ•āĻŸāĻŋ āĻ•āĻžāĻ°āĻŖāĨ¤

āĻĒā§āĻ°āĻžāĻ¨ā§āĻ¤āĻŋāĻ•āĻ•āĻ°āĻŖā§‡āĻ° āĻ•āĻžāĻ°āĻŖā§‡, āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ āĻ¸āĻžāĻ°āĻŋāĻ° āĻ†āĻ•āĻžāĻ° āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ° āĻ•ā§āĻ°āĻŽ āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡āĨ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻ‡ āĻĒā§āĻ°āĻ­āĻžāĻŦ āĻ–ā§āĻŦ āĻ˛āĻ•ā§āĻˇāĻŖā§€āĻ¯āĻŧ āĻ¨āĻ¯āĻŧ, āĻ¤āĻŦā§‡ āĻ•āĻŋāĻ›ā§ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻāĻŸāĻŋ āĻ†āĻ•āĻžāĻ°ā§‡ āĻāĻ•āĻŸāĻŋ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ–āĻ¯ā§‹āĻ—ā§āĻ¯ āĻŦā§ƒāĻĻā§āĻ§āĻŋ āĻšāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĨ¤ āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ char(1) āĻāĻŦāĻ‚ āĻĒā§‚āĻ°ā§āĻŖāĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ•ā§‡ āĻŽāĻŋāĻļā§āĻ°āĻŋāĻ¤ āĻ•āĻ°ā§‡āĻ¨ āĻ¤āĻŦā§‡ āĻ¤āĻžāĻĻā§‡āĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ 3 āĻŦāĻžāĻ‡āĻŸ āĻ¨āĻˇā§āĻŸ āĻšāĻŦā§‡āĨ¤

āĻ†āĻ¸ā§āĻ¨ āĻ¸āĻŋāĻ¨ā§āĻĨā§‡āĻŸāĻŋāĻ• āĻŽāĻĄā§‡āĻ˛ āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻž āĻ¯āĻžāĻ•:

SELECT pg_column_size(ROW(
  '0000-0000-0000-0000-0000-0000-0000-0000'::uuid
, 0::smallint
, '2019-01-01'::date
));
-- 48 йаКŅ‚

SELECT pg_column_size(ROW(
  '2019-01-01'::date
, '0000-0000-0000-0000-0000-0000-0000-0000'::uuid
, 0::smallint
));
-- 46 йаКŅ‚

āĻĒā§āĻ°āĻĨāĻŽ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡ āĻ•āĻ¯āĻŧā§‡āĻ•āĻŸāĻŋ āĻ…āĻ¤āĻŋāĻ°āĻŋāĻ•ā§āĻ¤ āĻŦāĻžāĻ‡āĻŸ āĻ•ā§‹āĻĨāĻž āĻĨā§‡āĻ•ā§‡ āĻāĻ¸ā§‡āĻ›ā§‡? āĻ‡āĻšāĻž āĻ¸āĻšāĻœ - 2-āĻŦāĻžāĻ‡āĻŸā§‡āĻ° āĻ¸ā§€āĻŽāĻžāĻ¨āĻžāĻ¯āĻŧ 4-āĻŦāĻžāĻ‡āĻŸ āĻ¸ā§āĻŽāĻ˛āĻŋāĻ¯āĻŧāĻ¨ā§āĻŸ āĻ¸āĻžāĻ°āĻŋāĻŦāĻĻā§āĻ§ āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§€ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻ†āĻ—ā§‡, āĻāĻŦāĻ‚ āĻ¯āĻ–āĻ¨ āĻāĻŸāĻŋ āĻļā§‡āĻˇ āĻšāĻ¯āĻŧ, āĻ¤āĻ–āĻ¨ āĻ•āĻŋāĻ›ā§āĻ‡ āĻ¨ā§‡āĻ‡ āĻāĻŦāĻ‚ āĻ¸āĻžāĻ°āĻŋāĻŦāĻĻā§āĻ§ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¨ā§‡āĻ‡āĨ¤

āĻ¤āĻžāĻ¤ā§āĻ¤ā§āĻŦāĻŋāĻ•āĻ­āĻžāĻŦā§‡, āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ āĻŋāĻ• āĻ†āĻ›ā§‡ āĻāĻŦāĻ‚ āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻĒāĻ¨āĻžāĻ° āĻĒāĻ›āĻ¨ā§āĻĻ āĻŽāĻ¤ā§‹ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻžāĻœāĻžāĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨āĨ¤ āĻ†āĻ¸ā§āĻ¨ āĻāĻ•āĻŸāĻŋ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻ‰āĻĻāĻžāĻšāĻ°āĻŖ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§‡ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦ āĻĄā§‡āĻŸāĻžāĻ¤ā§‡ āĻāĻŸāĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°āĻŋ, āĻ¯āĻžāĻ° āĻĻā§ˆāĻ¨āĻŋāĻ• āĻŦāĻŋāĻ­āĻžāĻ— 10-15GB āĻĻāĻ–āĻ˛ āĻ•āĻ°ā§‡āĨ¤

āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ• āĻ—āĻ āĻ¨:

CREATE TABLE public.plan_20190220
(
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  pack uuid NOT NULL,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  recno smallint NOT NULL,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  host uuid,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  ts timestamp with time zone,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  exectime numeric(32,3),
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  duration numeric(32,3),
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  bufint bigint,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  bufmem bigint,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  bufdsk bigint,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  apn uuid,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  ptr uuid,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  dt date,
  CONSTRAINT plan_20190220_pkey PRIMARY KEY (pack, recno),
  CONSTRAINT chck_ptr CHECK (ptr IS NOT NULL),
  CONSTRAINT plan_20190220_dt_check CHECK (dt = '2019-02-20'::date)
)
INHERITS (public.plan)

āĻ•āĻ˛āĻžāĻŽā§‡āĻ° āĻ•ā§āĻ°āĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻžāĻ° āĻĒāĻ° āĻŦāĻŋāĻ­āĻžāĻ— - āĻ āĻŋāĻ• āĻāĻ•āĻ‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°, āĻļā§āĻ§ā§ āĻ­āĻŋāĻ¨ā§āĻ¨ āĻ•ā§āĻ°āĻŽ:

CREATE TABLE public.plan_20190221
(
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  dt date NOT NULL,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  ts timestamp with time zone,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  pack uuid NOT NULL,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  recno smallint NOT NULL,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  host uuid,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  apn uuid,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  ptr uuid,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  bufint bigint,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  bufmem bigint,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  bufdsk bigint,
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  exectime numeric(32,3),
-- ĐŖĐŊĐ°ŅĐģĐĩдОваĐŊĐ° from table plan:  duration numeric(32,3),
  CONSTRAINT plan_20190221_pkey PRIMARY KEY (pack, recno),
  CONSTRAINT chck_ptr CHECK (ptr IS NOT NULL),
  CONSTRAINT plan_20190221_dt_check CHECK (dt = '2019-02-21'::date)
)
INHERITS (public.plan)

āĻŦāĻŋāĻ­āĻžāĻ—ā§‡āĻ° āĻŽā§‹āĻŸ āĻ†āĻ¯āĻŧāĻ¤āĻ¨ "āĻ¤āĻĨā§āĻ¯" āĻāĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻĻā§āĻŦāĻžāĻ°āĻž āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŋāĻ¤ āĻšāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻŦāĻžāĻšā§āĻ¯āĻŋāĻ• āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ—ā§āĻ˛āĻŋāĻ° āĻ‰āĻĒāĻ° āĻ¨āĻŋāĻ°ā§āĻ­āĻ° āĻ•āĻ°ā§‡, āĻ¤āĻžāĻ‡ āĻ†āĻ¸ā§āĻ¨ āĻ¸ā§āĻ¤ā§‚āĻĒā§‡āĻ° āĻ†āĻ•āĻžāĻ° āĻ­āĻžāĻ— āĻ•āĻ°āĻž āĻ¯āĻžāĻ• (pg_relation_size) āĻāĻ¤ā§‡ āĻ°ā§‡āĻ•āĻ°ā§āĻĄā§‡āĻ° āĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻĻā§āĻŦāĻžāĻ°āĻž - āĻ…āĻ°ā§āĻĨāĻžā§Ž āĻ†āĻŽāĻ°āĻž āĻĒāĻžāĻ‡ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤ āĻ¸āĻžā§āĻšāĻŋāĻ¤ āĻ°ā§‡āĻ•āĻ°ā§āĻĄā§‡āĻ° āĻ—āĻĄāĻŧ āĻ†āĻ•āĻžāĻ°:

PostgreSQL āĻ āĻŦāĻĄāĻŧ āĻ­āĻ˛āĻŋāĻ‰āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧāĻ¸āĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§āĻ¨
āĻŽāĻžāĻ‡āĻ¨āĻžāĻ¸ 6% āĻ­āĻ˛āĻŋāĻ‰āĻŽ, āĻĻāĻžāĻ°ā§āĻŖ!

āĻ¤āĻŦā§‡ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§, āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻāĻ¤ āĻ—ā§‹āĻ˛āĻžāĻĒā§€ āĻ¨āĻ¯āĻŧ - āĻ¸āĻ°ā§āĻŦā§‹āĻĒāĻ°āĻŋ, āĻ‡āĻ¨āĻĄā§‡āĻ•ā§āĻ¸ā§‡ āĻ†āĻŽāĻ°āĻž āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻ•ā§āĻ°āĻŽ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻž, āĻāĻŦāĻ‚ āĻ¤āĻžāĻ‡ "āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡" (pg_total_relation_size) ...

PostgreSQL āĻ āĻŦāĻĄāĻŧ āĻ­āĻ˛āĻŋāĻ‰āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧāĻ¸āĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§āĻ¨
...āĻāĻ–āĻ¨āĻ“ āĻāĻ–āĻžāĻ¨ā§‡āĻ“ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŋāĻ¤ 1.5%āĻ•ā§‹āĻĄā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻ˛āĻžāĻ‡āĻ¨ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ¨āĻž āĻ•āĻ°ā§‡āĻ‡āĨ¤ āĻšā§āĻ¯āĻž āĻšā§āĻ¯āĻž!

PostgreSQL āĻ āĻŦāĻĄāĻŧ āĻ­āĻ˛āĻŋāĻ‰āĻŽā§‡ āĻāĻ•āĻŸāĻŋ āĻĒāĻ¯āĻŧāĻ¸āĻž āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°ā§āĻ¨

āĻ†āĻŽāĻŋ āĻ˛āĻ•ā§āĻˇā§āĻ¯ āĻ•āĻ°āĻŋ āĻ¯ā§‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋ āĻ¸āĻžāĻœāĻžāĻ¨ā§‹āĻ° āĻœāĻ¨ā§āĻ¯ āĻ‰āĻĒāĻ°ā§‡āĻ° āĻŦāĻŋāĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻ¸āĻ¤ā§āĻ¯ āĻ¨āĻ¯āĻŧ āĻ¯ā§‡ āĻāĻŸāĻŋ āĻ¸āĻŦāĻšā§‡āĻ¯āĻŧā§‡ āĻ…āĻ¨ā§āĻ•ā§‚āĻ˛āĨ¤ āĻ•āĻžāĻ°āĻŖ āĻ†āĻĒāĻ¨āĻŋ āĻ¨āĻžāĻ¨ā§āĻĻāĻ¨āĻŋāĻ• āĻ•āĻžāĻ°āĻŖā§‡ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡āĻ° āĻ•āĻŋāĻ›ā§ āĻŦā§āĻ˛āĻ• "āĻ›āĻŋāĻāĻĄāĻŧāĻ¤ā§‡" āĻšāĻžāĻ¨ āĻ¨āĻž - āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻāĻ•āĻŸāĻŋ āĻĻāĻŽā§āĻĒāĻ¤āĻŋ (pack, recno), āĻ¯āĻž āĻāĻ‡ āĻŸā§‡āĻŦāĻŋāĻ˛ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ PKāĨ¤

āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°āĻ—ā§āĻ˛āĻŋāĻ° "āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ" āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ āĻ¨āĻŋāĻ°ā§āĻ§āĻžāĻ°āĻŖ āĻ•āĻ°āĻž āĻāĻ•āĻŸāĻŋ āĻŽā§‹āĻŸāĻžāĻŽā§āĻŸāĻŋ āĻ¸āĻšāĻœ "āĻŦā§āĻ°ā§āĻŸ āĻĢā§‹āĻ°ā§āĻ¸" āĻ•āĻžāĻœāĨ¤ āĻ…āĻ¤āĻāĻŦ, āĻ†āĻĒāĻ¨āĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĄā§‡āĻŸāĻž āĻĨā§‡āĻ•ā§‡ āĻ†āĻ°āĻ“ āĻ­āĻžāĻ˛ āĻĢāĻ˛āĻžāĻĢāĻ˛ āĻĒā§‡āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡āĻ¨ - āĻāĻŸāĻŋ āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§āĻ¨!

āĻ‰āĻ¤ā§āĻ¸: www.habr.com

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨