เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ: เจฌเจฒเฉ‹เจŸ, pg_repack เจ…เจคเฉ‡ เจฎเฉเจฒเจคเจตเฉ€ เจฐเฉเจ•เจพเจตเจŸเจพเจ‚

เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ: เจฌเจฒเฉ‹เจŸ, pg_repack เจ…เจคเฉ‡ เจฎเฉเจฒเจคเจตเฉ€ เจฐเฉเจ•เจพเจตเจŸเจพเจ‚

เจŸเฉ‡เจฌเจฒ เจ…เจคเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• 'เจคเฉ‡ เจฌเจฒเฉ‹เจŸ เจฆเจพ เจชเฉเจฐเจญเจพเจต เจตเจฟเจ†เจชเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจœเจพเจฃเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจจเจพ เจธเจฟเจฐเจซ เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ เจตเจฟเฉฑเจš เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆเฅค เจ‡เจธ เจจเจพเจฒ เจฌเจพเจ•เจธ เจฆเฉ‡ เจฌเจพเจนเจฐ เจจเจœเจฟเฉฑเจ เจฃ เจฆเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจตเฉˆเจ•เจฟเจŠเจฎ เจซเฉเจฒ เจœเจพเจ‚ เจ•เจฒเฉฑเจธเจŸเจฐ, เจชเจฐ เจ‰เจน เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฆเฉŒเจฐเจพเจจ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ• เจ•เจฐ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจ เจ…เจคเฉ‡ เจ‡เจธเจฒเจˆ เจนเจฎเฉ‡เจธเจผเจพ เจตเจฐเจคเฉ‡ เจจเจนเฉ€เจ‚ เจœเจพ เจธเจ•เจฆเฉ‡เฅค

เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจฅเฉ‹เฉœเจพ เจœเจฟเจนเจพ เจธเจฟเจงเจพเจ‚เจค เจธเจผเจพเจฎเจฒ เจนเฉ‹เจตเฉ‡เจ—เจพ เจ•เจฟ เจฌเจฒเฉ‹เจŸ เจ•เจฟเจตเฉ‡เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจคเฉเจธเฉ€เจ‚ เจ‡เจธ เจจเจพเจฒ เจ•เจฟเจตเฉ‡เจ‚ เจฒเฉœ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจฎเฉเจฒเจคเจตเฉ€ เจฐเฉเจ•เจพเจตเจŸเจพเจ‚ เจ…เจคเฉ‡ pg_repack เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจตเจฟเฉฑเจš เจ‰เจน เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจฒเจฟเจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจเฅค

เจ‡เจน เจฒเฉ‡เจ– เจ†เจงเจพเจฐเจฟเจค เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆ เจฎเฉ‡เจฐเจพ เจญเจพเจธเจผเจฃ PgConf.Russia 2020 'เจคเฉ‡เฅค

เจฌเจฒเฉ‹เจŸ เจ•เจฟเจ‰เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ?

เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ เจ‡เฉฑเจ• เจฎเจฒเจŸเฉ€-เจตเจฐเจœเจผเจจ เจฎเจพเจกเจฒ 'เจคเฉ‡ เจ…เจงเจพเจฐเจค เจนเฉˆ (MVCC). เจ‡เจธเจฆเจพ เจธเจพเจฐ เจ‡เจน เจนเฉˆ เจ•เจฟ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจนเจฐเฉ‡เจ• เจ•เจคเจพเจฐ เจตเจฟเฉฑเจš เจ•เจˆ เจธเฉฐเจธเจ•เจฐเจฃ เจนเฉ‹ เจธเจ•เจฆเฉ‡ เจนเจจ, เจœเจฆเฉ‹เจ‚ เจ•เจฟ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจ‡เจนเจจเจพเจ‚ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจคเฉ‹เจ‚ เจตเฉฑเจง เจจเจนเฉ€เจ‚ เจฆเฉ‡เจ–เจฆเจพ, เจชเจฐ เจœเจผเจฐเฉ‚เจฐเฉ€ เจจเจนเฉ€เจ‚ เจ•เจฟ เจ‡เฉฑเจ•เฉ‹ เจนเฉ€ เจนเฉ‹เจตเฉ‡เฅค เจ‡เจน เจ•เจˆ เจŸเฉเจฐเจพเจ‚เจœเฉˆเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ 'เจคเฉ‡ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ•เฉ‹เจˆ เจชเฉเจฐเจญเจพเจต เจจเจนเฉ€เจ‚ เจชเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน เจธเจพเจฐเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจธเจŸเฉ‹เจฐ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ. เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจชเฉ‡เจœ เจฆเฉ‡ เจจเจพเจฒ เจชเฉฐเจจเฉ‡ เจฆเฉเจ†เจฐเจพ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจชเฉฐเจจเจพ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจกเจพเจŸเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจœเฉ‹ เจกเจฟเจธเจ• เจคเฉ‹เจ‚ เจชเฉœเฉเจนเจฟเจ† เจœเจพเจ‚ เจฒเจฟเจ–เจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ†เจ‰ เจ‡เจน เจธเจฎเจเจฃ เจฒเจˆ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ€ เจœเจฟเจนเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ เจตเฉ‡เจ–เฉ€เจ เจ•เจฟ เจ‡เจน เจ•เจฟเจตเฉ‡เจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจฎเฉฐเจจ เจฒเจ“ เจ•เจฟ เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€ เจนเฉˆ เจœเจฟเจธ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจ•เจˆ เจฐเจฟเจ•เจพเจฐเจก เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ‡ เจนเจจเฅค เจจเจตเจพเจ‚ เจกเฉ‡เจŸเจพ เจซเจพเจˆเจฒ เจฆเฉ‡ เจชเจนเจฟเจฒเฉ‡ เจชเฉฐเจจเฉ‡ เจตเจฟเฉฑเจš เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ‡เจ† เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจธเจพเจฐเจฃเฉ€ เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ. เจ‡เจน เจ•เจคเจพเจฐเจพเจ‚ เจฆเฉ‡ เจฒเจพเจˆเจต เจธเฉฐเจธเจ•เจฐเจฃ เจนเจจ เจœเฉ‹ เจ‡เฉฑเจ• เจตเจšเจจเจฌเฉฑเจงเจคเจพ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจนเฉ‹เจฐ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจฒเจˆ เจ‰เจชเจฒเจฌเจง เจนเจจ (เจธเจฐเจฒเจคเจพ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ‡เจน เจฎเฉฐเจจเจพเจ‚เจ—เฉ‡ เจ•เจฟ เจ†เจˆเจธเฉ‹เจฒเฉ‡เจธเจผเจจ เจชเฉฑเจงเจฐ เจฐเฉ€เจก เจ•เจฎเจฟเจŸเจฟเจก เจนเฉˆ)เฅค

เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ: เจฌเจฒเฉ‹เจŸ, pg_repack เจ…เจคเฉ‡ เจฎเฉเจฒเจคเจตเฉ€ เจฐเฉเจ•เจพเจตเจŸเจพเจ‚

เจ…เจธเฉ€เจ‚ เจซเจฟเจฐ เจ‡เฉฐเจฆเจฐเจพเจœเจผเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ‡เฉฑเจ• เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เฉ€เจคเจพ, เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจชเฉเจฐเจพเจฃเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจจเฉ‚เฉฐ เจนเฉเจฃ เจขเฉเจ•เจตเจพเจ‚ เจจเจนเฉ€เจ‚ เจฎเฉฐเจจเจฟเจ† เจ—เจฟเจ†เฅค

เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ: เจฌเจฒเฉ‹เจŸ, pg_repack เจ…เจคเฉ‡ เจฎเฉเจฒเจคเจตเฉ€ เจฐเฉเจ•เจพเจตเจŸเจพเจ‚

เจ•เจฆเจฎ-เจฆเจฐ-เจ•เจฆเจฎ, เจ•เจคเจพเจฐ เจฆเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจฎเจฟเจŸเจพเจ‰เจฃเจพ, เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจชเฉฐเจจเฉ‡ เจฆเฉ‡ เจจเจพเจฒ เจธเจฎเจพเจชเจค เจ•เฉ€เจคเจพ เจœเจฟเจธ เจตเจฟเฉฑเจš เจฒเจ—เจญเจ— เจ…เฉฑเจงเจพ เจกเฉ‡เจŸเจพ "เจ•เฉ‚เฉœเจพ" เจนเฉˆเฅค เจ‡เจน เจกเฉ‡เจŸเจพ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจฒเจˆ เจฆเจฟเจ–เจพเจˆ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ: เจฌเจฒเฉ‹เจŸ, pg_repack เจ…เจคเฉ‡ เจฎเฉเจฒเจคเจตเฉ€ เจฐเฉเจ•เจพเจตเจŸเจพเจ‚

เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ เจฆเฉ€ เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจนเฉˆ เจตเฉˆเจ•เฉ‚เจฎ, เจœเฉ‹ เจชเฉเจฐเจพเจฃเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจจเจตเฉ‡เจ‚ เจกเฉ‡เจŸเจพ เจฒเจˆ เจœเจ—เฉเจนเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจชเจฐ เจœเฉ‡ เจ‡เจน เจ•เจพเจซเจผเฉ€ เจนเจฎเจฒเจพเจตเจฐ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ เจœเจพเจ‚ เจนเฉ‹เจฐ เจŸเฉ‡เจฌเจฒ เจตเจฟเฉฑเจš เจ•เฉฐเจฎ เจ•เจฐเจจ เจตเจฟเฉฑเจš เจฐเฉเฉฑเจเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆ, เจคเจพเจ‚ "เจ•เฉ‚เฉœเจพ เจกเฉ‡เจŸเจพ" เจฐเจนเจฟเฉฐเจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจจเจตเฉ‡เจ‚ เจกเฉ‡เจŸเจพ เจฒเจˆ เจตเจพเจงเฉ‚ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเฉ€ เจชเจตเฉ‡เจ—เฉ€เฅค

เจ‡เจธ เจฒเจˆ เจธเจพเจกเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจตเจฟเฉฑเจš, เจ•เจฟเจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจธเจพเจฐเจฃเฉ€ เจตเจฟเฉฑเจš เจšเจพเจฐ เจชเฉฐเจจเฉ‡ เจนเฉ‹เจฃเจ—เฉ‡, เจชเจฐ เจ‡เจธเจฆเจพ เจ…เฉฑเจงเจพ เจนเจฟเฉฑเจธเจพ เจฒเจพเจˆเจต เจกเฉ‡เจŸเจพ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจœเจฆเฉ‹เจ‚ เจธเจพเจฐเจฃเฉ€ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจฒเฉ‹เฉœ เจจเจพเจฒเฉ‹เจ‚ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจกเฉ‡เจŸเจพ เจชเฉœเฉเจนเจพเจ‚เจ—เฉ‡เฅค

เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ: เจฌเจฒเฉ‹เจŸ, pg_repack เจ…เจคเฉ‡ เจฎเฉเจฒเจคเจตเฉ€ เจฐเฉเจ•เจพเจตเจŸเจพเจ‚

เจญเจพเจตเฉ‡เจ‚ VACUUM เจนเฉเจฃ เจธเจพเจฐเฉ‡ เจ…เจชเฉเจฐเจธเฉฐเจ—เจฟเจ• เจ•เจคเจพเจฐ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ, เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจจเจพเจŸเจ•เฉ€ เจธเฉเจงเจพเจฐ เจจเจนเฉ€เจ‚ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจจเจตเฉ€เจ‚เจ†เจ‚ เจ•เจคเจพเจฐเจพเจ‚ เจฒเจˆ เจชเฉฐเจจเจฟเจ†เจ‚ เจœเจพเจ‚ เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจชเฉ‚เจฐเฉ‡ เจชเฉฐเจจเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจ–เจพเจฒเฉ€ เจฅเจพเจ‚ เจนเฉ‹เจตเฉ‡เจ—เฉ€, เจชเจฐ เจ…เจธเฉ€เจ‚ เจซเจฟเจฐ เจตเฉ€ เจฒเฉ‹เฉœ เจคเฉ‹เจ‚ เจตเฉฑเจง เจกเจพเจŸเจพ เจชเฉœเฉเจน เจฐเจนเฉ‡ เจนเฉ‹เจตเจพเจ‚เจ—เฉ‡เฅค
เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ, เจœเฉ‡เจ•เจฐ เจ‡เฉฑเจ• เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ–เจพเจฒเฉ€ เจชเฉฐเจจเจพ (เจธเจพเจกเฉ€ เจ‰เจฆเจพเจนเจฐเจฃ เจตเจฟเฉฑเจš เจฆเฉ‚เจœเจพ) เจซเจพเจˆเจฒ เจฆเฉ‡ เจ…เฉฐเจค เจตเจฟเฉฑเจš เจนเฉเฉฐเจฆเจพ, เจคเจพเจ‚ เจตเฉˆเจ•เจฏเฉ‚เจฎ เจ‡เจธเจจเฉ‚เฉฐ เจŸเฉเจฐเจฟเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจตเฉ‡เจ—เจพ. เจชเจฐ เจนเฉเจฃ เจ‰เจน เจตเจฟเจšเจ•เจพเจฐ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจ‰เจธ เจจเจพเจฒ เจ•เฉเจ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพเฅค

เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ: เจฌเจฒเฉ‹เจŸ, pg_repack เจ…เจคเฉ‡ เจฎเฉเจฒเจคเจตเฉ€ เจฐเฉเจ•เจพเจตเจŸเจพเจ‚

เจœเจฆเฉ‹เจ‚ เจ…เจœเจฟเจนเฉ‡ เจ–เจพเจฒเฉ€ เจœเจพเจ‚ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจธเจชเจพเจฐเจธ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเฉฑเจกเฉ€ เจนเฉ‹ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจœเจฟเจธ เจจเฉ‚เฉฐ เจฌเจฒเฉ‹เจŸ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ‡เจน เจ•เจพเจฐเจ—เฉเจœเจผเจพเจฐเฉ€ เจจเฉ‚เฉฐ เจชเฉเจฐเจญเจพเจตเจฟเจค เจ•เจฐเจจเจพ เจธเจผเฉเจฐเฉ‚ เจ•เจฐ เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

เจ‰เฉฑเจชเจฐ เจฆเฉฑเจธเฉ€ เจ—เจˆ เจนเจฐ เจšเฉ€เจœเจผ เจŸเฉ‡เจฌเจฒ เจตเจฟเฉฑเจš เจฌเจฒเฉ‹เจŸ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจ—เฉ€ เจฆเจพ เจฎเจ•เฉˆเจจเจฟเจ• เจนเฉˆ. เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจตเจฟเฉฑเจš เจ‡เจน เจฌเจนเฉเจค เจ•เฉเจ เจ‡เจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆเฅค

เจ•เฉ€ เจฎเฉˆเจจเฉ‚เฉฐ เจฌเจฒเฉ‹เจŸ เจนเฉˆ?

เจ‡เจน เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ‡ เจ•เจˆ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจ เจ•เจฟ เจ•เฉ€ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฌเจฒเฉ‹เจŸ เจนเฉˆเฅค เจธเจญ เจคเฉ‹เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจฆเจพ เจตเจฟเจšเจพเจฐ เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ เจ…เฉฐเจ•เฉœเจฟเจ†เจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจนเฉˆ, เจœเจฟเจธ เจตเจฟเฉฑเจš เจŸเฉ‡เจฌเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจ•เจคเจพเจฐเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ†, "เจฒเจพเจˆเจต" เจ•เจคเจพเจฐเจพเจ‚ เจฆเฉ€ เจธเฉฐเจ–เจฟเจ†, เจ†เจฆเจฟ เจฌเจพเจฐเฉ‡ เจฒเจ—เจญเจ— เจœเจพเจฃเจ•เจพเจฐเฉ€ เจธเจผเจพเจฎเจฒ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค เจคเฉเจธเฉ€เจ‚ เจ‡เฉฐเจŸเจฐเจจเฉˆเจŸ 'เจคเฉ‡ เจคเจฟเจ†เจฐ-เจ•เฉ€เจคเฉ€ เจธเจ•เฉเจฐเจฟเจชเจŸเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจญเจฟเฉฐเจจเจคเจพเจตเจพเจ‚ เจฒเฉฑเจญ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ…เจธเฉ€เจ‚ เจ‡เฉฑเจ• เจ…เจงเจพเจฐ เจตเจœเฉ‹เจ‚ เจฒเจฟเจ† เจธเจ•เฉเจฐเจฟเจชเจŸ PostgreSQL เจฎเจพเจนเจฐเจพเจ‚ เจคเฉ‹เจ‚, เจœเฉ‹ เจŸเฉ‹เจธเจŸ เจ…เจคเฉ‡ เจฌเจฒเฉ‹เจŸ เจฌเฉ€เจŸเจฐเฉ€ เจ‡เฉฐเจกเฉˆเจ•เจธ เจฆเฉ‡ เจจเจพเจฒ เจฌเจฒเฉ‹เจŸ เจŸเฉ‡เจฌเจฒ เจฆเจพ เจฎเฉเจฒเจพเจ‚เจ•เจฃ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจธเจพเจกเฉ‡ เจ…เจจเฉเจญเจต เจตเจฟเฉฑเจš, เจ‡เจธเจฆเฉ€ เจ—เจฒเจคเฉ€ 10-20% เจนเฉˆ.

เจ‡เจ• เจนเฉ‹เจฐ เจคเจฐเฉ€เจ•เจพ เจนเฉˆ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ pgstattuple, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉฐเจจเจฟเจ†เจ‚ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจฆเฉ‡เจ–เจฃ เจ…เจคเฉ‡ เจ…เฉฐเจฆเจพเจœเจผเจจ เจ…เจคเฉ‡ เจธเจนเฉ€ เจฌเจฒเฉ‹เจŸ เจฎเฉเฉฑเจฒ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจชเจฐ เจฆเฉ‚เจœเฉ‡ เจ•เฉ‡เจธ เจตเจฟเฉฑเจš, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ€ เจธเจพเจฐเจฃเฉ€ เจจเฉ‚เฉฐ เจธเจ•เฉˆเจจ เจ•เจฐเจจเจพ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจ…เจธเฉ€เจ‚ 20% เจคเฉฑเจ•, เจ‡เฉฑเจ• เจ›เฉ‹เจŸเจพ เจฌเจฒเฉ‹เจŸ เจฎเฉเฉฑเจฒ เจฎเฉฐเจจเจฆเฉ‡ เจนเจพเจ‚, เจธเจตเฉ€เจ•เจพเจฐเจฏเฉ‹เจ— เจนเฉˆเฅค เจฒเจˆ เจซเจฟเจฒเจซเฉˆเจ•เจŸเจฐ เจฆเจพ เจเจจเจพเจฒเจพเจ— เจฎเฉฐเจจเจฟเจ† เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ เจŸเฉ‡เจฌเจฒ ะธ เจธเฉ‚เจšเจ•เจพเจ‚เจ•. 50% เจ…เจคเฉ‡ เจ‡เจธ เจคเฉ‹เจ‚ เจตเฉฑเจง, เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹ เจธเจ•เจฆเฉ€เจ†เจ‚ เจนเจจเฅค

เจฌเจฒเฉ‹เจŸ เจฆเจพ เจฎเฉเจ•เจพเจฌเจฒเจพ เจ•เจฐเจจ เจฆเฉ‡ เจคเจฐเฉ€เจ•เฉ‡

เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ เจ•เฉ‹เจฒ เจฌเจ•เจธเฉ‡ เจฆเฉ‡ เจฌเจพเจนเจฐ เจฌเจฒเฉ‹เจŸ เจจเจพเจฒ เจจเจœเจฟเฉฑเจ เจฃ เจฆเฉ‡ เจ•เจˆ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจ, เจชเจฐ เจ‰เจน เจนเจฎเฉ‡เจธเจผเจพ เจนเจฐ เจ•เจฟเจธเฉ‡ เจฒเจˆ เจขเฉเจ•เจตเฉ‡เจ‚ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเฉ‡เฅค

เจ†เจŸเฉ‹เจตเฉˆเจ•เจฟเจŠเจฎ เจจเฉ‚เฉฐ เจ•เฉŒเจ‚เจซเจฟเจ—เจฐ เจ•เจฐเฉ‹ เจคเจพเจ‚ เจ•เจฟ เจฌเจฒเฉ‹เจŸ เจจเจพ เจนเฉ‹เจตเฉ‡. เจœเจพเจ‚ เจนเฉ‹เจฐ เจธเจนเฉ€ เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจ‡เจธเจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ‡ เจฒเจˆ เจธเจตเฉ€เจ•เจพเจฐเจฏเฉ‹เจ— เจชเฉฑเจงเจฐ 'เจคเฉ‡ เจฐเฉฑเจ–เจฃ เจฒเจˆเฅค เจ‡เจน "เจ•เจชเจคเจพเจจ เจฆเฉ€" เจธเจฒเจพเจน เจตเจพเจ‚เจ— เจœเจพเจชเจฆเจพ เจนเฉˆ, เจชเจฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ‡เจน เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจนเจฎเฉ‡เจธเจผเจพ เจ†เจธเจพเจจ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ. เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจกเจพเจŸเจพ เจธเจ•เฉ€เจฎเจพ เจตเจฟเฉฑเจš เจจเจฟเจฏเจฎเจค เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจฆเฉ‡ เจจเจพเจฒ เจธเจฐเจ—เจฐเจฎ เจตเจฟเจ•เจพเจธ เจนเฉˆ, เจœเจพเจ‚ เจ•เจฟเจธเฉ‡ เจ•เจฟเจธเจฎ เจฆเจพ เจกเฉ‡เจŸเจพ เจฎเจพเจˆเจ—เจฐเฉ‡เจธเจผเจจ เจนเฉ‹ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚, เจคเฉเจนเจพเจกเจพ เจฒเฉ‹เจก เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจ…เจ•เจธเจฐ เจฌเจฆเจฒ เจธเจ•เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจŸเฉ‡เจฌเจฒ เจคเฉ‹เจ‚ เจŸเฉ‡เจฌเจฒ เจคเฉฑเจ• เจตเฉฑเจ–เจฐเจพ เจนเฉ‹เจตเฉ‡เจ—เจพเฅค เจ‡เจธเจฆเจพ เจฎเจคเจฒเจฌ เจนเฉˆ เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเจ—เจพเจคเจพเจฐ เจฅเฉ‹เฉœเจพ เจ…เฉฑเจ—เฉ‡ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ เจ…เจคเฉ‡ เจนเจฐเฉ‡เจ• เจŸเฉ‡เจฌเจฒ เจฆเฉ‡ เจฌเจฆเจฒเจฆเฉ‡ เจนเฉ‹เจ เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจ†เจŸเฉ‹เจตเฉˆเจ•เจฟเจŠเจฎ เจจเฉ‚เฉฐ เจ…เจจเฉเจ•เฉ‚เจฒ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจชเจฐ เจธเจชเฉฑเจธเจผเจŸ เจนเฉˆ เจ•เจฟ เจ‡เจน เจ•เจฐเจจเจพ เจ†เจธเจพเจจ เจจเจนเฉ€เจ‚ เจนเฉˆ.

เจ‡เฉฑเจ• เจนเฉ‹เจฐ เจ†เจฎ เจ•เจพเจฐเจจ เจนเฉˆ เจ•เจฟ เจ†เจŸเฉ‹เจตเฉˆเจ•เจฟเจŠเจฎ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจœเจพเจฐเฉ€ เจจเจนเฉ€เจ‚ เจฐเฉฑเจ– เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจšเฉฑเจฒ เจฐเจนเฉ‡ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจนเจจ เจœเฉ‹ เจ‡เจธเจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจฒเจˆ เจ‰เจชเจฒเจฌเจง เจกเฉ‡เจŸเจพ เจจเฉ‚เฉฐ เจธเจพเจซเจผ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฐเฉ‹เจ•เจฆเฉ‡ เจนเจจเฅค เจ‡เฉฑเจฅเฉ‡ เจธเจฟเจซเจผเจพเจฐเจฟเจธเจผ เจตเฉ€ เจธเจชเฉฑเจธเจผเจŸ เจนเฉˆ - "เจฒเจŸเจ•เจฃ เจตเจพเจฒเฉ‡" เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจคเฉ‹เจ‚ เจ›เฉเจŸเจ•เจพเจฐเจพ เจชเจพเจ“ เจ…เจคเฉ‡ เจ•เจฟเจฐเจฟเจ†เจธเจผเฉ€เจฒ เจฒเฉˆเจฃ-เจฆเฉ‡เจฃ เจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจจเฉ‚เฉฐ เจ˜เฉฑเจŸ เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ เจ•เจฐเฉ‹เฅค เจชเจฐ เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ 'เจคเฉ‡ เจฒเฉ‹เจก OLAP เจ…เจคเฉ‡ OLTP เจฆเจพ เจ‡เฉฑเจ• เจนเจพเจˆเจฌเฉเจฐเจฟเจก เจนเฉˆ, เจคเจพเจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจ•เจˆ เจตเจพเจฐ-เจตเจพเจฐ เจ…เฉฑเจชเจกเฉ‡เจŸ เจ…เจคเฉ‡ เจ›เฉ‹เจŸเฉ€เจ†เจ‚ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›เจพเจ‚ เจฆเฉ‡ เจจเจพเจฒ-เจจเจพเจฒ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ - เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจฐเจฟเจชเฉ‹เจฐเจŸ เจฌเจฃเจพเจ‰เจฃเจพเฅค เจ…เจœเจฟเจนเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจฒเฉ‹เจก เจจเฉ‚เฉฐ เจตเฉฑเจ–-เจตเฉฑเจ– เจ…เจงเจพเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจซเฉˆเจฒเจพเจ‰เจฃ เจฌเจพเจฐเฉ‡ เจธเฉ‹เจšเจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจฃ เจนเฉˆ, เจœเฉ‹ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐเฉ‡เจ• เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจตเจงเฉ€เจ†-เจŸเจฟเจŠเจจเจฟเฉฐเจ— เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเฉ‡เจตเฉ‡เจ—เจพเฅค

เจ‡เจ• เจนเฉ‹เจฐ เจ‰เจฆเจพเจนเจฐเจจ - เจญเจพเจตเฉ‡เจ‚ เจชเฉเจฐเฉ‹เจซเจพเจˆเจฒ เจธเจฎเจฐเฉ‚เจช เจนเฉˆ, เจชเจฐ เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจฒเฉ‹เจก เจฆเฉ‡ เจ…เจงเฉ€เจจ เจนเฉˆ, เจซเจฟเจฐ เจตเฉ€ เจธเจญ เจคเฉ‹เจ‚ เจตเฉฑเจง เจนเจฎเจฒเจพเจตเจฐ เจ†เจŸเฉ‹เจตเฉˆเจ•เจฏเฉ‚เจฎ เจฆเจพ เจฎเฉเจ•เจพเจฌเจฒเจพ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจฌเจฒเฉ‹เจŸ เจนเฉ‹ เจœเจพเจตเฉ‡เจ—เจพ. เจธเจ•เฉ‡เจฒเจฟเฉฐเจ— (เจฒเฉฐเจฌเจ•เจพเจฐเฉ€ เจœเจพเจ‚ เจ–เจฟเจคเจฟเจœเฉ€) เจ‡เฉฑเจ•เฉ‹ เจ‡เฉฑเจ• เจนเฉฑเจฒ เจนเฉˆเฅค

เจ…เจœเจฟเจนเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš เจ•เฉ€ เจ•เจฐเจจเจพ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ†เจŸเฉ‹เจตเฉˆเจ•เจฟเจŠเจฎ เจธเจฅเจพเจชเจค เจ•เฉ€เจคเจพ เจนเฉˆ, เจชเจฐ เจฌเจฒเฉ‹เจŸ เจตเจงเจฃเจพ เจœเจพเจฐเฉ€ เจนเฉˆเฅค

เจฆเฉ€ เจŸเฉ€เจฎ เจตเฉˆเจ•เจฟเจŠเจฎ เจซเฉเจฒ เจŸเฉ‡เจฌเจฒ เจ…เจคเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเฉ€ เจธเจฎเฉฑเจ—เจฐเฉ€ เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจš เจธเจฟเจฐเจซเจผ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจกเฉ‡เจŸเจพ เจ›เฉฑเจกเจฆเจพ เจนเฉˆเฅค เจฌเจฒเฉ‹เจŸ เจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐเจจ เจฒเจˆ, เจ‡เจน เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เจธเจฆเฉ‡ เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจฆเฉŒเจฐเจพเจจ เจŸเฉ‡เจฌเจฒ 'เจคเฉ‡ เจ‡เฉฑเจ• เจจเจฟเจตเฉ‡เจ•เจฒเจพ เจฒเฉŒเจ• เจ•เฉˆเจชเจšเจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ (AccessExclusiveLock), เจœเฉ‹ เจ•เจฟ เจ‡เจธ เจŸเฉ‡เจฌเจฒ 'เจคเฉ‡ เจธเจตเจพเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจจเจนเฉ€เจ‚ เจฆเฉ‡เจตเฉ‡เจ—เจพ, เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจšเฉ‹เจฃ เจตเฉ€ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ€ เจธเฉ‡เจตเจพ เจœเจพเจ‚ เจ‡เจธ เจฆเฉ‡ เจ•เฉเจ เจนเจฟเฉฑเจธเฉ‡ เจจเฉ‚เฉฐ เจ•เฉเจ เจธเจฎเฉ‡เจ‚ เจฒเจˆ เจฌเฉฐเจฆ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ (เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจ…เจคเฉ‡ เจคเฉเจนเจพเจกเฉ‡ เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ เจฆเฉ‡ เจ†เจ•เจพเจฐ เจฆเฉ‡ เจ…เจงเจพเจฐ 'เจคเฉ‡ เจฆเจธเจพเจ‚ เจฎเจฟเฉฐเจŸเจพเจ‚ เจคเฉ‹เจ‚ เจ•เจˆ เจ˜เฉฐเจŸเจฟเจ†เจ‚ เจคเฉฑเจ•), เจคเจพเจ‚ เจ‡เจน เจตเจฟเจ•เจฒเจช เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจนเฉˆเฅค เจฌเจฆเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ…เจจเฉเจธเฉ‚เจšเจฟเจค เจฐเฉฑเจ–-เจฐเจ–เจพเจ… เจฆเฉŒเจฐเจพเจจ เจตเฉˆเจ•เจฟเจŠเจฎ เจซเฉเจฒ เจšเจฒเจพเจ‰เจฃ เจฆเจพ เจธเจฎเจพเจ‚ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจ‡เจน เจคเจฐเฉ€เจ•เจพ เจธเจพเจกเฉ‡ เจฒเจˆ เจขเฉเจ•เจตเจพเจ‚ เจจเจนเฉ€เจ‚ เจนเฉˆเฅค

เจฆเฉ€ เจŸเฉ€เจฎ เจ•เจฒเฉฑเจธเจŸเจฐ เจŸเฉ‡เจฌเจฒเจพเจ‚ เจฆเฉ€ เจธเจฎเจ—เจฐเฉ€ เจจเฉ‚เฉฐ เจตเฉˆเจ•เจฟเจŠเจฎ เจซเฉเจฒ เจตเจพเจ‚เจ— เจนเฉ€ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ, เจชเจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ เจœเจฟเจธ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ เจกเจฟเจธเจ• 'เจคเฉ‡ เจกเจพเจŸเจพ เจญเฉŒเจคเจฟเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ†เจฐเจกเจฐ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ (เจชเจฐ เจญเจตเจฟเฉฑเจ– เจตเจฟเฉฑเจš เจจเจตเฉ€เจ†เจ‚ เจ•เจคเจพเจฐเจพเจ‚ เจฒเจˆ เจ†เจฐเจกเจฐ เจฆเฉ€ เจ—เจฐเฉฐเจŸเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ)เฅค เจ•เฉเจ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš, เจ‡เจน เจ•เจˆ เจธเจตเจพเจฒเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจตเจงเฉ€เจ† เจ…เจจเฉเจ•เฉ‚เจฒเจคเจพ เจนเฉˆ - เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเฉเจ†เจฐเจพ เจ•เจˆ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉœเฉเจนเจจ เจฆเฉ‡ เจจเจพเจฒเฅค เจ•เจฎเจพเจ‚เจก เจฆเจพ เจจเฉเจ•เจธเจพเจจ เจตเฉˆเจ•เจฟเจŠเจฎ เจซเฉเจฒ เจฆเฉ‡ เจธเจฎเจพเจจ เจนเฉˆ - เจ‡เจน เจ“เจชเจฐเฉ‡เจธเจผเจจ เจฆเฉŒเจฐเจพเจจ เจŸเฉ‡เจฌเจฒ เจจเฉ‚เฉฐ เจฒเฉŒเจ• เจ•เจฐเจฆเจพ เจนเฉˆเฅค

เจฆเฉ€ เจŸเฉ€เจฎ REINDEX เจชเจฟเจ›เจฒเฉ‡ เจฆเฉ‹ เจฆเฉ‡ เจธเจฎเจพเจจ, เจชเจฐ เจ‡เฉฑเจ• เจ–เจพเจธ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจœเจพเจ‚ เจธเจพเจฐเจฃเฉ€ เจฆเฉ‡ เจธเจพเจฐเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค เจคเจพเจฒเฉ‡ เจฅเฉ‹เฉœเฉเจนเฉ‡ เจ•เจฎเจœเจผเฉ‹เจฐ เจนเจจ: เจŸเฉ‡เจฌเจฒ 'เจคเฉ‡ ShareLock (เจธเฉ‹เจงเจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฆเจพ เจนเฉˆ, เจชเจฐ เจšเฉ‹เจฃ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ) เจ…เจคเฉ‡ เจฎเฉเฉœ-เจฌเจฃเจพเจ เจœเจพ เจฐเจนเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• 'เจคเฉ‡ AccessExclusiveLock (เจ‡เจธ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจธเจตเจพเจฒเจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เจฆเจพ เจนเฉˆ)เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจชเฉ‹เจธเจŸเจ—เฉเจฐเฉ‡เจธ เจฆเฉ‡ 12 เจตเฉ‡เจ‚ เจธเฉฐเจธเจ•เจฐเจฃ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉˆเจฐเจพเจฎเฉ€เจŸเจฐ เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ‡เจ† เจธเจฎเจ•เจพเจฒเฉ€, เจœเฉ‹ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฐเจฟเจ•เจพเจฐเจกเจพเจ‚ เจฆเฉ‡ เจธเจฎเจ•เจพเจฒเฉ€ เจœเฉ‹เฉœ, เจธเฉ‹เจง, เจœเจพเจ‚ เจฎเจฟเจŸเจพเจ‰เจฃ เจจเฉ‚เฉฐ เจฐเฉ‹เจ•เฉ‡ เจฌเจฟเจจเจพเจ‚ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค

Postgres เจฆเฉ‡ เจชเฉเจฐเจพเจฃเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃเจพเจ‚ เจตเจฟเฉฑเจš, เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจจเจคเฉ€เจœเฉ‡ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ REINDEX CONCURRENTLY เจฆเฉ‡ เจธเจฎเจพเจจ เจชเฉเจฐเจพเจชเจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ‡เฉฐเจกเฉˆเจ•เจธ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจฌเจฃเจพเจ“. เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจ–เจค เจฒเจพเจ•เจฟเฉฐเจ— เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ‡เฉฑเจ• เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจฆเจฟเฉฐเจฆเจพ เจนเฉˆ (ShareUpdateExclusiveLock, เจœเฉ‹ เจธเจฎเจพเจจเจพเจ‚เจคเจฐ เจชเฉเฉฑเจ›เจ—เจฟเฉฑเจ›เจพเจ‚ เจตเจฟเฉฑเจš เจฆเจ–เจฒ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเจพ), เจซเจฟเจฐ เจชเฉเจฐเจพเจฃเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ เจจเจพเจฒ เจฌเจฆเจฒเฉ‹ เจ…เจคเฉ‡ เจชเฉเจฐเจพเจฃเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพเจ“เฅค เจ‡เจน เจคเฉเจนเจพเจจเฉ‚เฉฐ เจคเฉเจนเจพเจกเฉ€ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจฆเจ–เจฒ เจฆเจฟเฉฑเจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ‡เฉฐเจกเฉˆเจ•เจธ เจฌเจฒเฉ‹เจŸ เจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐเจจ เจฆเฉ€ เจ†เจ—เจฟเจ† เจฆเจฟเฉฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน เจตเจฟเจšเจพเจฐ เจ•เจฐเจจเจพ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ เจ•เจฟ เจœเจฆเฉ‹เจ‚ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจจเฉ‚เฉฐ เจฎเฉเฉœ เจฌเจฃเจพเจ‰เจฃเจพ เจนเฉˆ เจคเจพเจ‚ เจกเจฟเจธเจ• เจธเจฌ-เจธเจฟเจธเจŸเจฎ 'เจคเฉ‡ เจ‡เฉฑเจ• เจตเจพเจงเฉ‚ เจฒเฉ‹เจก เจนเฉ‹เจตเฉ‡เจ—เจพเฅค

เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚, เจœเฉ‡เจ•เจฐ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฒเจˆ "เจ‰เฉฑเจกเฉ€ เจ‰เฉฑเจคเฉ‡" เจฌเจฒเฉŒเจŸ เจจเฉ‚เฉฐ เจ–เจคเจฎ เจ•เจฐเจจ เจฆเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจนเจจ, เจคเจพเจ‚ เจŸเฉ‡เจฌเจฒ เจฒเจˆ เจ•เฉ‹เจˆ เจตเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ. เจ‡เจน เจ‰เจน เจฅเจพเจ‚ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจฌเจพเจนเจฐเฉ€ เจเจ•เจธเจŸเฉˆเจ‚เจธเจผเจจเจพเจ‚ เจ–เฉ‡เจก เจตเจฟเฉฑเจš เจ†เจ‰เจ‚เจฆเฉ€เจ†เจ‚ เจนเจจ: pg_repack (เจชเจนเจฟเจฒเจพเจ‚ pg_reorg), pgcompact, pgcompacttable เจ…เจคเฉ‡ เจนเฉ‹เจฐ. เจ‡เจธ เจฒเฉ‡เจ– เจตเจฟเจš, เจฎเฉˆเจ‚ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจคเฉเจฒเจจเจพ เจจเจนเฉ€เจ‚ เจ•เจฐเจพเจ‚เจ—เจพ เจ…เจคเฉ‡ เจธเจฟเจฐเจซ 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 เจฆเฉเจ†เจฐเจพ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€เฅค เจ‡เจธเจฆเฉ€ เจฐเจšเจจเจพ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจ—เฉเจฃเจพเจ‚ เจฆเฉ‡ เจ…เจงเจพเจฐ 'เจคเฉ‡, เจ…เจธเฉ€เจ‚ "เจธเจพเจกเฉ€" เจฐเฉเจ•เจพเจตเจŸ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ€ เจนเฉˆ เจœเฉ‹ เจ‡เจธเจฆเฉ‡ เจจเจพเจฒ เจฎเฉ‡เจฒ เจ–เจพเจ‚เจฆเฉ€ เจนเฉˆเฅค เจธเจฎเฉฑเจธเจฟเจ† เจ‡เจน เจจเจฟเจ•เจฒเฉ€ เจ•เจฟ เจ‡เจน เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ†เจฎ เจธเฉ€เจฎเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจ‡เฉฑเจ• เจฎเฉเจฒเจคเจตเฉ€ (เจฎเฉเจฒเจคเจตเฉ€ เจชเจพเจฌเฉฐเจฆเฉ€), i.e. เจ‡เจธเจฆเฉ€ เจคเจธเจฆเฉ€เจ• 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

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