เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹

เช•เซ‹เชทเซเชŸเช•เซ‹ เช…เชจเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“ เชชเชฐ เชฌเซเชฒเซ‹เชŸเชจเซ€ เช…เชธเชฐ เชตเซเชฏเชพเชชเช•เชชเชฃเซ‡ เชœเชพเชฃเซ€เชคเซ€ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡ เชฎเชพเชคเซเชฐ เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธเชฎเชพเช‚ เชœ เชจเชฅเซ€. VACUUM FULL เช…เชฅเชตเชพ CLUSTER เชœเซ‡เชตเชพ เชฌเซ‹เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเชตเชพเชจเซ€ เชฐเซ€เชคเซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เช“ เช“เชชเชฐเซ‡เชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช•เซ‹เชทเซเชŸเช•เซ‹เชจเซ‡ เชฒเซ‹เช• เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชนเช‚เชฎเซ‡เชถเชพ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชถเช•เชพเชคเซ‹ เชจเชฅเซ€.

เช† เชฒเซ‡เช–เชฎเชพเช‚ เชฌเซเชฒเซ‹เชŸ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฅเชพเชฏ เช›เซ‡, เชคเชฎเซ‡ เชคเซ‡เชจเซ€ เชธเชพเชฎเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฒเชกเซ€ เชถเช•เซ‹ เช›เซ‹, เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹ เช…เชจเซ‡ pg_repack เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชจเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชคเซ‡เช“ เชœเซ‡ เชธเชฎเชธเซเชฏเชพเช“ เชฒเชพเชตเซ‡ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เชฅเซ‹เชกเซ‹ เชธเชฟเชฆเซเชงเชพเช‚เชค เชนเชถเซ‡.

เช† เชฒเซ‡เช– เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เช›เซ‡ เชฎเชพเชฐเซเช‚ เชญเชพเชทเชฃ PgConf.Russia 2020 เชชเชฐ.

เชฌเซเชฒเซ‹เชŸ เชถเชพ เชฎเชพเชŸเซ‡ เชฅเชพเชฏ เช›เซ‡?

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ เชฎเชฒเซเชŸเชฟ-เชตเชฐเซเชเชจ เชฎเซ‹เชกเชฒ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡ (MVCC). เชคเซ‡เชจเซ‹ เชธเชพเชฐ เช เช›เซ‡ เช•เซ‡ เช•เซ‹เชทเซเชŸเช•เชจเซ€ เชฆเชฐเซ‡เช• เชชเช‚เช•เซเชคเชฟเชฎเชพเช‚ เช…เชจเซ‡เช• เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชตเซเชฏเชตเชนเชพเชฐเซ‹ เช†เชฎเชพเช‚เชจเชพ เชเช• เช•เชฐเชคเชพเช‚ เชตเชงเซ เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เชœเซ‹เชคเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€ เช•เซ‡ เชคเซ‡ เชธเชฎเชพเชจ เชนเซ‹เชฏ. เช† เชเช•เชธเชพเชฅเซ‡ เช…เชจเซ‡เช• เชตเซเชฏเชตเชนเชพเชฐเซ‹เชจเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เช…เชจเซ‡ เชเช•เชฌเซ€เชœเชพ เชชเชฐ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชฐเซ€เชคเซ‡ เช•เซ‹เชˆ เช…เชธเชฐ เช•เชฐเชคเซเช‚ เชจเชฅเซ€.

เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡, เช† เชฌเชงเซ€ เช†เชตเซƒเชคเซเชคเชฟเช“ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ เชฎเซ‡เชฎเชฐเซ€ เชชเซƒเชทเซเช  เชธเชพเชฅเซ‡ เชชเซƒเชทเซเช  เชฆเซเชตเชพเชฐเชพ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชชเซƒเชทเซเช  เช เชจเซเชฏเซ‚เชจเชคเชฎ เชกเซ‡เชŸเชพเชจเซ‹ เชœเชฅเซเชฅเซ‹ เช›เซ‡ เชœเซ‡ เชกเชฟเชธเซเช•เชฎเชพเช‚เชฅเซ€ เชตเชพเช‚เชšเซ€ เชถเช•เชพเชฏ เช›เซ‡ เช…เชฅเชตเชพ เชฒเช–เซ€ เชถเช•เชพเชฏ เช›เซ‡. เช† เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡ เชธเชฎเชœเชตเชพ เชฎเชพเชŸเซ‡ เชšเชพเชฒเซ‹ เชเช• เชจเชพเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ เชœเซ‹เชˆเช.

เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเช• เชŸเซ‡เชฌเชฒ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เช…เชฎเซ‡ เช˜เชฃเชพ เชฐเซ‡เช•เซ‹เชฐเซเชก เช‰เชฎเซ‡เชฐเซเชฏเชพ เช›เซ‡. เชจเชตเซ‹ เชกเซ‡เชŸเชพ เชซเชพเช‡เชฒเชจเชพ เชชเซเชฐเชฅเชฎ เชชเซƒเชทเซเช เชฎเชพเช‚ เชฆเซ‡เช–เชพเชฏเซ‹ เช›เซ‡ เชœเซเชฏเชพเช‚ เช•เซ‹เชทเซเชŸเช• เชธเช‚เช—เซเชฐเชนเชฟเชค เช›เซ‡. เช† เชชเช‚เช•เซเชคเชฟเช“เชจเชพ เชฒเชพเช‡เชต เชธเช‚เชธเซเช•เชฐเชฃเซ‹ เช›เซ‡ เชœเซ‡ เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพ เชชเช›เซ€ เช…เชจเซเชฏ เชตเซเชฏเชตเชนเชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง เช›เซ‡ (เชธเชฐเชณเชคเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชงเชพเชฐเซ€เชถเซเช‚ เช•เซ‡ เช†เช‡เชธเซ‹เชฒเซ‡เชถเชจ เชธเซเชคเชฐ เชตเชพเช‚เชšเชจ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เช›เซ‡).

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹

เช…เชฎเซ‡ เชชเช›เซ€ เชเช• เชเชจเซเชŸเซเชฐเซ€ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€, เชคเซเชฏเชพเช‚เชฅเซ€ เชœเซ‚เชจเชพ เชธเช‚เชธเซเช•เชฐเชฃเชจเซ‡ เชนเชตเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชจเชฅเซ€ เชคเชฐเซ€เช•เซ‡ เชšเชฟเชนเซเชจเชฟเชค เช•เชฐเซเชฏเซเช‚.

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹

เชธเซเชŸเซ‡เชช เชฌเชพเชฏ เชธเซเชŸเซ‡เชช, เชชเช‚เช•เซเชคเชฟเชจเชพ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€เชจเซ‡ เช…เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เซ€เชจเซ‡, เช…เชฎเซ‡ เชเช• เชชเซƒเชทเซเช  เชธเชพเชฅเซ‡ เชธเชฎเชพเชชเซเชค เช•เชฐเซเชฏเซเช‚ เชœเซ‡เชฎเชพเช‚ เชฒเช—เชญเช— เช…เชกเชงเซ‹ เชกเซ‡เชŸเชพ "เช•เชšเชฐเซ‹" เช›เซ‡. เช† เชกเซ‡เชŸเชพ เช•เซ‹เชˆเชชเชฃ เชตเซเชฏเชตเชนเชพเชฐ เชฎเชพเชŸเซ‡ เชฆเซ‡เช–เชพเชคเซ‹ เชจเชฅเซ€.

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ เชชเชพเชธเซ‡ เชเช• เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เช›เซ‡ เชตเชพเชฏเซเชฎเซเชฏเซเชฎ, เชœเซ‡ เช…เชชเซเชฐเชšเชฒเชฟเชค เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ‡ เชธเชพเชซ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชจเชตเชพ เชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡ เชœเช—เซเชฏเชพ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเซ‡ เช†เช•เซเชฐเชฎเช• เชฐเซ€เชคเซ‡ เชชเชฐเซเชฏเชพเชชเซเชค เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเชพเชฏเซ‡เชฒ เชจเชฅเซ€ เช…เชฅเชตเชพ เช…เชจเซเชฏ เช•เซ‹เชทเซเชŸเช•เซ‹เชฎเชพเช‚ เช•เชพเชฎเชฎเชพเช‚ เชตเซเชฏเชธเซเชค เช›เซ‡, เชคเซ‹ เชชเช›เซ€ "เช•เชšเชฐเซ‹ เชกเซ‡เชŸเชพ" เชฐเชนเซ‡ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเชพเชฐเซ‡ เชจเชตเชพ เชกเซ‡เชŸเชพ เชฎเชพเชŸเซ‡ เชตเชงเชพเชฐเชพเชจเชพ เชชเซƒเชทเซเช เซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชชเชกเชถเซ‡.

เชคเซ‡เชฅเซ€ เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚, เช…เชฎเซเช• เชธเชฎเชฏเซ‡ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชšเชพเชฐ เชชเซƒเชทเซเช เซ‹ เชนเชถเซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชฎเชพเชคเซเชฐ เช…เชกเชงเชพ เชœเซ€เชตเช‚เชค เชกเซ‡เชŸเชพ เชนเชถเซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช•เซ‹เชทเซเชŸเช•เชจเซ‡ เชเช•เซเชธเซ‡เชธ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เช…เชฎเซ‡ เชœเชฐเซ‚เชฐเซ€ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชกเซ‡เชŸเชพ เชตเชพเช‚เชšเซ€เชถเซเช‚.

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹

เชœเซ‹ VACUUM เชนเชตเซ‡ เชคเชฎเชพเชฎ เช…เชชเซเชฐเชธเซเชคเซเชค เชชเช‚เช•เซเชคเชฟ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เซ‡ เชคเซ‹ เชชเชฃ, เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เชจเชพเชŸเช•เซ€เชฏ เชฐเซ€เชคเซ‡ เชธเซเชงเชฐเชถเซ‡ เชจเชนเซ€เช‚. เชจเชตเซ€ เชชเช‚เช•เซเชคเชฟเช“ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชชเซƒเชทเซเช เซ‹เชฎเชพเช‚ เช…เชฅเชตเชพ เชคเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เชชเซƒเชทเซเช เซ‹เชฎเชพเช‚ เช–เชพเชฒเซ€ เชœเช—เซเชฏเชพ เชนเชถเซ‡, เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เชนเชœเซ€ เชชเชฃ เชœเชฐเซ‚เชฐเซ€ เช•เชฐเชคเชพเช‚ เชตเชงเซ เชกเซ‡เชŸเชพ เชตเชพเช‚เชšเซ€เชถเซเช‚.
เชฎเชพเชฐเซเช— เชฆเซเชตเชพเชฐเชพ, เชœเซ‹ เชธเช‚เชชเซ‚เชฐเซเชฃ เช–เชพเชฒเซ€ เชชเซƒเชทเซเช  (เช…เชฎเชพเชฐเชพ เช‰เชฆเชพเชนเชฐเชฃเชฎเชพเช‚ เชฌเซ€เชœเซเช‚) เชซเชพเช‡เชฒเชจเชพ เช…เช‚เชคเซ‡ เชนเซ‹เชฏ, เชคเซ‹ VACUUM เชคเซ‡เชจเซ‡ เชŸเซเชฐเชฟเชฎ เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเชถเซ‡. เชชเชฐเช‚เชคเซ เชนเชตเซ‡ เชคเซ‡ เชฎเชงเซเชฏเชฎเชพเช‚ เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เช•เช‚เชˆ เช•เชฐเซ€ เชถเช•เชพเชคเซเช‚ เชจเชฅเซ€.

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹

เชœเซเชฏเชพเชฐเซ‡ เช†เชตเชพ เช–เชพเชฒเซ€ เช…เชฅเชตเชพ เช…เชคเซเชฏเช‚เชค เช›เซ‚เชŸเชพเช›เชตเชพเชฏเชพ เชชเซƒเชทเซเช เซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพ เชฎเซ‹เชŸเซ€ เชฅเชˆ เชœเชพเชฏ เช›เซ‡, เชœเซ‡เชจเซ‡ เชฌเซเชฒเซ‹เชŸ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‡ เชชเซเชฐเชญเชพเชตเชจเซ‡ เช…เชธเชฐ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡.

เช‰เชชเชฐ เชตเชฐเซเชฃเชตเซ‡เชฒ เชฆเชฐเซ‡เช• เชตเชธเซเชคเซ เช•เซ‹เชทเซเชŸเช•เซ‹เชฎเชพเช‚ เชฌเซเชฒเซ‹เชŸเชจเซ€ เช˜เชŸเชจเชพเชจเชพ เชฎเชฟเช•เซ‡เชจเชฟเช•เซเชธ เช›เซ‡. เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“เชฎเชพเช‚ เช† เช˜เชฃเซ€ เชœ เชฐเซ€เชคเซ‡ เชฅเชพเชฏ เช›เซ‡.

เชถเซเช‚ เชฎเชจเซ‡ เชชเซ‡เชŸเชจเซเช‚ เชซเซ‚เชฒเชตเซเช‚ เช›เซ‡?

เชคเชฎเชจเซ‡ เชฌเซเชฒเซ‹เชŸ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชจเชฟเชฐเซเชงเชพเชฐเชฟเชค เช•เชฐเชตเชพเชจเซ€ เช˜เชฃเซ€ เชฐเซ€เชคเซ‹ เช›เซ‡. เชชเซเชฐเชฅเชฎเชจเซ‹ เชตเชฟเชšเชพเชฐ เช†เช‚เชคเชฐเชฟเช• เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ เช†เช‚เช•เชกเชพเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เช•เซ‹เชทเซเชŸเช•เซ‹เชฎเชพเช‚ เชชเช‚เช•เซเชคเชฟเช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ, "เชœเซ€เชตเช‚เชค" เชชเช‚เช•เซเชคเชฟเช“เชจเซ€ เชธเช‚เช–เซเชฏเชพ, เชตเช—เซ‡เชฐเซ‡ เชตเชฟเชถเซ‡เชจเซ€ เช…เช‚เชฆเชพเชœเชฟเชค เชฎเชพเชนเชฟเชคเซ€ เชถเชพเชฎเซ‡เชฒ เช›เซ‡. เชคเชฎเซ‡ เช‡เชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐ เชคเซˆเชฏเชพเชฐ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ€ เช˜เชฃเซ€ เชตเชฟเชตเชฟเชงเชคเชพเช“ เชถเซ‹เชงเซ€ เชถเช•เซ‹ เช›เซ‹. เช…เชฎเซ‡ เชเช• เช†เชงเชพเชฐ เชคเชฐเซ€เช•เซ‡ เชฒเซ€เชงเซ‹ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชเชธเช•เซเชฏเซเชเชฒ เชจเชฟเชทเซเชฃเชพเชคเซ‹ เชชเชพเชธเซ‡เชฅเซ€, เชœเซ‡ เชŸเซ‹เชธเซเชŸ เช…เชจเซ‡ เชฌเซเชฒเซ‹เชŸ เชฌเซ€เชŸเซเชฐเซ€ เช‡เชจเซเชกเซ‡เช•เซเชธเชจเซ€ เชธเชพเชฅเซ‡ เชฌเซเชฒเซ‹เชŸ เชŸเซ‡เชฌเชฒเชจเซเช‚ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡. เช…เชฎเชพเชฐเชพ เช…เชจเซเชญเชตเชฎเชพเช‚, เชคเซ‡เชจเซ€ เชญเซ‚เชฒ 10-20% เช›เซ‡.

เชฌเซ€เชœเซ€ เชฐเซ€เชค เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซ‹ เช›เซ‡ pgstattuple, เชœเซ‡ เชคเชฎเชจเซ‡ เชชเซƒเชทเซเช เซ‹เชจเซ€ เช…เช‚เชฆเชฐ เชœเซ‹เชตเชพเชจเซ€ เช…เชจเซ‡ เช…เช‚เชฆเชพเชœเชฟเชค เช…เชจเซ‡ เชšเซ‹เช•เซเช•เชธ เชฌเซเชฒเซ‹เชŸ เชฎเซ‚เชฒเซเชฏ เชฌเช‚เชจเซ‡ เชฎเซ‡เชณเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชฌเซ€เชœเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชคเชฎเชพเชฐเซ‡ เช†เช–เซเช‚ เชŸเซ‡เชฌเชฒ เชธเซเช•เซ‡เชจ เช•เชฐเชตเซเช‚ เชชเชกเชถเซ‡.

เช…เชฎเซ‡ เชจเชพเชจเชพ เชฌเซเชฒเซ‹เชŸ เชฎเซ‚เชฒเซเชฏเชจเซ‡ 20% เชธเซเชงเซ€ เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เช—เชฃเซ€เช เช›เซ€เช. เชคเซ‡ เชฎเชพเชŸเซ‡ เชซเชฟเชฒเชซเซ‡เช•เซเชŸเชฐเชจเชพ เชเชจเชพเชฒเซ‹เช— เชคเชฐเซ€เช•เซ‡ เช—เชฃเซ€ เชถเช•เชพเชฏ เช•เซ‹เชทเซเชŸเช•เซ‹ ะธ เชธเซ‚เชšเช•เชพเช‚เช•เซ‹. 50% เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชตเชงเซ เชชเชฐ, เชชเซเชฐเชฆเชฐเซเชถเชจ เชธเชฎเชธเซเชฏเชพเช“ เชถเชฐเซ‚ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡.

เชฌเซเชฒเซ‹เชŸ เชธเชพเชฎเซ‡ เชฒเชกเชตเชพเชจเซ€ เชฐเซ€เชคเซ‹

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ เชชเชพเชธเซ‡ เชฌเซ‹เช•เซเชธเชจเซ€ เชฌเชนเชพเชฐ เชฌเซเชฒเซ‹เชŸ เชธเชพเชฅเซ‡ เชตเซเชฏเชตเชนเชพเชฐ เช•เชฐเชตเชพเชจเซ€ เช˜เชฃเซ€ เชฐเซ€เชคเซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชนเช‚เชฎเซ‡เชถเชพ เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เชจเชฅเซ€.

เช‘เชŸเซ‹เชตเซ‡เช•เซเชฏเซเชฎเชจเซ‡ เช—เซ‹เช เชตเซ‹ เชœเซ‡เชฅเซ€ เชฌเซเชฒเซ‹เชŸ เชจ เชฅเชพเชฏ. เช…เชฅเชตเชพ เชตเชงเซ เชธเซเชชเชทเซเชŸ เชฐเซ€เชคเซ‡, เชคเซ‡เชจเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เชธเซเชคเชฐ เชชเชฐ เชฐเชพเช–เชตเชพ เชฎเชพเชŸเซ‡. เช† "เช•เซ‡เชชเซเชŸเชจเชจเซ€" เชธเชฒเชพเชน เชœเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เช† เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเซเช‚ เชนเช‚เชฎเซ‡เชถเชพ เชธเชฐเชณ เชนเซ‹เชคเซเช‚ เชจเชฅเซ€. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชกเซ‡เชŸเชพ เชธเซเช•เซ€เชฎเชฎเชพเช‚ เชจเชฟเชฏเชฎเชฟเชค เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชธเชพเชฅเซ‡ เชธเช•เซเชฐเชฟเชฏ เชตเชฟเช•เชพเชธ เช›เซ‡ เช…เชฅเชตเชพ เช•เซ‹เชˆ เชชเซเชฐเช•เชพเชฐเชจเซเช‚ เชกเซ‡เชŸเชพ เชธเซเชฅเชณเชพเช‚เชคเชฐ เชฅเชˆ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชคเชฎเชพเชฐเซ€ เชฒเซ‹เชก เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชตเชพเชฐเช‚เชตเชพเชฐ เชฌเชฆเชฒเชพเชˆ เชถเช•เซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชŸเซ‡เชฌเชฒเชฅเซ€ เชŸเซ‡เชฌเชฒเชฎเชพเช‚ เชฌเชฆเชฒเชพเชคเซ€ เชฐเชนเซ‡เชถเซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เชธเชคเชค เชฅเซ‹เชกเซเช‚ เช†เช—เชณ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช…เชจเซ‡ เชฆเชฐเซ‡เช• เช•เซ‹เชทเซเชŸเช•เชจเซ€ เชฌเชฆเชฒเชพเชคเซ€ เชชเซเชฐเซ‹เชซเชพเช‡เชฒเชฎเชพเช‚ AUTOVACUUM เชจเซ‡ เชธเชฎเชพเชฏเซ‹เชœเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชชเชฐเช‚เชคเซ เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡ เช† เช•เชฐเชตเซเช‚ เชธเชฐเชณ เชจเชฅเซ€.

AUTOVACUUM เช•เซ‹เชทเซเชŸเช•เซ‹ เชธเชพเชฅเซ‡ เชšเชพเชฒเซ เชฐเชพเช–เซ€ เชถเช•เชคเซเช‚ เชจเชฅเซ€ เชคเซ‡เชจเซเช‚ เชฌเซ€เชœเซเช‚ เชธเชพเชฎเชพเชจเซเชฏ เช•เชพเชฐเชฃ เช เช›เซ‡ เช•เซ‡ เชคเซเชฏเชพเช‚ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ เชšเชพเชฒเชคเชพ เชตเซเชฏเชตเชนเชพเชฐเซ‹ เช›เซ‡ เชœเซ‡ เชคเซ‡เชจเซ‡ เชคเซ‡ เชตเซเชฏเชตเชนเชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เช‰เชชเชฒเชฌเซเชง เชกเซ‡เชŸเชพเชจเซ‡ เชธเชพเชซ เช•เชฐเชตเชพเชฅเซ€ เช…เชŸเช•เชพเชตเซ‡ เช›เซ‡. เช…เชนเซ€เช‚เชจเซ€ เชญเชฒเชพเชฎเชฃ เชชเชฃ เชธเซเชชเชทเซเชŸ เช›เซ‡ - "เชเซ‚เชฒเชคเชพ" เชตเซเชฏเชตเชนเชพเชฐเซ‹เชฅเซ€ เช›เซเชŸเช•เชพเชฐเซ‹ เชฎเซ‡เชณเชตเซ‹ เช…เชจเซ‡ เชธเช•เซเชฐเชฟเชฏ เชตเซเชฏเชตเชนเชพเชฐเซ‹เชจเซ‹ เชธเชฎเชฏ เช“เช›เซ‹ เช•เชฐเซ‹. เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เชชเชฐเชจเซ‹ เชญเชพเชฐ OLAP เช…เชจเซ‡ OLTP เชจเซ‹ เชตเชฐเซเชฃเชธเช‚เช•เชฐ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชเช•เชธเชพเชฅเซ‡ เช˜เชฃเชพ เชตเชพเชฐเช‚เชตเชพเชฐ เช…เชชเชกเซ‡เชŸเซเชธ เช…เชจเซ‡ เชŸเซ‚เช‚เช•เชพ เชชเซเชฐเชถเซเชจเซ‹, เชคเซ‡เชฎเชœ เชฒเชพเช‚เชฌเชพ เช—เชพเชณเชพเชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ - เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชฐเชฟเชชเซ‹เชฐเซเชŸ เชฌเชจเชพเชตเชตเซ€. เช†เชตเซ€ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚, เชฒเซ‹เชกเชจเซ‡ เชตเชฟเชตเชฟเชง เชชเชพเชฏเชพ เชชเชฐ เชซเซ‡เชฒเชพเชตเชตเชพ เชตเชฟเชถเซ‡ เชตเชฟเชšเชพเชฐเชตเซเช‚ เชฏเซ‹เช—เซเชฏ เช›เซ‡, เชœเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชฆเชฐเซ‡เช•เชจเซ‡ เชตเชงเซ เชซเชพเช‡เชจ-เชŸเซเชฏเซเชจเชฟเช‚เช— เชฎเชพเชŸเซ‡ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเชถเซ‡.

เชฌเซ€เชœเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ - เชœเซ‹ เชชเซเชฐเซ‹เชซเชพเช‡เชฒ เชธเชœเชพเชคเซ€เชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชกเซ‡เชŸเชพเชฌเซ‡เช เช–เซ‚เชฌ เชŠเช‚เชšเชพ เชญเชพเชฐ เชนเซ‡เช เชณ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เชธเซŒเชฅเซ€ เช†เช•เซเชฐเชฎเช• เช“เชŸเซ‹เชตเซ‡เช•เซเชฏเซเชฎ เชชเชฃ เชธเชพเชฎเชจเซ‹ เช•เชฐเซ€ เชถเช•เชถเซ‡ เชจเชนเซ€เช‚, เช…เชจเซ‡ เชฌเซเชฒเซ‹เชŸ เชฅเชถเซ‡. เชธเซเช•เซ‡เชฒเชฟเช‚เช— (เชŠเชญเซ€ เช…เชฅเชตเชพ เช†เชกเซ€) เชเช•เชฎเชพเชคเซเชฐ เช‰เช•เซ‡เชฒ เช›เซ‡.

เชเชตเซ€ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚ เชถเซเช‚ เช•เชฐเชตเซเช‚ เชœเซเชฏเชพเช‚ เชคเชฎเซ‡ AUTOVACUUM เชธเซ‡เชŸ เช•เชฐเซเชฏเซเช‚ เช›เซ‡, เชชเชฐเช‚เชคเซ เชฌเซเชฒเซ‹เชŸ เชตเชงเชคเซเช‚ เชœ เชฐเชนเซ‡ เช›เซ‡.

เชŸเซ€เชฎ เชตเซ‡เช•เซเชฏเซเชฎ เชซเซเชฒ เช•เซ‹เชทเซเชŸเช•เซ‹ เช…เชจเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“เชจเชพ เชธเชฎเชพเชตเชฟเชทเซเชŸเซ‹เชจเซเช‚ เชชเซเชจเชƒเชจเชฟเชฐเซเชฎเชพเชฃ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชซเช•เซเชค เชธเช‚เชฌเช‚เชงเชฟเชค เชกเซ‡เชŸเชพ เช›เซ‹เชกเซ‡ เช›เซ‡. เชฌเซเชฒเซ‹เชŸเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เชคเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชจเชพ เช…เชฎเชฒ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชŸเซ‡เชฌเชฒ เชชเชฐ เชเช• เชตเชฟเชถเชฟเชทเซเชŸ เชฒเซ‹เช• เช•เซ‡เชชเซเชšเชฐ เชฅเชพเชฏ เช›เซ‡ (AccessExclusiveLock), เชœเซ‡ เช† เชŸเซ‡เชฌเชฒ เชชเชฐ เช•เซเชตเซ‡เชฐเซ€ เชšเชฒเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเชถเซ‡ เชจเชนเซ€เช‚, เชชเชธเช‚เชฆ เชชเชฃ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เชคเชฎเซ‡ เชคเชฎเชพเชฐเซ€ เชธเซ‡เชตเชพ เช…เชฅเชตเชพ เชคเซ‡เชจเซ‹ เช…เชฎเซเช• เชญเชพเช— เช…เชฎเซเช• เชธเชฎเชฏ เชฎเชพเชŸเซ‡ (เชกเซ‡เชŸเชพเชฌเซ‡เช เช…เชจเซ‡ เชคเชฎเชพเชฐเชพ เชนเชพเชฐเซเชกเชตเซ‡เชฐเชจเชพ เช•เชฆเชจเชพ เช†เชงเชพเชฐเซ‡ เชฆเชธ เชฎเชฟเชจเชฟเชŸเชฅเซ€ เชฒเชˆเชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เช•เชฒเชพเช•เซ‹ เชธเซเชงเซ€) เชฌเช‚เชง เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชคเซ‹ เช† เชตเชฟเช•เชฒเซเชช เชถเซเชฐเซ‡เชทเซเช  เช›เซ‡. เช•เชฎเชจเชธเซ€เชฌเซ‡, เชธเซเชจเชฟเชถเซเชšเชฟเชค เชœเชพเชณเชตเชฃเซ€ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ VACUUM FULL เชšเชฒเชพเชตเชตเชพเชจเซ‹ เชธเชฎเชฏ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เช† เชชเชฆเซเชงเชคเชฟ เช…เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชฏเซ‹เช—เซเชฏ เชจเชฅเซ€.

เชŸเซ€เชฎ เช•เซเชฒเชธเซเชŸเชฐ เช•เซ‹เชทเซเชŸเช•เซ‹เชจเชพ เชธเชฎเชพเชตเชฟเชทเซเชŸเซ‹เชจเซ‡ VACUUM FULL เชจเซ€ เชœเซ‡เชฎ เชชเซเชจเชƒเชจเชฟเชฐเซเชฎเชพเชฃ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเชฎเชจเซ‡ เชเช• เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เชจเชฟเชฐเซเชฆเชฟเชทเซเชŸ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเชพ เช…เชจเซเชธเชพเชฐ เชกเชฟเชธเซเช• เชชเชฐ เชกเซ‡เชŸเชพ เชญเซŒเชคเชฟเช• เชฐเซ€เชคเซ‡ เช“เชฐเซเชกเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ (เชชเชฐเช‚เชคเซ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชจเชตเซ€ เชชเช‚เช•เซเชคเชฟเช“ เชฎเชพเชŸเซ‡ เช“เชฐเซเชกเชฐเชจเซ€ เช–เชพเชคเชฐเซ€ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเชคเซ€ เชจเชฅเซ€). เช…เชฎเซเช• เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“เชฎเชพเช‚, เช‡เชจเซเชกเซ‡เช•เซเชธ เชฆเซเชตเชพเชฐเชพ เชฌเชนเซเชตเชฟเชง เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธ เชตเชพเช‚เชšเชตเชพ เชธเชพเชฅเซ‡ - เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง เชชเซเชฐเชถเซเชจเซ‹ เชฎเชพเชŸเซ‡ เช† เชเช• เชธเชพเชฐเซเช‚ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เช›เซ‡. เช†เชฆเซ‡เชถเชจเซ‹ เช—เซ‡เชฐเชฒเชพเชญ VACUUM FULL เชจเซ€ เชœเซ‡เชฎ เชœ เช›เซ‡ - เชคเซ‡ เช“เชชเชฐเซ‡เชถเชจ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชŸเซ‡เชฌเชฒเชจเซ‡ เชฒเซ‰เช• เช•เชฐเซ‡ เช›เซ‡.

เชŸเซ€เชฎ REINDEX เช…เช—เชพเช‰เชจเชพ เชฌเซ‡ เชœเซ‡เชตเซเช‚ เชœ เช›เซ‡, เชชเชฐเช‚เชคเซ เชšเซ‹เช•เซเช•เชธ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เช…เชฅเชตเชพ เช•เซ‹เชทเซเชŸเช•เชจเชพ เชคเชฎเชพเชฎ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“เชจเซเช‚ เชชเซเชจเชƒเชจเชฟเชฐเซเชฎเชพเชฃ เช•เชฐเซ‡ เช›เซ‡. เชคเชพเชณเชพเช“ เชฅเซ‹เชกเชพ เชจเชฌเชณเชพ เช›เซ‡: เชŸเซ‡เชฌเชฒ เชชเชฐ เชถเซ‡เชฐเชฒเซ‹เช• (เชธเซเชงเชพเชฐเชพเช“เชจเซ‡ เช…เชŸเช•เชพเชตเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชชเชธเช‚เชฆเช—เซ€เชจเซ‡ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡) เช…เชจเซ‡ เชชเซเชจเชƒเชฌเซ€เชฒเซเชก เชฅเชˆ เชฐเชนเซ‡เชฒเชพ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เชชเชฐ AccessExclusiveLock (เช† เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเซเชฐเชถเซเชจเซ‹เชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเซ‡ เช›เซ‡). เชœเซ‹ เช•เซ‡, เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธเชจเชพ 12เชฎเชพ เชธเช‚เชธเซเช•เชฐเชฃเชฎเชพเช‚ เชเช• เชชเชฐเชฟเชฎเชพเชฃ เชฆเซ‡เช–เชพเชฏเซ‹ เชเช•เชธเชพเชฅเซ‡, เชœเซ‡ เชคเชฎเชจเซ‡ เชธเชนเชตเชฐเซเชคเซ€ เช‰เชฎเซ‡เชฐเชฃ, เชซเซ‡เชฐเชซเชพเชฐ เช…เชฅเชตเชพ เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธเชจเซ‡ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช‡เชจเซเชกเซ‡เช•เซเชธเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

Postgres เชจเชพ เชชเชนเซ‡เชฒเชพเชจเชพเช‚ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชฎเชพเช‚, เชคเชฎเซ‡ เชเช•เชธเชพเชฅเซ‡ REINDEX เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเชฎเชพเชจ เชชเชฐเชฟเชฃเชพเชฎ เชชเซเชฐเชพเชชเซเชค เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เชเช•เชธเชพเชฅเซ‡ เช‡เชจเซเชกเซ‡เช•เซเชธ เชฌเชจเชพเชตเซ‹. เชคเซ‡ เชคเชฎเชจเซ‡ เช•เชกเช• เชฒเซ‹เช•เซ€เช‚เช— เชตเชฟเชจเชพ เช‡เชจเซเชกเซ‡เช•เซเชธ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡ (ShareUpdateExclusiveLock, เชœเซ‡ เชธเชฎเชพเช‚เชคเชฐ เชชเซเชฐเชถเซเชจเซ‹เชฎเชพเช‚ เชฆเช–เชฒ เช•เชฐเชคเซเช‚ เชจเชฅเซ€), เชชเช›เซ€ เชœเซ‚เชจเชพ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเชจเซ‡ เชจเชตเชพ เชธเชพเชฅเซ‡ เชฌเชฆเชฒเซ‹ เช…เชจเซ‡ เชœเซ‚เชจเซ€ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เช•เชพเชขเซ€ เชจเชพเช–เซ‹. เช† เชคเชฎเชจเซ‡ เชคเชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚ เชฆเช–เชฒ เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ เช‡เชจเซเชกเซ‡เช•เซเชธ เชฌเซเชฒเซ‹เชŸเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡. เชคเซ‡ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเซ‡เชตเซเช‚ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เช›เซ‡ เช•เซ‡ เชœเซเชฏเชพเชฐเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“เชจเซเช‚ เชชเซเชจเชฐเซเชจเชฟเชฐเซเชฎเชพเชฃ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชกเชฟเชธเซเช• เชธเชฌเชธเชฟเชธเซเชŸเชฎ เชชเชฐ เชตเชงเชพเชฐเชพเชจเซ‹ เชญเชพเชฐ เชนเชถเซ‡.

เช†เชฎ, เชœเซ‹ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“ เชฎเชพเชŸเซ‡ "เชซเซเชฒเชพเชฏ เชชเชฐ" เชฌเซเชฒเซ‹เชŸเชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชจเซ€ เชฐเซ€เชคเซ‹ เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เช•เซ‹เชทเซเชŸเช•เซ‹ เชฎเชพเชŸเซ‡ เช•เซ‹เชˆ เชจเชฅเซ€. เช† เชคเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ เชตเชฟเชตเชฟเชง เชฌเชพเชนเซเชฏ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชฐเชฎเชคเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡: pg_repack (เช…เช—เชพเช‰ pg_reorg), pgcompact, pg เช•เซ‹เชฎเซเชชเซ‡เช•เซเชŸเซ‡เชฌเชฒ เช…เชจเซ‡ เช…เชจเซเชฏ. เช† เชฒเซ‡เช–เชฎเชพเช‚, เชนเซเช‚ เชคเซ‡เชฎเชจเซ€ เชคเซเชฒเชจเชพ เช•เชฐเซ€เชถ เชจเชนเซ€เช‚ เช…เชจเซ‡ เชซเช•เซเชค pg_repack เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€เชถ, เชœเซ‡, เช•เซ‡เชŸเชฒเชพเช• เชซเซ‡เชฐเชซเชพเชฐ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเซ‡ เช…เชฎเชพเชฐเซ€ เชœเชพเชคเชจเซ‡ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช.

เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ pg_repack เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹
เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชŸเซ‡เชฌเชฒ เช›เซ‡ - เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“, เชชเซเชฐเชคเชฟเชฌเช‚เชงเซ‹ เช…เชจเซ‡ เช•เชฎเชจเชธเซ€เชฌเซ‡, เชฌเซเชฒเซ‹เชŸ เชธเชพเชฅเซ‡. pg_repack เชจเซเช‚ เชชเซเชฐเชฅเชฎ เชชเช—เชฒเซเช‚ เช เชšเชพเชฒเซ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชคเชฎเชพเชฎ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชตเชฟเชถเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฒเซ‹เช— เชŸเซ‡เชฌเชฒ เชฌเชจเชพเชตเชตเชพเชจเซเช‚ เช›เซ‡. เชŸเซเชฐเชฟเช—เชฐ เชฆเชฐเซ‡เช• เช‡เชจเซเชธเชฐเซเชŸ, เช…เชชเชกเซ‡เชŸ เช…เชจเซ‡ เชกเชฟเชฒเซ€เชŸ เชฎเชพเชŸเซ‡ เช† เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ€ เชจเช•เชฒ เช•เชฐเชถเซ‡. เชชเช›เซ€ เชเช• เชŸเซ‡เชฌเชฒ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เชฌเช‚เชงเชพเชฐเชฃเชฎเชพเช‚ เชฎเซ‚เชณ เชœเซ‡เชตเซเช‚ เชœ เช›เซ‡, เชชเชฐเช‚เชคเซ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“ เช…เชจเซ‡ เชชเซเชฐเชคเชฟเชฌเช‚เชงเซ‹ เชตเชฟเชจเชพ, เชœเซ‡เชฅเซ€ เชกเซ‡เชŸเชพ เชฆเชพเช–เชฒ เช•เชฐเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชงเซ€เชฎเซเช‚ เชจ เชฅเชพเชฏ.

เช†เช—เชณ, pg_repack เชœเซ‚เชจเชพ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพเชจเซ‡ เชจเชตเชพ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เช†เชชเชฎเซ‡เชณเซ‡ เชฌเชงเซ€ เช…เชชเซเชฐเชธเซเชคเซเชค เชชเช‚เช•เซเชคเชฟเช“เชจเซ‡ เชซเชฟเชฒเซเชŸเชฐ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชชเช›เซ€ เชจเชตเชพ เช•เซ‹เชทเซเชŸเช• เชฎเชพเชŸเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“ เชฌเชจเชพเชตเซ‡ เช›เซ‡. เช† เชคเชฎเชพเชฎ เช•เชพเชฎเช—เซ€เชฐเซ€เชจเชพ เช…เชฎเชฒ เชฆเชฐเชฎเชฟเชฏเชพเชจ, เชฒเซ‹เช— เชŸเซ‡เชฌเชฒเชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชเช•เช เชพ เชฅเชพเชฏ เช›เซ‡.

เช†เช—เชณเชจเซเช‚ เชชเช—เชฒเซเช‚ เช เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‡ เชจเชตเชพ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡. เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฃ เช…เชจเซ‡เช• เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจเซ‹ เชชเชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เช…เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชฒเซ‹เช— เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ 20 เชฅเซ€ เช“เช›เซ€ เชเชจเซเชŸเซเชฐเซ€เช“ เชฌเชพเช•เซ€ เชนเซ‹เชฏ, เชคเซเชฏเชพเชฐเซ‡ pg_repack เชเช• เชฎเชœเชฌเซ‚เชค เชฒเซ‹เช• เชฎเซ‡เชณเชตเซ‡ เช›เซ‡, เชจเชตเซ€เชจเชคเชฎ เชกเซ‡เชŸเชพ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ เชธเชฟเชธเซเชŸเชฎ เช•เซ‹เชทเซเชŸเช•เซ‹เชฎเชพเช‚ เชจเชตเชพ เชธเชพเชฅเซ‡ เชœเซ‚เชจเชพ เช•เซ‹เชทเซเชŸเช•เชจเซ‡ เชฌเชฆเชฒเซ‡ เช›เซ‡. เช† เชเช•เชฎเชพเชคเซเชฐ เช…เชจเซ‡ เช–เซ‚เชฌ เชœ เชŸเซ‚เช‚เช•เชพ เชธเชฎเชฏ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชŸเซ‡เชฌเชฒ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชถเช•เชถเซ‹ เชจเชนเซ€เช‚. เช† เชชเช›เซ€, เชœเซ‚เชจเซเช‚ เชŸเซ‡เชฌเชฒ เช…เชจเซ‡ เชฒเซ‹เช— เชธเชพเชฅเซ‡เชจเซเช‚ เชŸเซ‡เชฌเชฒ เช•เชพเชขเซ€ เชจเชพเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช…เชจเซ‡ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชœเช—เซเชฏเชพ เช–เชพเชฒเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชชเซ‚เชฐเซเชฃ เชฅเชˆ เช—เชˆ เช›เซ‡.

เชธเชฟเชฆเซเชงเชพเช‚เชคเชฎเชพเช‚ เชฌเชงเซเช‚ เชธเชฐเชธ เชฒเชพเช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚ เชถเซเช‚ เชฅเชพเชฏ เช›เซ‡? เช…เชฎเซ‡ เชฒเซ‹เชก เชตเชฟเชจเชพ เช…เชจเซ‡ เชฒเซ‹เชก เชนเซ‡เช เชณ pg_repack เชจเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซเชฏเซเช‚, เช…เชจเซ‡ เชธเชฎเชฏ เชชเชนเซ‡เชฒเชพ เชฌเช‚เชง เชฅเชตเชพเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชคเซ‡เชจเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชคเชชเชพเชธเซ€ (เชฌเซ€เชœเชพ เชถเชฌเซเชฆเซ‹เชฎเชพเช‚, Ctrl+C เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡). เชคเชฎเชพเชฎ เชŸเซ‡เชธเซเชŸ เชชเซ‹เชเซ€เชŸเซ€เชต เช†เชตเซเชฏเชพ เชนเชคเชพ.

เช…เชฎเซ‡ เชซเซ‚เชก เชธเซเชŸเซ‹เชฐ เชชเชฐ เช—เชฏเชพ - เช…เชจเซ‡ เชชเช›เซ€ เชฌเชงเซเช‚ เช…เชฎเชพเชฐเซ€ เช…เชชเซ‡เช•เซเชทเชพ เชฎเซเชœเชฌ เชฅเชฏเซเช‚ เชจเชนเซ€เช‚.

เชตเซ‡เชšเชพเชฃ เชชเชฐ เชชเซเชฐเชฅเชฎ เชชเซ‡เชจเช•เซ‡เช•

เชชเซเชฐเชฅเชฎ เช•เซเชฒเชธเซเชŸเชฐ เชชเชฐ เช…เชฎเชจเซ‡ เช…เชจเชจเซเชฏ เช…เชตเชฐเซ‹เชงเชจเชพ เช‰เชฒเซเชฒเช‚เช˜เชจ เชตเชฟเชถเซ‡ เชญเซ‚เชฒ เชชเซเชฐเชพเชชเซเชค เชฅเชˆ เช›เซ‡:

$ ./pg_repack -t tablename -o id
INFO: repacking table "tablename"
ERROR: query failed: 
    ERROR: duplicate key value violates unique constraint "index_16508"
DETAIL:  Key (id, index)=(100500, 42) already exists.

เช† เชฎเชฐเซเชฏเชพเชฆเชพเชฎเชพเช‚ เชธเซเชตเชคเชƒ-เชœเชจเชฐเซ‡เชŸเซ‡เชก เชจเชพเชฎ index_16508 เชนเชคเซเช‚ - เชคเซ‡ pg_repack เชฆเซเชตเชพเชฐเชพ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เชคเซ‡เชจเซ€ เชฐเชšเชจเชพเชฎเชพเช‚ เชธเชฎเชพเชตเชฟเชทเซเชŸ เชฒเช•เซเชทเชฃเซ‹เชจเชพ เช†เชงเชพเชฐเซ‡, เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช…เชจเซเชฐเซ‚เชช "เช…เชฎเชพเชฐเซเช‚" เช…เชตเชฐเซ‹เชง เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เช›เซ‡. เชธเชฎเชธเซเชฏเชพ เช เชฌเชนเชพเชฐ เช†เชตเซ€ เช•เซ‡ เช† เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฎเชฐเซเชฏเชพเชฆเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชตเชฟเชฒเช‚เชฌเชฟเชค เช›เซ‡ (เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชง), เชเชŸเชฒเซ‡ เช•เซ‡ เชคเซ‡เชจเซ€ เชšเช•เชพเชธเชฃเซ€ sql เช†เชฆเซ‡เชถ เช•เชฐเชคเชพเช‚ เชชเชพเช›เชณเชฅเซ€ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เช…เชฃเชงเชพเชฐเซเชฏเชพ เชชเชฐเชฟเชฃเชพเชฎเซ‹ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เชœเชพเชฏ เช›เซ‡.

เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹: เชคเซ‡เช“ เชถเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช…เชจเซ‡ เชคเซ‡เช“ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡

เชตเชฟเชฒเช‚เชฌเชฟเชค เชชเซเชฐเชคเชฟเชฌเช‚เชงเซ‹ เชตเชฟเชถเซ‡ เชฅเซ‹เชกเซ‹ เชธเชฟเชฆเซเชงเชพเช‚เชค.
เชšเชพเชฒเซ‹ เชเช• เชธเชฐเชณ เช‰เชฆเชพเชนเชฐเชฃ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฒเชˆเช: เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฌเซ‡ เชตเชฟเชถเซ‡เชทเชคเชพเช“เชตเชพเชณเซ€ เช•เชพเชฐเชจเซ€ เชŸเซ‡เชฌเชฒ-เชฐเซ‡เชซเชฐเชจเซเชธ เชฌเซเช• เช›เซ‡ - เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เช•เชพเชฐเชจเซเช‚ เชจเชพเชฎ เช…เชจเซ‡ เช•เซเชฐเชฎ.
เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹

create table cars
(
  name text constraint pk_cars primary key,
  ord integer not null constraint uk_cars unique
);



เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เช†เชชเชฃเซ‡ เชชเซเชฐเชฅเชฎ เช…เชจเซ‡ เชฌเซ€เชœเซ€ เช•เชพเชฐเชจเซ‡ เชธเซเชตเซ‡เชช เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชธเซ€เชงเซ‹ เช‰เช•เซ‡เชฒ เช เช›เซ‡ เช•เซ‡ เชชเซเชฐเชฅเชฎ เชฎเซ‚เชฒเซเชฏเชจเซ‡ เชฌเซ€เชœเชพเชฎเชพเช‚ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเซเช‚, เช…เชจเซ‡ เชฌเซ€เชœเชพเชจเซ‡ เชชเซเชฐเชฅเชฎเชฎเชพเช‚ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเซเช‚:

begin;
  update cars set ord = 2 where name = 'audi';
  update cars set ord = 1 where name = 'bmw';
commit;

เชชเชฐเช‚เชคเซ เชœเซเชฏเชพเชฐเซ‡ เช†เชชเชฃเซ‡ เช† เช•เซ‹เชก เชšเชฒเชพเชตเซ€เช เช›เซ€เช, เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชชเซเชฐเชคเชฟเชฌเช‚เชงเชจเชพ เช‰เชฒเซเชฒเช‚เช˜เชจเชจเซ€ เช…เชชเซ‡เช•เซเชทเชพ เชฐเชพเช–เซ€เช เช›เซ€เช เช•เชพเชฐเชฃ เช•เซ‡ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ‹ เช•เซเชฐเชฎ เช…เชจเชจเซเชฏ เช›เซ‡:

[23305] ERROR: duplicate key value violates unique constraint โ€œuk_carsโ€
Detail: Key (ord)=(2) already exists.

เชนเซเช‚ เชคเซ‡เชจเซ‡ เช…เชฒเช— เชฐเซ€เชคเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เซเช‚? เชตเชฟเช•เชฒเซเชช เชเช•: เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เช…เชธเซเชคเชฟเชคเซเชตเชฎเชพเช‚ เชจ เชนเซ‹เชตเชพเชจเซ€ เชฌเชพเช‚เชฏเชงเชฐเซ€ เช†เชชเซ‡เชฒ เช“เชฐเซเชกเชฐเชฎเชพเช‚ เชตเชงเชพเชฐเชพเชจเซ€ เช•เชฟเช‚เชฎเชค เชฌเชฆเชฒเซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ โ€œ-1โ€. เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชฟเช‚เช—เชฎเชพเช‚, เช†เชจเซ‡ "เชคเซเชฐเซ€เชœเชพ เชฆเซเชตเชพเชฐเชพ เชฌเซ‡ เชšเชฒเซ‹เชจเชพเช‚ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซเช‚ เชตเชฟเชจเชฟเชฎเชฏ" เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เชชเชฆเซเชงเชคเชฟเชจเซ€ เชเช•เชฎเชพเชคเซเชฐ เช–เชพเชฎเซ€ เช เชตเชงเชพเชฐเชพเชจเชพ เช…เชชเชกเซ‡เชŸ เช›เซ‡.

เชตเชฟเช•เชฒเซเชช เชฌเซ‡: เชชเซ‚เชฐเซเชฃเชพเช‚เช•เซ‹เชจเซ‡ เชฌเชฆเชฒเซ‡ เช“เชฐเซเชกเชฐ เชฎเซ‚เชฒเซเชฏ เชฎเชพเชŸเซ‡ เชซเซเชฒเซ‹เชŸเชฟเช‚เช— เชชเซ‹เชˆเชจเซเชŸ เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชทเซเชŸเช•เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชกเชฟเชเชพเช‡เชจ เช•เชฐเซ‹. เชชเช›เซ€, เชœเซเชฏเชพเชฐเซ‡ เชฎเซ‚เชฒเซเชฏ 1 เชฅเซ€ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, 2.5, เชชเซเชฐเชฅเชฎ เชเชจเซเชŸเซเชฐเซ€ เช†เชชเซ‹เช†เชช เชฌเซ€เชœเชพ เช…เชจเซ‡ เชคเซเชฐเซ€เชœเชพ เชตเชšเซเชšเซ‡ "เชธเซเชŸเซ‡เชจเซเชก" เชฅเชถเซ‡. เช† เช‰เช•เซ‡เชฒ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชฌเซ‡ เชฎเชฐเซเชฏเชพเชฆเชพเช“ เช›เซ‡. เชชเซเชฐเชฅเชฎ, เชœเซ‹ เชˆเชจเซเชŸเชฐเชซเซ‡เชธเชฎเชพเช‚ เช•เซเชฏเชพเช‚เช• เชฎเซ‚เชฒเซเชฏเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเซ‹เชฏ เชคเซ‹ เชคเซ‡ เชคเชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เช•เชพเชฎ เช•เชฐเชถเซ‡ เชจเชนเซ€เช‚. เชฌเซ€เชœเซเช‚, เชกเซ‡เชŸเชพ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชšเซ‹เช•เชธเชพเชˆเชจเชพ เช†เชงเชพเชฐเซ‡, เชคเชฎเชพเชฎ เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธเชจเชพ เชฎเซ‚เชฒเซเชฏเซ‹เชจเซ€ เชชเซเชจเชƒเช—เชฃเชคเชฐเซ€ เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชธเช‚เชญเชตเชฟเชค เช‡เชจเซเชธเชฐเซเชŸเซเชธ เชนเชถเซ‡.

เชตเชฟเช•เชฒเซเชช เชคเซเชฐเชฃ: เช…เชตเชฐเซ‹เชงเชจเซ‡ เชธเซเชฅเช—เชฟเชค เช•เชฐเซ‹ เชœเซ‡เชฅเซ€ เชคเซ‡ เชฎเชพเชคเซเชฐ เชชเซเชฐเชคเชฟเชฌเชฆเซเชงเชคเชพ เชธเชฎเชฏเซ‡ เชœ เชคเชชเชพเชธเชตเชพเชฎเชพเช‚ เช†เชตเซ‡:

create table cars
(
  name text constraint pk_cars primary key,
  ord integer not null constraint uk_cars unique deferrable initially deferred
);

เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเชพเชฐเซ€ เชชเซเชฐเชพเชฐเช‚เชญเชฟเช• เชตเชฟเชจเช‚เชคเซ€เชจเซ‹ เชคเชฐเซเช• เช–เชพเชคเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡ เช•เซ‡ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เชธเชฎเชฏเซ‡ เชคเชฎเชพเชฎ เชฎเซ‚เชฒเซเชฏเซ‹ เช…เชจเชจเซเชฏ เช›เซ‡, เชคเซ‡ เชธเชซเชณ เชฅเชถเซ‡.

เช‰เชชเชฐ เชšเชฐเซเชšเชพ เช•เชฐเซ‡เชฒ เช‰เชฆเชพเชนเชฐเชฃ, เช…เชฒเชฌเชคเซเชค, เช–เซ‚เชฌ เชœ เช•เซƒเชคเซเชฐเชฟเชฎ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชตเชฟเชšเชพเชฐเชจเซ‡ เช›เชคเซ€ เช•เชฐเซ‡ เช›เซ‡. เช…เชฎเชพเชฐเซ€ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจเชฎเชพเช‚, เช…เชฎเซ‡ เชคเชฐเซเช•เชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพ เชฎเชพเชŸเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เช เช›เซ€เช เชœเซ‡ เชคเช•เชฐเชพเชฐ เช‰เช•เซ‡เชฒเชตเชพ เชฎเชพเชŸเซ‡ เชœเชตเชพเชฌเชฆเชพเชฐ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชเช•เชธเชพเชฅเซ‡ เชฌเซ‹เชฐเซเชก เชชเชฐ เชถเซ‡เชฐ เช•เชฐเซ‡เชฒ เชตเชฟเชœเซ‡เชŸ เช‘เชฌเซเชœเซ‡เช•เซเชŸเซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เช†เชตเชพ เชชเซเชฐเชคเชฟเชฌเช‚เชงเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช…เชฎเชจเซ‡ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชกเชจเซ‡ เชฅเซ‹เชกเซ‹ เชธเชฐเชณ เชฌเชจเชพเชตเชตเชพเชจเซ€ เชฎเช‚เชœเซ‚เชฐเซ€ เช†เชชเซ‡ เช›เซ‡.

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชฎเชฐเซเชฏเชพเชฆเชพเชจเชพ เชชเซเชฐเช•เชพเชฐ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ€เชจเซ‡, เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ เชชเชพเชธเซ‡ เชคเซ‡เชฎเชจเซ‡ เชคเชชเชพเชธเชตเชพ เชฎเชพเชŸเซ‡ เช—เซเชฐเซ‡เชจเซเชฏเซเชฒเชพเชฐเชฟเชŸเซ€เชจเชพ เชคเซเชฐเชฃ เชธเซเชคเชฐเซ‹ เช›เซ‡: เชชเช‚เช•เซเชคเชฟ, เชตเซเชฏเชตเชนเชพเชฐ เช…เชจเซ‡ เช…เชญเชฟเชตเซเชฏเช•เซเชคเชฟ เชธเซเชคเชฐ.
เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹
เชธเซ‹เชฐเซเชธ: begriffs

CHECK เช…เชจเซ‡ NOT NULL เชนเช‚เชฎเซ‡เชถเชพ เชชเช‚เช•เซเชคเชฟ เชธเซเชคเชฐ เชชเชฐ เชคเชชเชพเชธเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡; เช…เชจเซเชฏ เชชเซเชฐเชคเชฟเชฌเช‚เชงเซ‹ เชฎเชพเชŸเซ‡, เชœเซ‡เชฎ เช•เซ‡ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚เชฅเซ€ เชœเซ‹เชˆ เชถเช•เชพเชฏ เช›เซ‡, เชคเซเชฏเชพเช‚ เชตเชฟเชตเชฟเชง เชตเชฟเช•เชฒเซเชชเซ‹ เช›เซ‡. เชคเชฎเซ‡ เชตเชงเซ เชตเชพเช‚เชšเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚.

เชŸเซ‚เช‚เช•เชฎเชพเช‚ เชธเชพเชฐเชพเช‚เชถ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡, เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช“เชฎเชพเช‚ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹ เชตเชงเซ เชตเชพเช‚เชšเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เช•เซ‹เชก เช…เชจเซ‡ เช“เช›เชพ เช†เชฆเซ‡เชถเซ‹ เชชเซเชฐเชฆเชพเชจ เช•เชฐเซ‡ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชคเชฎเชพเชฐเซ‡ เชกเชฟเชฌเช—เซ€เช‚เช— เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชœเชŸเชฟเชฒ เชฌเชจเชพเชตเซ€เชจเซ‡ เช† เชฎเชพเชŸเซ‡ เชšเซ‚เช•เชตเชฃเซ€ เช•เชฐเชตเซ€ เชชเชกเชถเซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เชœเซ‡ เช•เซเชทเชฃเซ‡ เชญเซ‚เชฒ เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เชœเซ‡ เช•เซเชทเชฃ เชคเชฎเชจเซ‡ เชคเซ‡เชจเชพ เชตเชฟเชถเซ‡ เชœเชพเชฃเชตเชพ เชฎเชณเซ‡ เช›เซ‡ เชคเซ‡ เช•เซเชทเชฃ เชธเชฎเชฏเชธเชฐ เช…เชฒเช— เชฅเชˆ เชœเชพเชฏ เช›เซ‡. เชฌเซ€เชœเซ€ เชธเช‚เชญเชตเชฟเชค เชธเชฎเชธเซเชฏเชพ เช เช›เซ‡ เช•เซ‡ เชœเซ‹ เชตเชฟเชจเช‚เชคเชฟเชฎเชพเช‚ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชง เชถเชพเชฎเซ‡เชฒ เชนเซ‹เชฏ เชคเซ‹ เชถเซ‡เชกเซเชฏเซ‚เชฒเชฐ เชนเช‚เชฎเซ‡เชถเชพ เชถเซเชฐเซ‡เชทเซเช  เชฏเซ‹เชœเชจเชพ เชฌเชจเชพเชตเซ€ เชถเช•เชถเซ‡ เชจเชนเซ€เช‚.

pg_repack เชฎเชพเช‚ เชธเซเชงเชพเชฐเซ‹

เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹ เชถเซเช‚ เช›เซ‡ เชคเซ‡ เช…เชฎเซ‡ เช†เชตเชฐเซ€ เชฒเซ€เชงเซเช‚ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เช…เชฎเชพเชฐเซ€ เชธเชฎเชธเซเชฏเชพ เชธเชพเชฅเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เช›เซ‡? เชšเชพเชฒเซ‹ เชฏเชพเชฆ เช•เชฐเซ€เช เช•เซ‡ เช…เชฎเชจเซ‡ เช…เช—เชพเช‰ เชฎเชณเซ‡เชฒเซ€ เชญเซ‚เชฒ:

$ ./pg_repack -t tablename -o id
INFO: repacking table "tablename"
ERROR: query failed: 
    ERROR: duplicate key value violates unique constraint "index_16508"
DETAIL:  Key (id, index)=(100500, 42) already exists.

เชคเซ‡ เชคเซเชฏเชพเชฐเซ‡ เชฅเชพเชฏ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เชกเซ‡เชŸเชพเชจเซ‡ เชฒเซ‹เช— เชŸเซ‡เชฌเชฒเชฎเชพเช‚เชฅเซ€ เชจเชตเชพ เชŸเซ‡เชฌเชฒ เชชเชฐ เช•เซ‰เชชเชฟ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช† เชตเชฟเชšเชฟเชคเซเชฐ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ ... เชฒเซ‹เช— เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚เชจเซ‹ เชกเซ‡เชŸเชพ เชธเซเชฐเซ‹เชค เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚เชจเชพ เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เช›เซ‡. เชœเซ‹ เชคเซ‡เช“ เชฎเซ‚เชณ เช•เซ‹เชทเซเชŸเช•เชจเซ€ เชฎเชฐเซเชฏเชพเชฆเชพเช“เชจเซ‡ เชธเช‚เชคเซ‹เชทเซ‡ เช›เซ‡, เชคเซ‹ เชคเซ‡เช“ เชจเชตเชพเชฎเชพเช‚ เชธเชฎเชพเชจ เช…เชตเชฐเซ‹เชงเซ‹เชจเซเช‚ เช‰เชฒเซเชฒเช‚เช˜เชจ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเซ€ เชถเช•เซ‡?

เชœเซ‡เชฎ เชคเซ‡ เชคเชพเชฐเชฃ เช†เชชเซ‡ เช›เซ‡, เชธเชฎเชธเซเชฏเชพเชจเซเช‚ เชฎเซ‚เชณ pg_repack เชจเชพ เชชเชพเช›เชฒเชพ เชชเช—เชฒเชพเชฎเชพเช‚ เชฐเชนเซ‡เชฒเซเช‚ เช›เซ‡, เชœเซ‡ เชซเช•เซเชค เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“ เชฌเชจเชพเชตเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช…เชตเชฐเซ‹เชงเซ‹ เชจเชนเซ€เช‚: เชœเซ‚เชจเชพ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชเช• เช…เชจเชจเซเชฏ เช…เชตเชฐเซ‹เชง เชนเชคเซ‹, เช…เชจเซ‡ เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡ เชจเชตเชพเช เชเช• เช…เชจเชจเซเชฏ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เชฌเชจเชพเชตเซเชฏเซเช‚ เชนเชคเซเช‚.

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹

เช…เชนเซ€เช‚ เช เชจเซ‹เช‚เชงเชตเซเช‚ เช…เช—เชคเซเชฏเชจเซเช‚ เช›เซ‡ เช•เซ‡ เชœเซ‹ เช…เชตเชฐเซ‹เชง เชธเชพเชฎเชพเชจเซเชฏ เชนเซ‹เชฏ เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เชจ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชจเชพ เชฌเชฆเชฒเซ‡ เชฌเชจเชพเชตเซ‡เชฒ เช…เชจเชจเซเชฏ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เช† โ€‹โ€‹เช…เชตเชฐเซ‹เชงเชจเซ€ เชธเชฎเช•เช•เซเชท เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ Postgres เชฎเชพเช‚ เช…เชจเชจเซเชฏ เช…เชตเชฐเซ‹เชงเซ‹ เชเช• เช…เชจเชจเซเชฏ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เชฌเชจเชพเชตเซ€เชจเซ‡ เชฒเชพเช—เซ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเชจเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชตเชฐเซเชคเชจ เชธเชฎเชพเชจ เชนเซ‹เชคเซเช‚ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เชตเชฟเชฒเช‚เชฌเชฟเชค เช•เชฐเซ€ เชถเช•เชพเชคเซ€ เชจเชฅเซ€ เช…เชจเซ‡ เชคเซ‡ เชนเช‚เชฎเซ‡เชถเชพ sql เช†เชฆเซ‡เชถ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เชฅเชพเชฏ เชคเซ‡ เชธเชฎเชฏเซ‡ เชคเชชเชพเชธเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡.

เช†เชฎ, เชธเชฎเชธเซเชฏเชพเชจเซ‹ เชธเชพเชฐ เชšเซ‡เช•เชจเชพ "เชตเชฟเชฒเช‚เชฌ" เชฎเชพเช‚ เชฐเชนเซ‡เชฒเซ‹ เช›เซ‡: เชฎเซ‚เชณ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชคเซ‡ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เชธเชฎเชฏเซ‡ เชฅเชพเชฏ เช›เซ‡, เช…เชจเซ‡ เชจเชตเชพ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชœเซเชฏเชพเชฐเซ‡ sql เช†เชฆเซ‡เชถเชจเซ‹ เช…เชฎเชฒ เชฅเชพเชฏ เช›เซ‡. เช†เชจเซ‹ เช…เชฐเซเชฅ เช เช›เซ‡ เช•เซ‡ เช…เชฎเชพเชฐเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เชคเชชเชพเชธ เชฌเช‚เชจเซ‡ เช•เชฟเชธเซเชธเชพเช“เชฎเชพเช‚ เชธเชฎเชพเชจ เชฐเซ€เชคเซ‡ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡: เช•เชพเช‚ เชคเซ‹ เชนเช‚เชฎเซ‡เชถเชพ เชตเชฟเชฒเช‚เชฌเชฟเชค, เช…เชฅเชตเชพ เชนเช‚เชฎเซ‡เชถเชพ เชคเชฐเชค เชœ.

เชคเซ‹ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เชฏเชพ เชตเชฟเชšเชพเชฐเซ‹ เชนเชคเชพ?

เชตเชฟเชฒเช‚เชฌเชฟเชค เชธเชฎเชพเชจ เช‡เชจเซเชกเซ‡เช•เซเชธ เชฌเชจเชพเชตเซ‹

เชชเซเชฐเชฅเชฎ เชตเชฟเชšเชพเชฐ เช เช›เซ‡ เช•เซ‡ เชฌเช‚เชจเซ‡ เชคเชชเชพเชธ เชคเชพเชคเซเช•เชพเชฒเชฟเช• เชฎเซ‹เชกเชฎเชพเช‚ เช•เชฐเชตเชพ. เช†เชจเชพเชฅเซ€ เช˜เชฃเชพ เช–เซ‹เชŸเชพ เชธเช•เชพเชฐเชพเชคเซเชฎเช• เชชเซเชฐเชคเชฟเชฌเช‚เชงเซ‹ เชชเซ‡เชฆเชพ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเซ‡เชฎเชพเช‚เชจเชพ เชฅเซ‹เชกเชพ เช›เซ‡, เชคเซ‹ เช†เชจเชพเชฅเซ€ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“เชจเชพ เช•เชพเชฐเซเชฏเชจเซ‡ เช…เชธเชฐ เชฅเชตเซ€ เชœเซ‹เชˆเช เชจเชนเซ€เช‚, เช•เชพเชฐเชฃ เช•เซ‡ เช†เชตเชพ เชธเช‚เช˜เชฐเซเชทเซ‹ เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ เช›เซ‡. เชคเซ‡ เชฅเชพเชฏ เช›เซ‡, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชฌเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชเช• เชœ เชธเชฎเชฏเซ‡ เชเช• เชœ เชตเชฟเชœเซ‡เชŸเชจเซ‡ เชธเช‚เชชเชพเชฆเชฟเชค เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชฌเซ€เชœเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเชพ เช•เซเชฒเชพเชฏเช‚เชŸ เชชเชพเชธเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ‹ เชธเชฎเชฏ เชจเชฅเซ€ เช•เซ‡ เชตเชฟเชœเซ‡เชŸ เชชเชนเซ‡เชฒเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฆเซเชตเชพเชฐเชพ เชธเช‚เชชเชพเชฆเชจ เชฎเชพเชŸเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช…เชตเชฐเซ‹เชงเชฟเชค เช›เซ‡. เช†เชตเซ€ เชธเซเชฅเชฟเชคเชฟเชฎเชพเช‚, เชธเชฐเซเชตเชฐ เชฌเซ€เชœเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเชจเซ‡ เชจเช•เชพเชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡เชจเซ‹ เช•เซเชฒเชพเชฏเช‚เชŸ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‡ เชชเชพเช›เซ‹ เช–เซ‡เช‚เชšเซ€ เชฒเซ‡ เช›เซ‡ เช…เชจเซ‡ เชตเชฟเชœเซ‡เชŸเชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เชฅเซ‹เชกเซ€ เชตเชพเชฐ เชชเช›เซ€, เชœเซเชฏเชพเชฐเซ‡ เชชเซเชฐเชฅเชฎ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชธเช‚เชชเชพเชฆเชจ เชชเซ‚เชฐเซเชฃ เช•เชฐเชถเซ‡, เชคเซเชฏเชพเชฐเซ‡ เชฌเซ€เชœเชพเชจเซ‡ เชฎเชพเชนเชฟเชคเซ€ เชชเซเชฐเชพเชชเซเชค เชฅเชถเซ‡ เช•เซ‡ เชตเชฟเชœเซ‡เชŸ เชนเชตเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เชจเชฅเซ€ เช…เชจเซ‡ เชคเซ‡เชฎเชจเซ€ เช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชนเชถเซ‡.

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹

เชšเซ‡เช• เชนเช‚เชฎเซ‡เชถเชพ เชฌเชฟเชจ-เชตเชฟเชฒเช‚เชฌเชฟเชค เชฎเซ‹เชกเชฎเชพเช‚ เชนเซ‹เชฏ เชคเซ‡เชจเซ€ เช–เชพเชคเชฐเซ€ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชฎเซ‚เชณ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเชจเซ€ เชœเซ‡เชฎ เชœ เชเช• เชจเชตเซ‹ เช‡เชจเซเชกเซ‡เช•เซเชธ เชฌเชจเชพเชตเซเชฏเซ‹ เช›เซ‡:

CREATE UNIQUE INDEX CONCURRENTLY uk_tablename__immediate ON tablename (id, index);
-- run pg_repack
DROP INDEX CONCURRENTLY uk_tablename__immediate;

เชชเชฐเซ€เช•เซเชทเชฃ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚, เช…เชฎเชจเซ‡ เชฎเชพเชคเซเชฐ เชฅเซ‹เชกเซ€ เช…เชชเซ‡เช•เซเชทเชฟเชค เชญเซ‚เชฒเซ‹ เชฎเชณเซ€ เช›เซ‡. เชธเชซเชณเชคเชพ! เช…เชฎเซ‡ เชซเชฐเซ€เชฅเซ€ เช‰เชคเซเชชเชพเชฆเชจ เชชเชฐ pg_repack เชšเชฒเชพเชตเซเชฏเซเช‚ เช…เชจเซ‡ เช•เชพเชฎเชจเชพ เชเช• เช•เชฒเชพเช•เชฎเชพเช‚ เชชเซเชฐเชฅเชฎ เช•เซเชฒเชธเซเชŸเชฐ เชชเชฐ 5 เชญเซ‚เชฒเซ‹ เชฎเชณเซ€. เช† เชธเซเชตเซ€เช•เชพเชฐเซเชฏ เชชเชฐเชฟเชฃเชพเชฎ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เชฌเซ€เชœเชพ เช•เซเชฒเชธเซเชŸเชฐ เชชเชฐ เชญเซ‚เชฒเซ‹เชจเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชจเซ‹เช‚เชงเชชเชพเชคเซเชฐ เชตเชงเชพเชฐเซ‹ เชฅเชฏเซ‹ เช›เซ‡ เช…เชจเซ‡ เช…เชฎเชพเชฐเซ‡ pg_repack เชฌเช‚เชง เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚.

เช•เซ‡เชฎ เชฅเชฏเซเช‚? เชญเซ‚เชฒ เชฅเชตเชพเชจเซ€ เชธเช‚เชญเชพเชตเชจเชพ เชเช• เชœ เชธเชฎเชฏเซ‡ เช•เซ‡เชŸเชฒเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชธเชฎเชพเชจ เชตเชฟเชœเซ‡เชŸเซเชธ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡. เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡, เชคเซ‡ เช•เซเชทเชฃเซ‡ เชชเซเชฐเชฅเชฎ เช•เซเชฒเชธเซเชŸเชฐ เชชเชฐ เชธเช‚เช—เซเชฐเชนเชฟเชค เชกเซ‡เชŸเชพ เชธเชพเชฅเซ‡ เช…เชจเซเชฏ เช•เชฐเชคเชพ เช˜เชฃเชพ เช“เช›เชพ เชธเซเชชเชฐเซเชงเชพเชคเซเชฎเช• เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชนเชคเชพ, เชเชŸเชฒเซ‡ เช•เซ‡. เช…เชฎเซ‡ เชซเช•เซเชค "เชจเชธเซ€เชฌเชฆเชพเชฐ" เชนเชคเชพ.

เชตเชฟเชšเชพเชฐ เช•เชพเชฎ เชจ เช†เชตเซเชฏเซ‹. เชคเซ‡ เชธเชฎเชฏเซ‡, เช…เชฎเซ‡ เชฌเซ‡ เช…เชจเซเชฏ เช‰เช•เซ‡เชฒเซ‹ เชœเซ‹เชฏเชพ: เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเชพ เชเชชเซเชฒเชฟเช•เซ‡เชถเชจ เช•เซ‹เชกเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเช–เซ‹, เช…เชฅเชตเชพ เชคเซ‡เชฎเชจเซ€ เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ pg_repack เชจเซ‡ "เชถเชฟเช–เชตเซ‹". เช…เชฎเซ‡ เชฌเซ€เชœเซ‹ เชชเชธเช‚เชฆ เช•เชฐเซเชฏเซ‹.

เชฎเซ‚เชณ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚เชฅเซ€ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹ เชธเชพเชฅเซ‡ เชจเชตเชพ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพเช“เชจเซ‡ เชฌเชฆเชฒเซ‹

เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจเชจเซ‹ เชนเซ‡เชคเซ เชธเซเชชเชทเซเชŸ เชนเชคเซ‹ - เชœเซ‹ เชฎเซ‚เชณ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชง เชนเซ‹เชฏ, เชคเซ‹ เชชเช›เซ€ เชจเชตเชพ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเซ‡ เช†เชตเซ€ เช…เชตเชฐเซ‹เชง เชฌเชจเชพเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซ‡ เช…เชจเซเช•เซเชฐเชฎเชฃเชฟเช•เชพ เชจเชนเซ€เช‚.

เช…เชฎเชพเชฐเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซ‡ เชšเช•เชพเชธเชตเชพ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชเช• เชธเชฐเชณ เช•เชธเซ‹เชŸเซ€ เชฒเช–เซ€ เช›เซ‡:

  • เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชง เช…เชจเซ‡ เชเช• เชฐเซ‡เช•เซ‹เชฐเซเชก เชธเชพเชฅเซ‡ เช•เซ‹เชทเซเชŸเช•;
  • เชฒเซ‚เชชเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชฆเชพเช–เชฒ เช•เชฐเซ‹ เชœเซ‡ เชนเชพเชฒเชจเชพ เชฐเซ‡เช•เซ‹เชฐเซเชก เชธเชพเชฅเซ‡ เชตเชฟเชฐเซ‹เชงเชพเชญเชพเชธเซ€ เช›เซ‡;
  • เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‹ - เชกเซ‡เชŸเชพ เชนเชตเซ‡ เชตเชฟเชฐเซ‹เชงเชพเชญเชพเชธเซ€ เชจเชฅเซ€;
  • เชซเซ‡เชฐเชซเชพเชฐเซ‹ เช•เชฐเซ‹.

create table test_table
(
  id serial,
  val int,
  constraint uk_test_table__val unique (val) deferrable initially deferred 
);

INSERT INTO test_table (val) VALUES (0);
FOR i IN 1..10000 LOOP
  BEGIN
    INSERT INTO test_table VALUES (0) RETURNING id INTO v_id;
    UPDATE test_table set val = i where id = v_id;
    COMMIT;
  END;
END LOOP;

pg_repack เชจเซเช‚ เชฎเซ‚เชณ เชธเช‚เชธเซเช•เชฐเชฃ เชนเช‚เชฎเซ‡เชถเชพ เชชเซเชฐเชฅเชฎ เชจเชฟเชตเซ‡เชถ เชชเชฐ เช•เซเชฐเซ‡เชถ เชฅเชพเชฏ เช›เซ‡, เชธเซเชงเชพเชฐเซ‡เชฒ เชธเช‚เชธเซเช•เชฐเชฃ เชญเซ‚เชฒเซ‹ เชตเชฟเชจเชพ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เชฎเชนเชพเชจ.

เช…เชฎเซ‡ เช‰เชคเซเชชเชพเชฆเชจ เชชเชฐ เชœเชˆเช เช›เซ€เช เช…เชจเซ‡ เชฒเซ‹เช— เชŸเซ‡เชฌเชฒเชฎเชพเช‚เชฅเซ€ เชจเชตเชพเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซ€ เชจเช•เชฒ เช•เชฐเชตเชพเชจเชพ เชธเชฎเชพเชจ เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เชซเชฐเซ€เชฅเซ€ เชญเซ‚เชฒ เชฎเซ‡เชณเชตเซ€เช เช›เซ€เช:

$ ./pg_repack -t tablename -o id
INFO: repacking table "tablename"
ERROR: query failed: 
    ERROR: duplicate key value violates unique constraint "index_16508"
DETAIL:  Key (id, index)=(100500, 42) already exists.

เช‰เชคเซเชคเชฎ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟ: เชฌเชงเซเช‚ เชชเชฐเซ€เช•เซเชทเชฃ เชตเชพเชคเชพเชตเชฐเชฃเชฎเชพเช‚ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เช‰เชคเซเชชเชพเชฆเชจเชฎเชพเช‚ เชจเชนเซ€เช‚?!

APPLY_COUNT เช…เชจเซ‡ เชฌเซ‡ เชฌเซ‡เชšเชจเซเช‚ เชœเช‚เช•เชถเชจ

เช…เชฎเซ‡ เช•เซ‹เชกเชจเซเช‚ เชถเชพเชฌเซเชฆเชฟเช• เชฐเซ€เชคเซ‡ เชชเช‚เช•เซเชคเชฟ เชฆเซเชตเชพเชฐเชพ เชชเซƒเชฅเซเชฅเช•เชฐเชฃ เช•เชฐเชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซเชฏเซเช‚ เช…เชจเซ‡ เชเช• เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชฎเซเชฆเซเชฆเซ‹ เชถเซ‹เชงเซ€ เช•เชพเชขเซเชฏเซ‹: เชกเซ‡เชŸเชพเชจเซ‡ เชฒเซ‹เช— เชŸเซ‡เชฌเชฒเชฎเชพเช‚เชฅเซ€ เชฌเซ‡เชšเชฎเชพเช‚ เชจเชตเชพเชฎเชพเช‚ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, APPLY_COUNT เชธเชคเชค เชฌเซ‡เชšเชจเซเช‚ เช•เชฆ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡:

for (;;)
{
num = apply_log(connection, table, APPLY_COUNT);

if (num > MIN_TUPLES_BEFORE_SWITCH)
     continue;  /* there might be still some tuples, repeat. */
...
}

เชธเชฎเชธเซเชฏเชพ เช เช›เซ‡ เช•เซ‡ เชฎเซ‚เชณ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจเชจเซ‹ เชกเซ‡เชŸเชพ, เชœเซ‡เชฎเชพเช‚ เช˜เชฃเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เชธเช‚เชญเชตเชฟเชคเชชเชฃเซ‡ เช…เชตเชฐเซ‹เชงเชจเซเช‚ เช‰เชฒเซเชฒเช‚เช˜เชจ เช•เชฐเซ€ เชถเช•เซ‡ เช›เซ‡, เชœเซเชฏเชพเชฐเซ‡ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เชฅเชพเชฏ เช›เซ‡, เชคเซเชฏเชพเชฐเซ‡ เชฌเซ‡ เชฌเซ‡เชšเชจเชพ เชœเช‚เช•เชถเชจ เชชเชฐ เชธเชฎเชพเชชเซเชค เชฅเชˆ เชถเช•เซ‡ เช›เซ‡ - เช…เชกเชงเชพ เช†เชฆเซ‡เชถเซ‹ เชชเซเชฐเชฅเชฎ เชฌเซ‡เชšเชฎเชพเช‚ เชชเซเชฐเชคเชฟเชฌเชฆเซเชง เชฅเชถเซ‡, เช…เชจเซ‡ เชฌเชพเช•เซ€เชจเชพ เช…เชกเชงเชพ เชฌเซ€เชœเชพเชฎเชพเช‚. เช…เชจเซ‡ เช…เชนเซ€เช‚, เชคเชฎเชพเชฐเชพ เชจเชธเซ€เชฌ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ€เชจเซ‡: เชœเซ‹ เชŸเซ€เชฎเซ‹ เชชเซเชฐเชฅเชฎ เชฌเซ‡เชšเชฎเชพเช‚ เช•เช‚เชˆเชชเชฃ เช‰เชฒเซเชฒเช‚เช˜เชจ เช•เชฐเชคเซ€ เชจเชฅเซ€, เชคเซ‹ เชฌเชงเซเช‚ เชธเชพเชฐเซเช‚ เช›เซ‡, เชชเชฐเช‚เชคเซ เชœเซ‹ เชคเซ‡เช“ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชเช• เชญเซ‚เชฒ เชฅเชพเชฏ เช›เซ‡.

APPLY_COUNT เช 1000 เชฐเซ‡เช•เซ‹เชฐเซเชกเซเชธเชจเซ€ เชฌเชฐเชพเชฌเชฐ เช›เซ‡, เชœเซ‡ เชธเชฎเชœเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชถเชพ เชฎเชพเชŸเซ‡ เช…เชฎเชพเชฐเชพ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชธเชซเชณ เชฅเชฏเชพ - เชคเซ‡ "เชฌเซ‡เชš เชœเช‚เช•เชถเชจ" เชจเชพ เช•เซ‡เชธเชจเซ‡ เช†เชตเชฐเซ€ เชฒเซ‡เชคเชพ เชจเชฅเซ€. เช…เชฎเซ‡ เชฌเซ‡ เช†เชฆเซ‡เชถเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ - เชฆเชพเช–เชฒ เช•เชฐเซ‹ เช…เชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ‹, เชคเซ‡เชฅเซ€ เชฌเซ‡ เช†เชฆเซ‡เชถเซ‹เชจเชพ เชฌเชฐเชพเชฌเชฐ 500 เชตเซเชฏเชตเชนเชพเชฐเซ‹ เชนเช‚เชฎเซ‡เชถเชพ เชฌเซ‡เชšเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ เช…เชจเซ‡ เช…เชฎเชจเซ‡ เช•เซ‹เชˆ เชธเชฎเชธเซเชฏเชพเชจเซ‹ เช…เชจเซเชญเชต เชฅเชฏเซ‹ เชจ เชนเชคเซ‹. เชฌเซ€เชœเซเช‚ เช…เชชเชกเซ‡เชŸ เช‰เชฎเซ‡เชฐเซเชฏเชพ เชชเช›เซ€, เช…เชฎเชพเชฐเซเช‚ เชธเช‚เชชเชพเชฆเชจ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเซ€ เชฆเซ€เชงเซเช‚:

FOR i IN 1..10000 LOOP
  BEGIN
    INSERT INTO test_table VALUES (1) RETURNING id INTO v_id;
    UPDATE test_table set val = i where id = v_id;
    UPDATE test_table set val = i where id = v_id; -- one more update
    COMMIT;
  END;
END LOOP;

เชคเซ‡เชฅเซ€, เช†เช—เชณเชจเซเช‚ เช•เชพเชฐเซเชฏ เช เชธเซเชจเชฟเชถเซเชšเชฟเชค เช•เชฐเชตเชพเชจเซเช‚ เช›เซ‡ เช•เซ‡ เชฎเซ‚เชณ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ, เชœเซ‡ เชเช• เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚ เชฌเชฆเชฒเชพเชฏเซ‹ เชนเชคเซ‹, เชคเซ‡ เชจเชตเชพ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เชชเชฃ เชเช• เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡.

เชฌเซ‡เชšเชฟเช‚เช—เชฎเชพเช‚เชฅเซ€ เช‡เชจเช•เชพเชฐ

เช…เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฌเซ‡ เช‰เช•เซ‡เชฒเซ‹ เชนเชคเชพ. เชชเซเชฐเชฅเชฎ: เชšเชพเชฒเซ‹ เชฌเซ‡เชšเชฎเชพเช‚ เชชเชพเชฐเซเชŸเซ€เชถเชจ เช•เชฐเชตเชพเชจเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช›เซ‹เชกเซ€ เชฆเชˆเช เช…เชจเซ‡ เชเช• เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚ เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เช•เชฐเซ€เช. เช† เชธเซ‹เชฒเซเชฏเซเชถเชจเชจเซ‹ เชซเชพเชฏเชฆเซ‹ เชคเซ‡เชจเซ€ เชธเชฐเชณเชคเชพ เชนเชคเซ‹ - เชœเชฐเซ‚เชฐเซ€ เช•เซ‹เชก เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชจเซเชฏเซ‚เชจเชคเชฎ เชนเชคเชพ (เชฎเชพเชฐเซเช— เชฆเซเชตเชพเชฐเชพ, เชœเซ‚เชจเชพ เชธเช‚เชธเซเช•เชฐเชฃเซ‹เชฎเชพเช‚ pg_reorg เชฌเชฐเชพเชฌเชฐ เชคเซ‡ เชœ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡). เชชเชฐเช‚เชคเซ เชคเซเชฏเชพเช‚ เชเช• เชธเชฎเชธเซเชฏเชพ เช›เซ‡ - เช…เชฎเซ‡ เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏเชฅเซ€ เชšเชพเชฒเชคเชพ เชตเซเชฏเชตเชนเชพเชฐเซ‹ เชฌเชจเชพเชตเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช, เช…เชจเซ‡ เช†, เช…เช—เชพเช‰ เช•เชนเซเชฏเซเช‚ เชคเซ‡เชฎ, เชจเชตเชพ เชซเซ‚เช—เชจเชพ เช‰เชฆเชญเชต เชฎเชพเชŸเซ‡ เช–เชคเชฐเซ‹ เช›เซ‡.

เชฌเซ€เชœเซ‹ เช‰เช•เซ‡เชฒ เชตเชงเซ เชœเชŸเชฟเชฒ เช›เซ‡, เชชเชฐเช‚เชคเซ เช•เชฆเชพเชš เชตเชงเซ เชธเชพเชšเซ‹ เช›เซ‡: เชŸเซ‡เชฌเชฒเชฎเชพเช‚ เชกเซ‡เชŸเชพ เช‰เชฎเซ‡เชฐเชคเชพ เชตเซเชฏเชตเชนเชพเชฐเชจเชพ เช“เชณเช–เช•เชฐเซเชคเชพ เชธเชพเชฅเซ‡ เชฒเซ‹เช— เชŸเซ‡เชฌเชฒเชฎเชพเช‚ เชเช• เช•เซ‰เชฒเชฎ เชฌเชจเชพเชตเซ‹. เชชเช›เซ€, เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชกเซ‡เชŸเชพ เช•เซ‰เชชเชฟ เช•เชฐเซ€เช เช›เซ€เช, เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเซ‡ เชคเซ‡เชจเซ‡ เช† เชตเชฟเชถเซ‡เชทเชคเชพ เชฆเซเชตเชพเชฐเชพ เชœเซ‚เชฅเชฌเชฆเซเชง เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เช…เชจเซ‡ เช–เชพเชคเชฐเซ€ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช เช•เซ‡ เชธเช‚เชฌเช‚เชงเชฟเชค เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชเช•เชธเชพเชฅเซ‡ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เชฅเชพเชฏ เช›เซ‡. เช† เชฌเซ‡เชš เช…เชจเซ‡เช• เชตเซเชฏเชตเชนเชพเชฐเซ‹ (เช…เชฅเชตเชพ เชเช• เชฎเซ‹เชŸเชพ)เชฎเชพเช‚เชฅเซ€ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡ เช…เชจเซ‡ เช† เชตเซเชฏเชตเชนเชพเชฐเซ‹เชฎเชพเช‚ เช•เซ‡เชŸเชฒเซ‹ เชกเซ‡เชŸเชพ เชฌเชฆเชฒเชพเชฏเซ‹ เช›เซ‡ เชคเซ‡เชจเชพ เช†เชงเชพเชฐเซ‡ เชคเซ‡เชจเซเช‚ เช•เชฆ เชฌเชฆเชฒเชพเชถเซ‡. เช เชจเซ‹เช‚เชงเชตเซเช‚ เช…เช—เชคเซเชฏเชจเซเช‚ เช›เซ‡ เช•เซ‡ เชตเชฟเชตเชฟเชง เชตเซเชฏเชตเชนเชพเชฐเซ‹เชฎเชพเช‚เชฅเซ€ เชกเซ‡เชŸเชพ เชฐเซ‡เชจเซเชกเชฎ เช•เซเชฐเชฎเชฎเชพเช‚ เชฒเซ‹เช— เชŸเซ‡เชฌเชฒเชฎเชพเช‚ เชฆเชพเช–เชฒ เชฅเชคเซ‹ เชนเซ‹เชตเชพเชฅเซ€, เชคเซ‡เชจเซ‡ เช…เชจเซเช•เซเชฐเชฎเซ‡ เชตเชพเช‚เชšเชตเชพเชจเซเช‚ เชนเชตเซ‡ เชถเช•เซเชฏ เชฌเชจเชถเซ‡ เชจเชนเซ€เช‚, เชœเซ‡เชฎ เชคเซ‡ เชชเชนเซ‡เชฒเชพ เชนเชคเซเช‚. tx_id เชฆเซเชตเชพเชฐเชพ เชซเชฟเชฒเซเชŸเชฐเชฟเช‚เช— เชธเชพเชฅเซ‡เชจเซ€ เชฆเชฐเซ‡เช• เชตเชฟเชจเช‚เชคเซ€ เชฎเชพเชŸเซ‡ seqscan เช–เซ‚เชฌ เช–เชฐเซเชšเชพเชณ เช›เซ‡, เชเช• เช‡เชจเซเชกเซ‡เช•เซเชธเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชจเซ‡ เช…เชชเชกเซ‡เชŸ เช•เชฐเชตเชพเชจเชพ เช“เชตเชฐเชนเซ‡เชกเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชคเซ‡ เชชเชฆเซเชงเชคเชฟเชจเซ‡ เชชเชฃ เชงเซ€เชฎเซ€ เช•เชฐเชถเซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชนเช‚เชฎเซ‡เชถเชจเซ€ เชœเซ‡เชฎ, เชคเชฎเชพเชฐเซ‡ เช•เช‚เชˆเช• เชฌเชฒเชฟเชฆเชพเชจ เช†เชชเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡.

เชคเซ‡เชฅเซ€, เช…เชฎเซ‡ เชชเซเชฐเชฅเชฎ เชตเชฟเช•เชฒเซเชช เชธเชพเชฅเซ‡ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เชธเชฐเชณ เช›เซ‡. เชชเซเชฐเชฅเชฎ, เชคเซ‡ เชธเชฎเชœเชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เชนเชคเซเช‚ เช•เซ‡ เชถเซเช‚ เชฒเชพเช‚เชฌเซ‹ เชตเซเชฏเชตเชนเชพเชฐ เชตเชพเชธเซเชคเชตเชฟเช• เชธเชฎเชธเซเชฏเชพ เชนเชถเซ‡. เชœเซ‚เชจเชพ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚เชฅเซ€ เชจเชตเชพเชฎเชพเช‚ เชกเซ‡เชŸเชพเชจเซเช‚ เชฎเซเช–เซเชฏ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เชชเชฃ เชเช• เชฒเชพเช‚เชฌเชพ เชŸเซเชฐเชพเชจเซเชเซ‡เช•เซเชถเชจเชฎเชพเช‚ เชฅเชคเซเช‚ เชนเซ‹เชตเชพเชฅเซ€, เชชเซเชฐเชถเซเชจ "เช†เชชเชฃเซ‡ เช† เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚ เช•เซ‡เชŸเชฒเซ‹ เชตเชงเชพเชฐเซ‹ เช•เชฐเซ€เชถเซเช‚?" เชชเซเชฐเชฅเชฎ เชตเซเชฏเชตเชนเชพเชฐเชจเซ‹ เชธเชฎเชฏเช—เชพเชณเซ‹ เชฎเซเช–เซเชฏเชคเซเชตเซ‡ เชŸเซ‡เชฌเชฒเชจเชพ เช•เชฆ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡. เชกเซ‡เชŸเชพ เชŸเซเชฐเชพเชจเซเชธเชซเชฐ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช•เซ‹เชทเซเชŸเช•เชฎเชพเช‚ เช•เซ‡เชŸเชฒเชพ เชซเซ‡เชฐเชซเชพเชฐเซ‹ เชเช•เช เชพ เชฅเชพเชฏ เช›เซ‡ เชคเซ‡เชจเชพ เชชเชฐ เชจเชตเชพเชจเซ‹ เชธเชฎเชฏเช—เชพเชณเซ‹ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡. เชญเชพเชฐเชจเซ€ เชคเซ€เชตเซเชฐเชคเชพ เชชเชฐ. pg_repack เชฐเชจ เชจเซเชฏเซ‚เชจเชคเชฎ เชธเซ‡เชตเชพ เชฒเซ‹เชกเชจเชพ เชธเชฎเชฏ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชฅเชฏเซเช‚ เชนเชคเซเช‚, เช…เชจเซ‡ เชซเซ‡เชฐเชซเชพเชฐเซ‹เชจเซเช‚ เชชเซเชฐเชฎเชพเชฃ เช•เซ‹เชทเซเชŸเช•เชจเชพ เชฎเซ‚เชณ เช•เชฆเชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€เชฎเชพเช‚ เช…เชชเซเชฐเชฎเชพเชฃเชธเชฐ เชฐเซ€เชคเซ‡ เชจเชพเชจเซเช‚ เชนเชคเซเช‚. เช…เชฎเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เช•เซ‡ เช…เชฎเซ‡ เชจเชตเชพ เชตเซเชฏเชตเชนเชพเชฐเชจเชพ เชธเชฎเชฏเชจเซ€ เช…เชตเช—เชฃเชจเชพ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช (เชธเชฐเช–เชพเชฎเชฃเซ€ เชฎเชพเชŸเซ‡, เชธเชฐเซ‡เชฐเชพเชถ เชคเซ‡ 1 เช•เชฒเชพเช• เช…เชจเซ‡ 2-3 เชฎเชฟเชจเชฟเชŸ เช›เซ‡).

เชชเซเชฐเชฏเซ‹เช—เซ‹ เชธเช•เชพเชฐเชพเชคเซเชฎเช• เชนเชคเชพ. เช‰เชคเซเชชเชพเชฆเชจ เชชเชฐ เชชเชฃ เชฒเซ‹เช‚เชš เช•เชฐเซ‹. เชธเซเชชเชทเซเชŸเชคเชพ เชฎเชพเชŸเซ‡, เช…เชนเซ€เช‚ เชšเชพเชฒเซเชฏเชพ เชชเช›เซ€ เชกเซ‡เชŸเชพเชฌเซ‡เชเชฎเชพเช‚เชฅเซ€ เชเช•เชจเชพ เช•เชฆ เชธเชพเชฅเซ‡เชจเซเช‚ เชšเชฟเชคเซเชฐ เช›เซ‡:

เชชเซ‹เชธเซเชŸเช—เซเชฐเซ‡เชธ: เชฌเซเชฒเซ‹เชŸ, pg_repack เช…เชจเซ‡ เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹

เช…เชฎเซ‡ เช† เช‰เช•เซ‡เชฒเชฅเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเช‚เชคเซเชทเซเชŸ เชนเซ‹เชตเชพเชฅเซ€, เช…เชฎเซ‡ เชฌเซ€เชœเชพเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจ เชกเซ‡เชตเชฒเชชเชฐเซเชธ เชธเชพเชฅเซ‡ เชคเซ‡เชจเซ€ เชšเชฐเซเชšเชพ เช•เชฐเชตเชพเชจเซ€ เชธเช‚เชญเชพเชตเชจเชพ เชชเชฐ เชตเชฟเชšเชพเชฐ เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เช›เซ€เช. เช…เชฎเชพเชฐเซเช‚ เชตเชฐเซเชคเชฎเชพเชจ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจ, เช•เชฎเชจเชธเซ€เชฌเซ‡, เชนเชœเซ เชธเซเชงเซ€ เชชเซเชฐเช•เชพเชถเชจ เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เช…เชฎเซ‡ เชซเช•เซเชค เช…เชจเชจเซเชฏ เชตเชฟเชฒเช‚เชฌเชฟเชค เชชเซเชฐเชคเชฟเชฌเช‚เชงเซ‹ เชธเชพเชฅเซ‡ เชธเชฎเชธเซเชฏเชพ เชนเชฒ เช•เชฐเซ€ เช›เซ‡, เช…เชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ เชชเซ‡เชš เชฎเชพเชŸเซ‡ เช…เชจเซเชฏ เชชเซเชฐเช•เชพเชฐเซ‹ เชฎเชพเชŸเซ‡ เชธเชฎเชฐเซเชฅเชจ เชชเซเชฐเชฆเชพเชจ เช•เชฐเชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡. เช…เชฎเชจเซ‡ เช†เชถเชพ เช›เซ‡ เช•เซ‡ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เช…เชฎเซ‡ เช† เช•เชฐเซ€ เชถเช•เซ€เชถเซเช‚.

เช•เชฆเชพเชš เชคเชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชชเซเชฐเชถเซเชจ เช›เซ‡, เชถเชพ เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ pg_repack เชจเชพ เชซเซ‡เชฐเชซเชพเชฐ เชธเชพเชฅเซ‡ เช† เชตเชพเชฐเซเชคเชพเชฎเชพเช‚ เชธเชพเชฎเซ‡เชฒ เชฅเชฏเชพ, เช…เชจเซ‡ เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเซ‡เชจเชพ เชเชจเชพเชฒเซ‹เช—เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเซ‹ เชจเชฅเซ€? เช…เชฎเซเช• เชธเชฎเชฏเซ‡ เช…เชฎเซ‡ เช† เชตเชฟเชถเซ‡ เชชเชฃ เชตเชฟเชšเชพเชฐเซเชฏเซเช‚ เชนเชคเซเช‚, เชชเชฐเช‚เชคเซ เช…เช—เชพเช‰, เชตเชฟเชฒเช‚เชฌเชฟเชค เช…เชตเชฐเซ‹เชงเซ‹ เชตเชฟเชจเชพ เชŸเซ‡เชฌเชฒ เชชเชฐ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเชพ เชธเช•เชพเชฐเชพเชคเซเชฎเช• เช…เชจเซเชญเชตเซ‡ เช…เชฎเชจเซ‡ เชธเชฎเชธเซเชฏเชพเชจเชพ เชธเชพเชฐเชจเซ‡ เชธเชฎเชœเชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เช เซ€เช• เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเชตเชพ เชชเซเชฐเซ‡เชฐเซเชฏเชพ. เชตเชงเซเชฎเชพเช‚, เช…เชจเซเชฏ เช‰เช•เซ‡เชฒเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเชฃ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชนเชพเชฅ เชงเชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเชฎเชฏเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เช…เชฎเซ‡ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เช•เซ‡ เช…เชฎเซ‡ เชชเชนเซ‡เชฒเชพ เชคเซ‡เชฎเชพเช‚ เชธเชฎเชธเซเชฏเชพเชจเซ‡ เช เซ€เช• เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€เชถเซเช‚, เช…เชจเซ‡ เชœเซ‹ เช…เชฎเชจเซ‡ เชธเชฎเชœเชพเชฏเซเช‚ เช•เซ‡ เช…เชฎเซ‡ เช† เชตเชพเชœเชฌเซ€ เชธเชฎเชฏเชฎเชพเช‚ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เชคเซ‹ เช…เชฎเซ‡ เชเชจเชพเชฒเซ‹เช— เชœเซ‹เชตเชพเชจเซเช‚ เชถเชฐเซ‚ เช•เชฐเซ€เชถเซเช‚. .

เชคเชพเชฐเชฃเซ‹

เช…เชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เช…เชจเซเชญเชตเชจเชพ เช†เชงเชพเชฐเซ‡ เช…เชฎเซ‡ เชถเซเช‚ เชญเชฒเชพเชฎเชฃ เช•เชฐเซ€ เชถเช•เซ€เช เช›เซ€เช:

  1. เชคเชฎเชพเชฐเชพ เชฌเซเชฒเซ‹เชŸเชจเซเช‚ เชจเชฟเชฐเซ€เช•เซเชทเชฃ เช•เชฐเซ‹. เชฎเซ‹เชจเชฟเชŸเชฐเชฟเช‚เช— เชกเซ‡เชŸเชพเชจเชพ เช†เชงเชพเชฐเซ‡, เชคเชฎเซ‡ เชธเชฎเชœเซ€ เชถเช•เซ‹ เช›เซ‹ เช•เซ‡ เช“เชŸเซ‹เชตเซ‡เช•เซเชฏเซเชฎ เช•เซ‡เชŸเชฒเซ€ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เช—เซ‹เช เชตเซ‡เชฒ เช›เซ‡.
  2. เชธเซเชตเชฟเช•เชพเชฐเซเชฏ เชธเซเชคเชฐ เชชเชฐ เชฌเซเชฒเซ‹เชŸ เชฐเชพเช–เชตเชพ เชฎเชพเชŸเซ‡ เช“เชŸเซ‹เชตเซ‡เช•เซเชฏเซเชฎเชจเซ‡ เชเชกเชœเชธเซเชŸ เช•เชฐเซ‹.
  3. เชœเซ‹ เชฌเซเชฒเซ‹เชŸ เชนเชœเซ€ เชชเชฃ เชตเชงเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡ เช…เชจเซ‡ เชคเชฎเซ‡ เช†เช‰เชŸ-เช“เชซ-เชง-เชฌเซ‹เช•เซเชธ เชธเชพเชงเชจเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชคเซ‡เชจเซ‡ เชฆเซ‚เชฐ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เชคเซ‹ เชฌเชพเชนเซเชฏ เชเช•เซเชธเซเชŸเซ‡เช‚เชถเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฅเซ€ เชกเชฐเชถเซ‹ เชจเชนเซ€เช‚. เชฎเซเช–เซเชฏ เชตเชธเซเชคเซ เช เช›เซ‡ เช•เซ‡ เชฌเชงเซเช‚ เชธเชพเชฐเซ€ เชฐเซ€เชคเซ‡ เชšเช•เชพเชธเชตเซเช‚.
  4. เชคเชฎเชพเชฐเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹เชจเซ‡ เช…เชจเซเชฐเซ‚เชช เชฌเชพเชนเซเชฏ เช‰เช•เซ‡เชฒเซ‹เชจเซ‡ เชธเช‚เชถเซ‹เชงเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เชกเชฐเชถเซ‹ เชจเชนเซ€เช‚ - เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เช† เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เช•เซ‹เชกเชจเซ‡ เชฌเชฆเชฒเชตเชพ เช•เชฐเชคเชพเช‚ เชตเชงเซ เช…เชธเชฐเช•เชพเชฐเช• เช…เชจเซ‡ เชธเชฐเชณ เชชเชฃ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹