Postgres: bloat, pg_repack, deferred constraints

เดŸเต‡เดฌเดฟเดณเตเด•เดณเดฟเดฒเตเด‚ เดธเต‚เดšเดฟเด•เด•เดณเดฟเดฒเตเด‚ เดฌเตเดฒเต‹เดŸเตเดŸเดฟเตปเตเดฑเต† เดชเตเดฐเดญเดพเดตเด‚ เดตเตเดฏเดพเดชเด•เดฎเดพเดฏเดฟ เด…เดฑเดฟเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเต, เด‡เดคเต เดชเต‹เดธเตเดฑเตเดฑเตโ€Œเด—เตเดฐเต‡เดธเดฟเตฝ เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ. VACUUM FULL เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ CLUSTER เดชเต‹เดฒเตเดณเตเดณ เดฌเต‹เด•เตโ€Œเดธเดฟเดจเต เดชเตเดฑเดคเตเดคเต เด‡เดคเต เด•เตˆเด•เดพเดฐเตเดฏเด‚ เดšเต†เดฏเตเดฏเดพเดจเตเดณเตเดณ เดตเดดเดฟเด•เดณเตเดฃเตเดŸเต, เดชเด•เตเดทเต‡ เด…เดต เดชเตเดฐเดตเตผเดคเตเดคเดจ เดธเดฎเดฏเดคเตเดคเต เดชเดŸเตเดŸเดฟเด•เด•เตพ เดฒเต‹เด•เตเด•เต เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เด…เดคเดฟเดจเดพเตฝ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.

เดตเดฏเดฑเตเดตเต‡เดฆเดจ เดŽเด™เตเด™เดจเต† เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเดฟเดจเต† เดŽเด™เตเด™เดจเต† เดšเต†เดฑเตเด•เตเด•เดพเด‚, เดฎเดพเดฑเตเดฑเดฟเดตเต†เดšเตเดš เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ, pg_repack เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเตฝ เด…เดต เด•เตŠเดฃเตเดŸเตเดตเดฐเตเดจเตเดจ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เดŽเดจเตเดจเดฟเดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดธเดฟเดฆเตเดงเดพเดจเตเดคเด‚ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚.

เดŽเดจเตเดจเดคเดฟเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเดพเดฃเต เดˆ เดฒเต‡เด–เดจเด‚ เดŽเดดเตเดคเดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเต เดŽเดจเตเดฑเต† เดชเตเดฐเดธเด‚เด—เด‚ PgConf.Russia 2020-เตฝ.

เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดตเต€เด•เตเด•เด‚ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต?

Postgres เด’เดฐเต เดฎเตพเดŸเตเดŸเดฟ-เดชเดคเดฟเดชเตเดชเต เดฎเต‹เดกเดฒเดฟเดจเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟเดฏเตเดณเตเดณเดคเดพเดฃเต (เดŽเด‚.เดตเดฟ.เดธเดฟ.เดธเดฟ). เด…เดคเดฟเดจเตเดฑเต† เดธเดพเดฐเดพเด‚เดถเด‚, เดชเดŸเตเดŸเดฟเด•เดฏเดฟเดฒเต† เด“เดฐเต‹ เดตเดฐเดฟเดฏเดฟเดฒเตเด‚ เดจเดฟเดฐเดตเดงเดฟ เดชเดคเดฟเดชเตเดชเตเด•เตพ เด‰เดฃเตเดŸเดพเด•เดพเด‚, เด…เดคเต‡เดธเดฎเดฏเด‚ เด‡เดŸเดชเดพเดŸเตเด•เตพ เดˆ เดชเดคเดฟเดชเตเดชเตเด•เดณเดฟเตฝ เด’เดจเตเดจเดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เด•เดพเดฃเดฟเดฒเตเดฒ, เดŽเดจเตเดจเดพเตฝ เด’เดฐเต‡ เด’เดจเตเดจเดพเดฏเดฟเดฐเดฟเด•เตเด•เดฃเดฎเต†เดจเตเดจเดฟเดฒเตเดฒ. เด‡เดคเต เดจเดฟเดฐเดตเดงเดฟ เด‡เดŸเดชเดพเดŸเตเด•เตพ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเดจเตเด‚ เดชเดฐเดธเตเดชเดฐเด‚ เดซเดฒเดคเตเดคเดฟเตฝ เดฏเดพเดคเตŠเดฐเต เดธเตเดตเดพเดงเต€เดจเดตเตเด‚ เดšเต†เดฒเตเดคเตเดคเดพเดคเดฟเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เดตเตเดฏเด•เตเดคเดฎเดพเดฏเตเด‚, เดˆ เดชเดคเดฟเดชเตเดชเตเด•เดณเต†เดฒเตเดฒเดพเด‚ เดธเต‚เด•เตเดทเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต. เดชเต‹เดธเตเดฑเตเดฑเตโ€Œเด—เตเดฐเต†เดธเต เด“เดฐเต‹ เดชเต‡เดœเตเด‚ เดฎเต†เดฎเตเดฎเดฑเดฟเดฏเดฟเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดกเดฟเดธเตเด•เดฟเตฝ เดจเดฟเดจเตเดจเต‹ เดŽเดดเตเดคเตเดจเตเดจเดคเดฟเดจเต‹ เดตเดพเดฏเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ เดเดฑเตเดฑเดตเตเด‚ เด•เตเดฑเดžเตเดž เดกเดพเดฑเตเดฑเดฏเดพเดฃเต เดชเต‡เดœเต. เด‡เดคเต เดŽเด™เตเด™เดจเต† เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป เด’เดฐเต เดšเต†เดฑเดฟเดฏ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดจเต‹เด•เตเด•เดพเด‚.

เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดŸเต‡เดฌเดฟเตพ เด‰เดฃเตเดŸเต†เดจเตเดจเต เดชเดฑเดฏเดพเด‚, เด…เดคเดฟเตฝ เดžเด™เตเด™เตพ เดจเดฟเดฐเดตเดงเดฟ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดšเต‡เตผเดคเตเดคเดฟเดŸเตเดŸเตเดฃเตเดŸเต. เดชเดŸเตเดŸเดฟเด• เดธเด‚เดญเดฐเดฟเดšเตเดšเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจ เดซเดฏเดฒเดฟเตปเตเดฑเต† เด†เดฆเตเดฏ เดชเต‡เดœเดฟเตฝ เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเต. เด’เดฐเต เด•เดฎเตเดฎเดฟเดฑเตเดฑเดฟเดจเต เดถเต‡เดทเด‚ เดฎเดฑเตเดฑเต เด‡เดŸเดชเดพเดŸเตเด•เตพเด•เตเด•เต เดฒเดญเตเดฏเดฎเดพเด•เตเดจเตเดจ เดตเดฐเดฟเด•เดณเตเดŸเต† เดคเดคเตเดธเดฎเดฏ เดชเดคเดฟเดชเตเดชเตเด•เดณเดพเดฃเดฟเดคเต (เดฒเดพเดณเดฟเดคเตเดฏเดคเตเดคเดฟเดจเต, เดเดธเตŠเดฒเต‡เดทเตป เดฒเต†เดตเตฝ เดฑเต€เดกเต เด•เดฎเตเดฎเดฟเดฑเตเดฑเดกเต เด†เดฃเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เตเด‚).

Postgres: bloat, pg_repack, deferred constraints

เดคเตเดŸเตผเดจเตเดจเต เดžเด™เตเด™เตพ เดŽเตปเดŸเตเดฐเดฟเด•เดณเดฟเดฒเตŠเดจเตเดจเต เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเตเดšเต†เดฏเตโ€Œเดคเต, เด…เดคเตเดตเดดเดฟ เดชเดดเดฏ เดชเดคเดฟเดชเตเดชเต เดชเตเดฐเดธเด•เตเดคเดฎเดฒเตเดฒเต†เดจเตเดจเต เด…เดŸเดฏเดพเดณเดชเตเดชเต†เดŸเตเดคเตเดคเดฟ.

Postgres: bloat, pg_repack, deferred constraints

เด˜เดŸเตเดŸเด‚ เด˜เดŸเตเดŸเดฎเดพเดฏเดฟ, เดตเดฐเดฟ เดชเดคเดฟเดชเตเดชเตเด•เตพ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเตเด•เตŠเดฃเตเดŸเต, เดเด•เดฆเต‡เดถเด‚ เดชเด•เตเดคเดฟ เดกเดพเดฑเตเดฑเดฏเตเด‚ โ€œเดฎเดพเดฒเดฟเดจเตเดฏเด™เตเด™เตพโ€ เด‰เดณเตเดณ เด’เดฐเต เดชเต‡เดœเดฟเตฝ เดžเด™เตเด™เตพ เด…เดตเดธเดพเดจเดฟเดšเตเดšเต. เดˆ เดกเดพเดฑเตเดฑ เด’เดฐเต เด‡เดŸเดชเดพเดŸเดฟเดจเตเด‚ เดฆเตƒเดถเตเดฏเดฎเดฒเตเดฒ.

Postgres: bloat, pg_repack, deferred constraints

เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต‡เดธเดฟเดจเต เด’เดฐเต เดธเด‚เดตเดฟเดงเดพเดจเดฎเตเดฃเตเดŸเต VACUUM, เด•เดพเดฒเดนเดฐเดฃเดชเตเดชเต†เดŸเตเดŸ เดชเดคเดฟเดชเตเดชเตเด•เตพ เดตเตƒเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเด•เดฏเตเด‚ เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑเดฏเตเด•เตเด•เต เด‡เดŸเด‚ เดจเตฝเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เดตเต‡เดฃเตเดŸเดคเตเดฐ เด†เด•เตเดฐเดฎเดฃเดพเดคเตเดฎเด•เดฎเดพเดฏเดฟ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดคเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเดฒเต‹ เดฎเดฑเตเดฑเต เดŸเต‡เดฌเดฟเดณเตเด•เดณเดฟเตฝ เดœเต‹เดฒเดฟ เดšเต†เดฏเตเดฏเตเดจเตเดจ เดคเดฟเดฐเด•เตเด•เดฟเดฒเดพเดฃเต†เด™เตเด•เดฟเดฒเต‹, "เด—เดพเตผเดฌเต‡เดœเต เดกเดพเดฑเตเดฑ" เด…เดตเดถเต‡เดทเดฟเด•เตเด•เตเดจเตเดจเต, เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑเดฏเตเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพ เด…เดงเดฟเด• เดชเต‡เดœเตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต.

เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเตฝ, เดšเดฟเดฒ เดธเดฎเดฏเด™เตเด™เดณเดฟเตฝ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดจเดพเดฒเต เดชเต‡เดœเตเด•เตพ เด‰เดฃเตเดŸเดพเด•เตเด‚, เดŽเดจเตเดจเดพเตฝ เด…เดคเดฟเตฝ เดชเด•เตเดคเดฟ เดฎเดพเดคเตเดฐเดฎเต‡ เดคเดคเตเดธเดฎเดฏ เดกเดพเดฑเตเดฑ เด‰เตพเด•เตเด•เตŠเดณเตเดณเต‚. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เดชเตเดฐเดตเต‡เดถเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เด†เดตเดถเตเดฏเดฎเตเดณเตเดณเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เด•เต‚เดŸเตเดคเตฝ เดกเดพเดฑเตเดฑ เดžเด™เตเด™เตพ เดตเดพเดฏเดฟเด•เตเด•เตเด‚.

Postgres: bloat, pg_repack, deferred constraints

เด…เดชเตเดฐเดธเด•เตเดคเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เดตเดฐเดฟ เดชเดคเดฟเดชเตเดชเตเด•เดณเตเด‚ VACUUM เด‡เดชเตเดชเต‹เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดฟเดฏเดพเดฒเตเด‚ เดธเตเดฅเดฟเดคเดฟเด—เดคเดฟเด•เตพ เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เดฎเต†เดšเตเดšเดชเตเดชเต†เดŸเดฟเดฒเตเดฒ. เดชเตเดคเดฟเดฏ เดตเดฐเดฟเด•เตพเด•เตเด•เดพเดฏเดฟ เดžเด™เตเด™เตพเด•เตเด•เต เดชเต‡เดœเตเด•เดณเดฟเดฒเต‹ เดฎเตเดดเตเดตเตป เดชเต‡เดœเตเด•เดณเดฟเดฒเต‹ เดถเต‚เดจเตเดฏเดฎเดพเดฏ เด‡เดŸเด‚ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเดฟเด•เตเด•เตเด‚, เดŽเดจเตเดจเดพเตฝ เด†เดตเดถเตเดฏเดคเตเดคเดฟเดฒเดงเดฟเด•เด‚ เดกเดพเดฑเตเดฑ เดžเด™เตเด™เตพ เดคเตเดŸเตผเดจเตเดจเตเด‚ เดตเดพเดฏเดฟเด•เตเด•เตเด‚.
เดตเดดเดฟเดฏเดฟเตฝ, เดซเดฏเดฒเดฟเตปเตเดฑเต† เด…เดตเดธเดพเดจเดญเดพเด—เดคเตเดคเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดถเต‚เดจเตเดฏเดฎเดพเดฏ เดชเต‡เดœเต (เดžเด™เตเด™เดณเตเดŸเต† เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดฒเต† เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต) เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, VACUUM-เดจเต เด…เดคเต เดŸเตเดฐเดฟเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด‚. เดŽเดจเตเดจเดพเตฝ เด‡เดชเตเดชเต‹เตพ เด…เดตเตพ เดจเดŸเตเดตเดฟเดฒเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เด…เดตเดณเต† เด’เดจเตเดจเตเด‚ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ.

Postgres: bloat, pg_repack, deferred constraints

เด…เดคเตเดคเดฐเด‚ เดถเต‚เดจเตเดฏเดฎเดพเดฏ เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดตเดณเดฐเต† เดตเดฟเดฐเดณเดฎเดพเดฏ เดชเต‡เดœเตเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดตเดฒเตเดคเดพเด•เตเดฎเตเดชเต‹เตพ, เด…เดคเดฟเดจเต† เดฌเตเดฒเต‹เดŸเตเดŸเต เดŽเดจเตเดจเต เดตเดฟเดณเดฟเด•เตเด•เตเดจเตเดจเต, เด…เดคเต เดชเตเดฐเด•เดŸเดจเดคเตเดคเต† เดฌเดพเดงเดฟเด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเดจเตเดจเต.

เดฎเตเด•เดณเดฟเตฝ เดตเดฟเดตเดฐเดฟเดšเตเดšเดคเต†เดฒเตเดฒเดพเด‚ เดชเดŸเตเดŸเดฟเด•เด•เดณเดฟเตฝ เดฌเตเดฒเดพเดฑเตเดฑเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดฎเต†เด•เตเด•เดพเดจเดฟเด•เตเดธเดพเดฃเต. เดธเต‚เดšเดฟเด•เด•เดณเดฟเตฝ เด‡เดคเต เดเดคเดพเดฃเตเดŸเต เดธเดฎเดพเดจเดฎเดพเดฏ เดฐเต€เดคเดฟเดฏเดฟเตฝ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเต.

เดŽเดจเดฟเด•เตเด•เต เดตเดฏเดฑเตเดตเต‡เดฆเดจ เด‰เดฃเตเดŸเต‹?

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดตเดฏเดฑเตเดตเต‡เดฆเดจเดฏเตเดฃเตเดŸเต‹ เดŽเดจเตเดจเต เดจเดฟเตผเดฃเตเดฃเดฏเดฟเด•เตเด•เดพเตป เดจเดฟเดฐเดตเดงเดฟ เดฎเดพเตผเด—เด™เตเด™เดณเตเดฃเตเดŸเต. เด†เดฆเตเดฏเดคเตเดคเต‡เดคเดฟเดจเตเดฑเต† เด†เดถเดฏเด‚ เด†เดจเตเดคเดฐเดฟเด• Postgres เดธเตเดฅเดฟเดคเดฟเดตเดฟเดตเดฐเด•เตเด•เดฃเด•เตเด•เตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต, เด…เดคเดฟเตฝ เดชเดŸเตเดŸเดฟเด•เด•เดณเดฟเดฒเต† เดตเดฐเดฟเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚, "เดคเดคเตเดธเดฎเดฏ" เดตเดฐเดฟเด•เดณเตเดŸเต† เดŽเดฃเตเดฃเด‚ เดฎเตเดคเดฒเดพเดฏเดตเดฏเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดเด•เดฆเต‡เดถ เดตเดฟเดตเดฐเด™เตเด™เตพ เด…เดŸเด™เตเด™เดฟเดฏเดฟเดฐเดฟเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด‡เดจเตเดฑเตผเดจเต†เดฑเตเดฑเดฟเตฝ เดฑเต†เดกเดฟเดฎเต†เดฏเตเดกเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเตเด•เดณเตเดŸเต† เดจเดฟเดฐเดตเดงเดฟ เดตเตเดฏเดคเดฟเดฏเดพเดจเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเดพเด•เตเด‚. เดžเด™เตเด™เตพ เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเดฏเดฟ เดŽเดŸเตเดคเตเดคเต เดธเตเด•เตเดฐเดฟเดชเตเดฑเตเดฑเต Toast, bloat btree เดธเต‚เดšเดฟเด•เด•เตพเด•เตเด•เตŠเดชเตเดชเด‚ เดฌเตเดฒเต‹เดŸเตเดŸเต เดŸเต‡เดฌเดฟเดณเตเด•เตพ เดตเดฟเดฒเดฏเดฟเดฐเตเดคเตเดคเดพเตป เด•เดดเดฟเดฏเตเดจเตเดจ PostgreSQL เดตเดฟเดฆเด—เตเดงเดฐเดฟเตฝ เดจเดฟเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เด…เดจเตเดญเดตเดคเตเดคเดฟเตฝ, เด…เดคเดฟเดจเตเดฑเต† เดชเดฟเดถเด•เต 10-20% เด†เดฃเต.

เดฎเดฑเตเดฑเตŠเดฐเต เดฎเดพเตผเด—เด‚ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต pgstattuple, เด‡เดคเต เดชเต‡เดœเตเด•เตพเด•เตเด•เตเดณเตเดณเดฟเตฝ เดจเต‹เด•เตเด•เดพเดจเตเด‚ เด•เดฃเด•เตเด•เดพเด•เตเด•เดฟเดฏเดคเตเด‚ เด•เตƒเดคเตเดฏเดฎเดพเดฏ เดฌเตเดฒเต‹เดŸเตเดŸเต เดฎเต‚เดฒเตเดฏเดตเตเด‚ เดจเต‡เดŸเดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดจเดฟเด™เตเด™เตพ เดฎเตเดดเตเดตเตป เดชเดŸเตเดŸเดฟเด•เดฏเตเด‚ เดธเตเด•เดพเตป เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดฟเดตเดฐเตเด‚.

20% เดตเดฐเต† เดธเตเดตเต€เด•เดพเดฐเตเดฏเดฎเดพเดฏ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดฌเตเดฒเต‹เดŸเตเดŸเต เดฎเต‚เดฒเตเดฏเด‚ เดžเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเต. เดซเดฟเตฝเดซเดพเด•เตเดŸเดฑเดฟเดจเตเดฑเต† เด…เดจเดฒเต‹เด—เต เด†เดฏเดฟ เด‡เดคเดฟเดจเต† เด•เดฃเด•เตเด•เดพเด•เตเด•เดพเด‚ เดชเดŸเตเดŸเดฟเด•เด•เตพ ะธ เดธเต‚เดšเดฟเด•เด•เตพ. 50%-เด‰เด‚ เด…เดคเดฟเดจเตเดฎเตเด•เดณเดฟเดฒเตเด‚, เดชเตเดฐเด•เดŸเดจ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เด†เดฐเด‚เดญเดฟเด•เตเด•เดพเด‚.

เดตเดฏเดฑเตเดตเต‡เดฆเดจเดฏเต† เดšเต†เดฑเตเด•เตเด•เดพเดจเตเดณเตเดณ เดตเดดเดฟเด•เตพ

เดชเต‹เดธเตโ€Œเดฑเตเดฑเตโ€Œเด—เตเดฐเต‡เดธเดฟเดจเต เดฌเต‹เด•เตโ€Œเดธเต เด”เดŸเตเดŸเต เด“เดซเต เดฌเต‹เด•เตโ€Œเดธเต เดจเต‡เดฐเดฟเดŸเดพเตป เดจเดฟเดฐเดตเดงเดฟ เดฎเดพเตผเด—เด™เตเด™เดณเตเดฃเตเดŸเต, เดชเด•เตเดทเต‡ เด…เดต เดŽเดฒเตเดฒเดพเดฏเตโ€Œเดชเตเดชเต‹เดดเตเด‚ เดŽเดฒเตเดฒเดพเดตเตผเด•เตเด•เตเด‚ เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดฒเตเดฒ.

เดตเต€เตผเดชเตเดชเตเดฎเตเดŸเตเดŸเตฝ เด‰เดฃเตเดŸเดพเด•เดพเดคเดฟเดฐเดฟเด•เตเด•เดพเตป AUTOVACUUM เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเด•. เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด•เต‚เดŸเตเดคเตฝ เด•เตƒเดคเตเดฏเดฎเดพเดฏเดฟ เดชเดฑเดžเตเดžเดพเตฝ, เด…เดคเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเตเดตเต€เด•เดพเดฐเตเดฏเดฎเดพเดฏ เด’เดฐเต เดคเดฒเดคเตเดคเดฟเตฝ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดพเตป. เด‡เดคเต "เด•เตเดฏเดพเดชเตเดฑเตเดฑเดจเตเดฑเต†" เด‰เดชเดฆเต‡เดถเด‚ เดชเต‹เดฒเต† เดคเต‹เดจเตเดจเตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดตเดพเดธเตเดคเดตเดคเตเดคเดฟเตฝ เด‡เดคเต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดจเต‡เดŸเดพเตป เดŽเดณเตเดชเตเดชเดฎเดฒเตเดฒ. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดกเดพเดฑเตเดฑเดพ เดธเตเด•เต€เดฎเดฏเดฟเดฒเต† เดชเดคเดฟเดตเต เดฎเดพเดฑเตเดฑเด™เตเด™เดณเต‹เดŸเต† เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดธเดœเต€เดตเดฎเดพเดฏ เดตเดฟเด•เดธเดจเด‚ เด‰เดฃเตเดŸเต, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดเดคเต†เด™เตเด•เดฟเดฒเตเด‚ เดคเดฐเดคเตเดคเดฟเดฒเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดฎเตˆเด—เตเดฐเต‡เดทเตป เดจเดŸเด•เตเด•เตเดจเตเดจเต. เดคเตฝเดซเดฒเดฎเดพเดฏเดฟ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดฒเต‹เดกเต เดชเตเดฐเตŠเดซเตˆเตฝ เด‡เดŸเดฏเตโ€Œเด•เตเด•เดฟเดŸเต† เดฎเดพเดฑเดฟเดฏเต‡เด•เตเด•เดพเด‚, เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เด“เดฐเต‹ เดŸเต‡เดฌเดฟเดณเดฟเดจเตเด‚ เดตเตเดฏเดคเตเดฏเดพเดธเดฎเตเดฃเตเดŸเดพเด•เตเด‚. เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚ เดจเดฟเด™เตเด™เตพ เดจเดฟเดฐเดจเตเดคเดฐเด‚ เด•เตเดฑเดšเตเดšเต เดฎเตเดจเตเดจเต‹เดŸเตเดŸเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด“เดฐเต‹ เดŸเต‡เดฌเดฟเดณเดฟเดจเตเดฑเต†เดฏเตเด‚ เดฎเดพเดฑเตเดจเตเดจ เดชเตเดฐเตŠเดซเตˆเดฒเดฟเดฒเต‡เด•เตเด•เต AUTOVACUUM เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเต‡เดฃเด‚. เดŽเดจเตเดจเดพเตฝ เด‡เดคเต เดšเต†เดฏเตเดฏเดพเตป เดŽเดณเตเดชเตเดชเดฎเดฒเตเดฒเต†เดจเตเดจเต เดตเตเดฏเด•เตเดคเด‚.

AUTOVACUUM-เดจเต เดชเดŸเตเดŸเดฟเด•เด•เตพ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดพเตป เด•เดดเดฟเดฏเดพเดคเตเดคเดคเดฟเตปเตเดฑเต† เดฎเดฑเตเดฑเตŠเดฐเต เดชเตŠเดคเต เด•เดพเดฐเดฃเด‚, เด† เด‡เดŸเดชเดพเดŸเตเด•เตพเด•เตเด•เต เดฒเดญเตเดฏเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดตเตƒเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเดจเตเดจเดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดคเดŸเดฏเตเดจเตเดจ เดฆเต€เตผเด˜เด•เดพเดฒ เด‡เดŸเดชเดพเดŸเตเด•เตพ เด‰เดณเตเดณเดคเดฟเดจเดพเดฒเดพเดฃเต. เด‡เดตเดฟเดŸเต†เดฏเตเดณเตเดณ เดถเตเดชเดพเตผเดถเดฏเตเด‚ เดตเตเดฏเด•เตเดคเดฎเดพเดฃเต - "เดคเต‚เด™เตเด™เดฟเด•เตเด•เดฟเดŸเด•เตเด•เตเดจเตเดจ" เด‡เดŸเดชเดพเดŸเตเด•เตพ เด’เดดเดฟเดตเดพเด•เตเด•เตเด•เดฏเตเด‚ เดธเดœเต€เดต เด‡เดŸเดชเดพเดŸเตเด•เดณเตเดŸเต† เดธเดฎเดฏเด‚ เด•เตเดฑเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด•. เดŽเดจเตเดจเดพเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเดฒเต† เดฒเต‹เดกเต OLAP, OLTP เดŽเดจเตเดจเดฟเดตเดฏเตเดŸเต† เดนเตˆเดฌเตเดฐเดฟเดกเต เด†เดฃเต†เด™เตเด•เดฟเตฝ, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต‡เดธเดฎเดฏเด‚ เดจเดฟเดฐเดตเดงเดฟ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเตเด•เดณเตเด‚ เดนเตเดฐเดธเตเดต เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เดณเตเด‚ เดฆเต€เตผเด˜เด•เดพเดฒ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเด‚ เดจเดŸเดคเตเดคเดพเด‚ - เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด’เดฐเต เดฑเดฟเดชเตเดชเต‹เตผเดŸเตเดŸเต เดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•. เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดตเตเดฏเดคเตเดฏเดธเตเดค เด…เดŸเดฟเดคเตเดคเดฑเด•เดณเดฟเดฒเตเดŸเดจเต€เดณเด‚ เดฒเต‹เดกเต เดตเตเดฏเดพเดชเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดšเดฟเดจเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต เดฎเต‚เดฒเตเดฏเดตเดคเตเดคเดพเดฃเต, เด…เดคเต เด…เดตเดฏเดฟเตฝ เด“เดฐเต‹เดจเตเดจเดฟเดจเตเด‚ เด•เต‚เดŸเตเดคเตฝ เดธเต‚เด•เตเดทเตเดฎเดฎเดพเดฏเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเด‚.

เดฎเดฑเตเดฑเตŠเดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ - เดชเตเดฐเตŠเดซเตˆเตฝ เดเด•เดคเดพเดจเดฎเดพเดฃเต†เด™เตเด•เดฟเดฒเตเด‚, เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเต เดตเดณเดฐเต† เด‰เดฏเตผเดจเตเดจ เดฒเต‹เดกเดฟเดจเต เด•เต€เดดเดฟเดฒเดพเดฃเต†เด™เตเด•เดฟเตฝ เดชเต‹เดฒเตเด‚, เดเดฑเตเดฑเดตเตเด‚ เด†เด•เตเดฐเดฎเดฃเดพเดคเตเดฎเด•เดฎเดพเดฏ AUTOVACUUM เดชเต‹เดฒเตเด‚ เดจเต‡เดฐเดฟเดŸเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เด’เดชเตเดชเด‚ เดตเต€เด•เตเด•เด‚ เดธเด‚เดญเดตเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดธเตเด•เต†เดฏเดฟเดฒเดฟเด‚เด—เต (เดฒเด‚เดฌเดฎเต‹ เดคเดฟเดฐเดถเตเดšเต€เดจเดฎเต‹) เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดชเดฐเดฟเดนเดพเดฐเด‚.

เดจเดฟเด™เตเด™เตพ AUTOVACUUM เดธเดœเตเดœเต€เด•เดฐเดฟเดšเตเดš เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ เดŽเดจเตเดคเตเดšเต†เดฏเตเดฏเดฃเด‚, เดชเด•เตเดทเต‡ เดฌเตเดฒเต‹เดŸเตเดŸเต เดตเดณเดฐเตเดจเตเดจเต.

เดŸเต€เด‚ เดตเดพเด•เตเดตเด‚ เดซเตเตพ เดชเดŸเตเดŸเดฟเด•เด•เดณเตเดŸเต†เดฏเตเด‚ เดธเต‚เดšเดฟเด•เด•เดณเตเดŸเต†เดฏเตเด‚ เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดตเดฏเดฟเตฝ เดชเตเดฐเดธเด•เตเดคเดฎเดพเดฏ เดกเดพเดฑเตเดฑ เดฎเดพเดคเตเดฐเด‚ เด…เดตเดถเต‡เดทเดฟเดชเตเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดตเต€เด•เตเด•เด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเตป, เด‡เดคเต เดคเดฟเด•เดšเตเดšเตเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ เด…เดคเดฟเดจเตเดฑเต† เดจเดฟเตผเดตเตเดตเดนเดฃ เดตเต‡เดณเดฏเดฟเตฝ เดŸเต‡เดฌเดฟเดณเดฟเตฝ เด’เดฐเต เดŽเด•เตเดธเตเด•เตเดฒเต‚เดธเต€เดตเต เดฒเต‹เด•เตเด•เต เดชเดฟเดŸเดฟเดšเตเดšเต†เดŸเตเด•เตเด•เตเดจเตเดจเต (AccessExclusiveLock), เด‡เดคเต เดˆ เดŸเต‡เดฌเดฟเดณเดฟเตฝ เดšเต‹เดฆเตเดฏเด™เตเด™เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เดฟเดฒเตเดฒ, เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เตเดจเตเดจเต. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเต‡เดตเดจเดฎเต‹ เด…เดคเดฟเดจเตเดฑเต† เดญเดพเด—เดฎเต‹ เด•เตเดฑเดšเตเดšเต เดธเดฎเดฏเดคเตเดคเต‡เด•เตเด•เต เดจเดฟเตผเดคเตเดคเดพเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดดเดฟเดฏเตเดฎเต†เด™เตเด•เดฟเตฝ (เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเดฟเดจเตเดฑเต†เดฏเตเด‚ เดนเดพเตผเดกเตโ€Œเดตเต†เดฏเดฑเดฟเดจเตเดฑเต†เดฏเตเด‚ เดตเดฒเตเดชเตเดชเดคเตเดคเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต เดชเดคเดฟเดจเดพเดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เดฎเดฟเดจเดฟเดฑเตเดฑเต เดฎเตเดคเตฝ เดจเดฟเดฐเดตเดงเดฟ เดฎเดฃเดฟเด•เตเด•เต‚เตผ เดตเดฐเต†), เดˆ เด“เดชเตเดทเตป เดฎเดฟเด•เดšเตเดšเดคเดพเดฃเต. เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดทเต†เดกเตเดฏเต‚เตพ เดšเต†เดฏเตเดค เด…เดฑเตเดฑเด•เตเดฑเตเดฑเดชเตเดชเดฃเดฟ เดธเดฎเดฏเดคเตเดคเต VACUUM FULL เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เตพเด•เตเด•เต เดธเดฎเดฏเดฎเดฟเดฒเตเดฒ, เด…เดคเดฟเดจเดพเตฝ เดˆ เดฐเต€เดคเดฟ เดžเด™เตเด™เตพเด•เตเด•เต เด…เดจเตเดฏเต‹เดœเตเดฏเดฎเดฒเตเดฒ.

เดŸเต€เด‚ เด•เตเดฒเดธเตเดฑเตเดฑเตผ VACUUM FULL เดชเต‹เดฒเต† เดคเดจเตเดจเต† เดชเดŸเตเดŸเดฟเด•เด•เดณเดฟเดฒเต† เด‰เดณเตเดณเดŸเด•เตเด•เด™เตเด™เตพ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดกเดฟเดธเตเด•เดฟเตฝ เดกเดพเดฑเตเดฑ เดซเดฟเดธเดฟเด•เตเด•เตฝ เด†เดฏเดฟ เด“เตผเดกเตผ เดšเต†เดฏเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจ เด’เดฐเต เดธเต‚เดšเดฟเด• เดตเตเดฏเด•เตเดคเดฎเดพเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต (เดŽเดจเตเดจเดพเตฝ เดญเดพเดตเดฟเดฏเดฟเตฝ เดชเตเดคเดฟเดฏ เดตเดฐเดฟเด•เตพเด•เตเด•เต เด“เตผเดกเตผ เด‰เดฑเดชเตเดชเตเดจเตฝเด•เตเดจเตเดจเดฟเดฒเตเดฒ). เดšเดฟเดฒ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเตฝ, เด‡เดคเต เดจเดฟเดฐเดตเดงเดฟ เดšเต‹เดฆเตเดฏเด™เตเด™เตพเด•เตเด•เตเดณเตเดณ เดจเดฒเตเดฒ เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต‡เดทเดจเดพเดฃเต - เดธเต‚เดšเดฟเด• เดชเตเดฐเด•เดพเดฐเด‚ เด’เดจเตเดจเดฟเดฒเดงเดฟเด•เด‚ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดฒเต‚เดŸเต†. เด•เดฎเดพเตปเดกเดฟเดจเตเดฑเต† เดชเต‹เดฐเดพเดฏเตเดฎ VACUUM FULL เดจเต เดคเตเดฒเตเดฏเดฎเดพเดฃเต - เด‡เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดจ เดธเดฎเดฏเดคเตเดคเต เดชเดŸเตเดŸเดฟเด• เดชเต‚เดŸเตเดŸเตเดจเตเดจเต.

เดŸเต€เด‚ เดฑเต†เตปเดกเต†เด•เตเดธเต เดฎเตเดฎเตเดชเดคเตเดคเต† เดฐเดฃเตเดŸเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฃเต, เดŽเดจเตเดจเดพเตฝ เด’เดฐเต เดจเดฟเตผเดฆเตเดฆเดฟเดทเตเดŸ เดธเต‚เดšเดฟเด• เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดชเดŸเตเดŸเดฟเด•เดฏเตเดŸเต† เดŽเดฒเตเดฒเดพ เดธเต‚เดšเดฟเด•เด•เดณเตเด‚ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจเต. เดฒเต‹เด•เตเด•เตเด•เตพ เด…เตฝเดชเตเดชเด‚ เดฆเตเตผเดฌเดฒเดฎเดพเดฃเต: เดŸเต‡เดฌเดฟเดณเดฟเดฒเต† เดทเต†เดฏเตผเดฒเต‹เด•เตเด•เต (เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดคเดŸเดฏเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดคเดฟเดฐเดžเตเดžเต†เดŸเตเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต), เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดจเตเดจ เดธเต‚เดšเดฟเด•เดฏเดฟเดฒเต† AccessExclusiveLock (เดˆ เดธเต‚เดšเดฟเด• เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเดณเตเดณ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เดณเต† เดคเดŸเดฏเตเดจเตเดจเต). เดŽเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด‚, เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต‡เดธเดฟเดจเตเดฑเต† 12-เดพเด‚ เดชเดคเดฟเดชเตเดชเดฟเตฝ เด’เดฐเต เดชเดฐเดพเดฎเต€เดฑเตเดฑเตผ เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดŸเต เด’เดฐเต‡เดธเดฎเดฏเด‚, เด’เดฐเต‡เดธเดฎเดฏเด‚ เด•เต‚เดŸเตเดŸเดฟเดšเตเดšเต‡เตผเด•เตเด•เตฝ, เดฎเดพเดฑเตเดฑเด‚ เดตเดฐเตเดคเตเดคเตฝ, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดฑเต†เด•เตเด•เต‹เตผเดกเตเด•เตพ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตฝ เดŽเดจเตเดจเดฟเดต เดคเดŸเดฏเดพเดคเต† เดธเต‚เดšเดฟเด• เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

Postgres-เดจเตเดฑเต† เดฎเตเตป เดชเดคเดฟเดชเตเดชเตเด•เดณเดฟเตฝ, REINDEX เด’เดฐเต‡เดธเดฎเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเตเดณเตเดณ เด’เดฐเต เดซเดฒเด‚ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดจเต‡เดŸเดพเดจเดพเด•เตเด‚ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดธเต‚เดšเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•. เด•เตผเดถเดจเดฎเดพเดฏ เดฒเต‹เด•เตเด•เดฟเด‚เด—เต เด‡เดฒเตเดฒเดพเดคเต† เด’เดฐเต เดธเต‚เดšเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต (ShareUpdateExclusiveLock, เด‡เดคเต เดธเดฎเดพเดจเตเดคเดฐ เด…เดจเตเดตเต‡เดทเดฃเด™เตเด™เดณเดฟเตฝ เด‡เดŸเดชเต†เดŸเตเดจเตเดจเดฟเดฒเตเดฒ), เดคเตเดŸเตผเดจเตเดจเต เดชเดดเดฏ เดธเต‚เดšเดฟเด•เดฏเต† เดชเตเดคเดฟเดฏเตŠเดฐเต†เดฃเตเดฃเด‚ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดฑเตเดฑเดฟ เดชเดดเดฏ เดธเต‚เดšเดฟเด• เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•. เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ เด‡เดŸเดชเต†เดŸเดพเดคเต† เดคเดจเตเดจเต† เดธเต‚เดšเดฟเด• เดฌเตเดฒเดพเดฑเตเดฑเต เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เดพเตป เด‡เดคเต เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต. เดธเต‚เดšเดฟเด•เด•เตพ เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดกเดฟเดธเตเด•เต เดธเดฌเตเดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เด’เดฐเต เด…เดงเดฟเด• เดฒเต‹เดกเต เด‰เดฃเตเดŸเดพเด•เตเดฎเต†เดจเตเดจเต เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต.

เด…เดคเดฟเดจเดพเตฝ, เดธเต‚เดšเดฟเด•เด•เตพเด•เตเด•เต "เดˆเดšเตเดšเดฏเดฟเตฝ" เดตเต€เด•เตเด•เด‚ เด’เดดเดฟเดตเดพเด•เตเด•เดพเดจเตเดณเตเดณ เดตเดดเดฟเด•เดณเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เดชเดŸเตเดŸเดฟเด•เด•เตพเด•เตเด•เดพเดฏเดฟ เด’เดจเตเดจเตเดฎเดฟเดฒเตเดฒ. เด‡เดตเดฟเดŸเต†เดฏเดพเดฃเต เดตเดฟเดตเดฟเดง เดฌเดพเดนเตเดฏ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเดคเต: pg_repack (เดฎเตเดฎเตเดชเต pg_reorg), pgcompact, pgcompactable เดฎเดฑเตเดฑเตเดณเตเดณเดตเดฐเตเด‚. เดˆ เดฒเต‡เด–เดจเดคเตเดคเดฟเตฝ, เดžเดพเตป เด…เดตเดฏเต† เดคเดพเดฐเดคเดฎเตเดฏเด‚ เดšเต†เดฏเตเดฏเดฟเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† pg_repack-เดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดฎเดพเดคเตเดฐเดฎเต‡ เดธเด‚เดธเดพเดฐเดฟเด•เตเด•เต‚, เด…เดคเต เดšเดฟเดฒ เดชเดฐเดฟเดทเตเด•เตเด•เดฐเดฃเด™เตเด™เตพเด•เตเด•เต เดถเต‡เดทเด‚ เดžเด™เตเด™เตพ เดธเตเดตเดฏเด‚ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต.

pg_repack เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

Postgres: bloat, pg_repack, deferred constraints
เดจเดฎเตเด•เตเด•เต เดคเดฟเด•เดšเตเดšเตเด‚ เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฏ เด’เดฐเต เดชเดŸเตเดŸเดฟเด•เดฏเตเดฃเตเดŸเต†เดจเตเดจเต เดชเดฑเดฏเดพเด‚ - เดธเต‚เดšเดฟเด•เด•เตพ, เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ, เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดฌเตเดฒเดพเดฑเตเดฑเต เดŽเดจเตเดจเดฟเดต. pg_repack-เดจเตเดฑเต† เด†เดฆเตเดฏ เด˜เดŸเตเดŸเด‚ เด…เดคเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดŽเดฒเตเดฒเดพ เดฎเดพเดฑเตเดฑเด™เตเด™เดณเต†เดฏเตเด‚ เด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เดกเดพเดฑเตเดฑ เดธเด‚เดญเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด’เดฐเต เดฒเต‹เด—เต เดŸเต‡เดฌเดฟเตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต. เด“เดฐเต‹ เด‡เตปเดธเต‡เตผเดŸเตเดŸเดฟเดจเตเด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเด‚ เดŸเตเดฐเดฟเด—เตผ เดˆ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เตเด‚. เด˜เดŸเดจเดฏเดฟเตฝ เดฏเดฅเดพเตผเดคเตเดฅเดฎเดพเดฏเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดฐเต เดชเดŸเตเดŸเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดธเต‚เดšเดฟเด•เด•เดณเตเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เดณเตเด‚ เด‡เดฒเตเดฒเดพเดคเต†, เดกเดพเดฑเตเดฑ เดšเต‡เตผเด•เตเด•เตเดจเตเดจ เดชเตเดฐเด•เตเดฐเดฟเดฏ เดฎเดจเตเดฆเด—เดคเดฟเดฏเดฟเดฒเดพเด•เตเด•เดฐเตเดคเต.

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, pg_repack เดชเดดเดฏ เดŸเต‡เดฌเดฟเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดชเตเดคเดฟเดฏ เดŸเต‡เดฌเดฟเดณเดฟเดฒเต‡เด•เตเด•เต เดกเดพเดฑเตเดฑ เด•เตˆเดฎเดพเดฑเตเดจเตเดจเต, เด…เดชเตเดฐเดธเด•เตเดคเดฎเดพเดฏ เดŽเดฒเตเดฒเดพ เดตเดฐเดฟเด•เดณเตเด‚ เดธเตเดตเดฏเดฎเต‡เดต เดซเดฟเตฝเดŸเตเดŸเตผ เดšเต†เดฏเตเดฏเตเดจเตเดจเต, เดคเตเดŸเตผเดจเตเดจเต เดชเตเดคเดฟเดฏ เดŸเต‡เดฌเดฟเดณเดฟเดจเดพเดฏเดฟ เดธเต‚เดšเดฟเด•เด•เตพ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต. เดˆ เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเต†เดฒเตเดฒเดพเด‚ เดจเดฟเตผเดตเตเดตเดนเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฒเต‹เด—เต เดŸเต‡เดฌเดฟเดณเดฟเตฝ เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เด…เดŸเดฟเดžเตเดžเต เด•เต‚เดŸเตเดจเตเดจเต.

เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดชเตเดคเดฟเดฏ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเดฒเต‡เด•เตเด•เต เดฎเดพเดฑเตเดฑเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด…เดŸเตเดคเตเดค เด˜เดŸเตเดŸเด‚. เดจเดฟเดฐเดตเดงเดฟ เด†เดตเตผเดคเตเดคเดจเด™เตเด™เดณเดฟเดฒเต‚เดŸเต†เดฏเดพเดฃเต เดฎเตˆเด—เตเดฐเต‡เดทเตป เดจเดŸเดคเตเดคเตเดจเตเดจเดคเต, เดฒเต‹เด—เต เดŸเต‡เดฌเดฟเดณเดฟเตฝ 20-เตฝ เดคเดพเดดเต† เดŽเตปเดŸเตเดฐเดฟเด•เตพ เดถเต‡เดทเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ, pg_repack เดถเด•เตเดคเดฎเดพเดฏ เด’เดฐเต เดฒเต‹เด•เตเด•เต เดจเต‡เดŸเตเด•เดฏเตเด‚ เดเดฑเตเดฑเดตเตเด‚ เดชเตเดคเดฟเดฏ เดกเดพเดฑเตเดฑ เดฎเตˆเด—เตเดฐเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ Postgres เดธเดฟเดธเตเดฑเตเดฑเด‚ เดŸเต‡เดฌเดฟเดณเตเด•เดณเดฟเตฝ เดชเดดเดฏ เดชเดŸเตเดŸเดฟเด•เดฏเต† เดชเตเดคเดฟเดฏเดคเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดฑเตเดฑเดฟเดธเตเดฅเดพเดชเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเต‡เดถเดฏเตเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดพเดคเตเดค เด’เดฐเต‡เดฏเตŠเดฐเต เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต. เด‡เดคเดฟเดจเตเดถเต‡เดทเด‚, เดชเดดเดฏ เดชเดŸเตเดŸเดฟเด•เดฏเตเด‚ เดฒเต‹เด—เตเด•เดณเตเดณเตเดณ เดชเดŸเตเดŸเดฟเด•เดฏเตเด‚ เด‡เดฒเตเดฒเดพเดคเดพเด•เตเด•เตเด•เดฏเตเด‚ เดซเดฏเตฝ เดธเดฟเดธเตเดฑเตเดฑเดคเตเดคเดฟเตฝ เด‡เดŸเด‚ เดธเตเดตเดคเดจเตเดคเตเดฐเดฎเดพเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เดชเตเดฐเด•เตเดฐเดฟเดฏ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเดฏเดฟ.

เดธเดฟเดฆเตเดงเดพเดจเตเดคเดคเตเดคเดฟเตฝ เดŽเดฒเตเดฒเดพเด‚ เดฎเดฟเด•เดšเตเดšเดคเดพเดฏเดฟ เดคเต‹เดจเตเดจเตเดจเตเดจเต, เดŽเดจเตเดจเดพเตฝ เดชเตเดฐเดพเดฏเต‹เด—เดฟเด•เดฎเดพเดฏเดฟ เดŽเดจเตเดคเดพเดฃเต เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเดคเต? เดžเด™เตเด™เตพ 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 เด•เดฎเดพเตปเดกเดฟเดจเต‡เด•เตเด•เดพเตพ เดชเดฟเดจเตเดจเต€เดŸเต เดจเดŸเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เด…เดชเตเดฐเดคเต€เด•เตเดทเดฟเดค เดชเตเดฐเดคเตเดฏเดพเด˜เดพเดคเด™เตเด™เดณเดฟเดฒเต‡เด•เตเด•เต เดจเดฏเดฟเด•เตเด•เตเดจเตเดจเต.

เดฎเดพเดฑเตเดฑเดฟเดตเดšเตเดš เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ: เด…เดต เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต

เดฎเดพเดฑเตเดฑเดฟเดตเต†เดšเตเดš เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เดณเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเตเดณเตเดณ เด’เดฐเต เดšเต†เดฑเดฟเดฏ เดธเดฟเดฆเตเดงเดพเดจเตเดคเด‚.
เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดฒเดณเดฟเดคเดฎเดพเดฏ เด‰เดฆเดพเดนเดฐเดฃเด‚ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เดพเด‚: เดฐเดฃเตเดŸเต เด†เดŸเตเดฐเดฟเดฌเตเดฏเต‚เดŸเตเดŸเตเด•เดณเตเดณเตเดณ เด•เดพเดฑเตเด•เดณเตเดŸเต† เด’เดฐเต เดŸเต‡เดฌเดฟเตพ-เดฑเดซเดฑเตปเดธเต เดฌเตเด•เตเด•เต เด‰เดฃเตเดŸเต - เดกเดฏเดฑเด•เตเดŸเดฑเดฟเดฏเดฟเดฒเต† เด•เดพเดฑเดฟเดจเตเดฑเต† เดชเต‡เดฐเตเด‚ เด•เตเดฐเดฎเดตเตเด‚.
Postgres: bloat, pg_repack, deferred constraints

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
);

เดžเด™เตเด™เดณเตเดŸเต† เดชเตเดฐเดพเดฐเด‚เดญ เด…เดญเตเดฏเตผเดคเตเดฅเดจเดฏเตเดŸเต† เดฏเตเด•เตเดคเดฟ เดŽเดฒเตเดฒเดพ เดฎเต‚เดฒเตเดฏเด™เตเด™เดณเตเด‚ เดชเตเดฐเดคเดฟเดฌเดฆเตเดงเดคเดฏเตเดณเตเดณ เดธเดฎเดฏเดคเตเดคเต เด…เดฆเตเดตเดฟเดคเต€เดฏเดฎเดพเดฃเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเดพเตฝ, เด…เดคเต เดตเดฟเดœเดฏเดฟเด•เตเด•เตเด‚.

เดฎเตเด•เดณเดฟเตฝ เดšเตผเดšเตเดš เดšเต†เดฏเตเดค เด‰เดฆเดพเดนเดฐเดฃเด‚ เดคเต€เตผเดšเตเดšเดฏเดพเดฏเตเด‚ เดตเดณเดฐเต† เดธเดฟเดจเตเดคเดฑเตเดฑเดฟเด•เต เด†เดฃเต, เดชเด•เตเดทเต‡ เด…เดคเต เด†เดถเดฏเด‚ เดตเต†เดณเดฟเดชเตเดชเต†เดŸเตเดคเตเดคเตเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเดฟเตฝ, เดฌเต‹เตผเดกเดฟเดฒเต† เดชเด™เตเด•เดฟเดŸเตเดŸ เดตเดฟเดœเดฑเตเดฑเต เด’เดฌเตโ€Œเดœเด•เตเดฑเตเดฑเตเด•เดณเดฟเตฝ เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ เด’เดฐเต‡เดธเดฎเดฏเด‚ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดตเตˆเดฐเตเดฆเตเดงเตเดฏเด™เตเด™เตพ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เด‰เดคเตเดคเดฐเดตเดพเดฆเดฟเดฏเดพเดฏ เดฒเต‹เดœเดฟเด•เต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดฎเดพเดฑเตเดฑเดฟเดตเดšเตเดš เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด…เดคเตเดคเดฐเด‚ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเต เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเตป เด•เต‹เดกเต เด•เตเดฑเดšเตเดšเต เดฒเดณเดฟเดคเดฎเดพเด•เตเด•เดพเตป เดžเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต.

เดชเตŠเดคเตเดตเต‡, เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เดคเดฐเดคเตเดคเต† เด†เดถเตเดฐเดฏเดฟเดšเตเดšเต, เด…เดต เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดชเต‹เดธเตเดฑเตเดฑเตโ€Œเด—เตเดฐเต‡เดธเดฟเดจเต เดฎเต‚เดจเตเดจเต เดคเดฒเดคเตเดคเดฟเดฒเตเดณเตเดณ เด—เตเดฐเดพเดจเตเดฒเดพเดฐเดฟเดฑเตเดฑเดฟ เด‰เดฃเตเดŸเต: เดตเดฐเดฟ, เด‡เดŸเดชเดพเดŸเต, เดŽเด•เตเดธเตเดชเตเดฐเดทเตป เดฒเต†เดตเดฒเตเด•เตพ.
Postgres: bloat, pg_repack, deferred constraints
เด…เดตเดฒเด‚เดฌเด‚: เดฌเต†เด—เตเดฐเดฟเดซเตเดธเต

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-เดจเตเดฑเต† เดฎเตเตป เด˜เดŸเตเดŸเดคเตเดคเดฟเดฒเดพเดฃเต, เด…เดคเต เดธเต‚เดšเดฟเด•เด•เตพ เดฎเดพเดคเตเดฐเด‚ เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเดจเตเดจเต, เดชเด•เตเดทเต‡ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เดณเดฒเตเดฒ: เดชเดดเดฏ เดชเดŸเตเดŸเดฟเด•เดฏเตเด•เตเด•เต เด’เดฐเต เด…เดฆเตเดตเดฟเดคเต€เดฏ เดชเดฐเดฟเดฎเดฟเดคเดฟ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต, เดชเตเดคเดฟเดฏเดคเต เดชเด•เดฐเด‚ เด’เดฐเต เด…เดฆเตเดตเดฟเดคเต€เดฏ เดธเต‚เดšเดฟเด• เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต.

Postgres: bloat, pg_repack, deferred constraints

เด‡เดตเดฟเดŸเต† เดถเตเดฐเดฆเตเดงเดฟเด•เตเด•เต‡เดฃเตเดŸเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต, เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ เดธเดพเดงเดพเดฐเดฃเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เดฎเดพเดฑเตเดฑเดฟเดตเดฏเตเด•เตเด•เดชเตเดชเต†เดŸเตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดชเด•เดฐเด‚ เดธเตƒเดทเตเดŸเดฟเดšเตเดš เดคเดจเดคเดพเดฏ เดธเต‚เดšเดฟเด• เดˆ เดชเดฐเดฟเดฎเดฟเดคเดฟเด•เตเด•เต เดคเตเดฒเตเดฏเดฎเดพเดฃเต, เด•เดพเดฐเดฃเด‚ เด’เดฐเต เดคเดจเดคเต เดธเต‚เดšเดฟเด• เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต เดชเต‹เดธเตเดฑเตเดฑเตเด—เตเดฐเต‡เดธเดฟเดฒเต† เดคเดจเดคเดพเดฏ เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดฎเดพเดฑเตเดฑเดฟเดตเต†เดšเตเดš เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดคเตเดคเดฟเดจเตเดฑเต† เด•เดพเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดชเต†เดฐเตเดฎเดพเดฑเตเดฑเด‚ เดธเดฎเดพเดจเดฎเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เดธเต‚เดšเดฟเด• เดฎเดพเดฑเตเดฑเดฟเดตเดฏเตเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ, เด•เต‚เดŸเดพเดคเต† sql เด•เดฎเดพเตปเดกเต เดŽเด•เตเดธเดฟเด•เตเดฏเต‚เดŸเตเดŸเต เดšเต†เดฏเตเดฏเตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเต เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เดชเดฐเดฟเดถเต‹เดงเดฟเด•เตเด•เตเด‚.

เด…เดคเดฟเดจเดพเตฝ, เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเตปเตเดฑเต† เดธเดพเดฐเดพเด‚เดถเด‚ เดชเดฐเดฟเดถเต‹เดงเดจเดฏเตเดŸเต† "เด•เดพเดฒเดคเดพเดฎเดธ"เดคเตเดคเดฟเดฒเดพเดฃเต: เดฏเดฅเดพเตผเดคเตเดฅ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ เด‡เดคเต เดชเตเดฐเดคเดฟเดœเตเดžเดพเดฌเดฆเตเดงเดฎเดพเดฏ เดธเดฎเดฏเดคเตเดคเตเด‚ เดชเตเดคเดฟเดฏ เดชเดŸเตเดŸเดฟเด•เดฏเดฟเตฝ sql เด•เดฎเดพเตปเดกเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจ เดธเดฎเดฏเดคเตเดคเตเด‚ เดธเด‚เดญเดตเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเดฟเดจเตผเดคเตเดฅเด‚, เดฐเดฃเตเดŸเต เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเดฒเตเด‚ เดชเดฐเดฟเดถเต‹เดงเดจเด•เตพ เด’เดฐเต‡เดชเต‹เดฒเต† เดจเดŸเด•เตเด•เตเดจเตเดจเตเดฃเตเดŸเต†เดจเตเดจเต เดžเด™เตเด™เตพ เด‰เดฑเดชเตเดชเดพเด•เตเด•เต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต: เด’เดจเตเดจเตเด•เดฟเตฝ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เด•เดพเดฒเดคเดพเดฎเดธเด‚, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เดŽเดฒเตเดฒเดพเดฏเตเดชเตเดชเต‹เดดเตเด‚ เด‰เดŸเดจเดŸเดฟ.

เด…เดชเตเดชเต‹เตพ เดจเดฎเตเด•เตเด•เต เดŽเดจเตเดคเต†เดฒเตเดฒเดพเด‚ เด†เดถเดฏเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเดฏเดฟเดฐเตเดจเตเดจเต?

เดฎเดพเดฑเตเดฑเดฟเดตเต†เดšเตเดšเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดฐเต เดธเต‚เดšเดฟเด• เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•

เดฐเดฃเตเดŸเต เดชเดฐเดฟเดถเต‹เดงเดจเด•เดณเตเด‚ เด‰เดŸเดจเดŸเดฟ เดฎเต‹เดกเดฟเตฝ เดจเดŸเดคเตเดคเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เด†เดฆเตเดฏเดคเตเดคเต† เด†เดถเดฏเด‚. เด‡เดคเต เดจเดฟเดฐเดตเดงเดฟ เดคเต†เดฑเตเดฑเดพเดฏ เดชเต‹เดธเดฟเดฑเตเดฑเต€เดตเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต‡เด•เตเด•เดพเด‚, เดŽเดจเตเดจเดพเตฝ เด…เดตเดฏเดฟเตฝ เดšเดฟเดฒเดคเต เด‰เดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด‡เดคเต เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เดณเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเต† เดฌเดพเดงเดฟเด•เตเด•เดฐเตเดคเต, เด•เดพเดฐเดฃเด‚ เด…เดคเตเดคเดฐเด‚ เดตเตˆเดฐเตเดฆเตเดงเตเดฏเด™เตเด™เตพ เด…เดตเตผเด•เตเด•เต เด’เดฐเต เดธเดพเดงเดพเดฐเดฃ เดธเดพเดนเดšเดฐเตเดฏเดฎเดพเดฃเต. เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดฐเดฃเตเดŸเต เด‰เดชเดฏเต‹เด•เตเดคเดพเด•เตเด•เตพ เด’เดฐเต‡ เดธเดฎเดฏเด‚ เด’เดฐเต‡ เดตเดฟเดœเดฑเตเดฑเต เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเดพเตป เดคเตเดŸเด™เตเด™เตเดฎเตเดชเต‹เตพ, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเตปเตเดฑเต† เด•เตเดฒเดฏเตปเตเดฑเดฟเดจเต เด†เดฆเตเดฏ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดŽเดกเดฟเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดตเดฟเดœเดฑเตเดฑเต เด‡เดคเดฟเดจเด•เด‚ เดคเดŸเดžเตเดžเตเดตเต†เดจเตเดจ เดตเดฟเดตเดฐเด‚ เดฒเดญเดฟเด•เตเด•เดพเตป เดธเดฎเดฏเดฎเดฟเดฒเตเดฒ. เด…เดคเตเดคเดฐเดฎเตŠเดฐเต เดธเดพเดนเดšเดฐเตเดฏเดคเตเดคเดฟเตฝ, เดธเต†เตผเดตเตผ เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต† เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเดฟเดจเต† เดจเดฟเดฐเดธเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด…เดคเดฟเตปเตเดฑเต† เด•เตเดฒเดฏเตปเตเดฑเต เดฎเดพเดฑเตเดฑเด™เตเด™เตพ เดชเดฟเตปเดตเดฒเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดตเดฟเดœเดฑเตเดฑเต เดคเดŸเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด•เตเดฑเดšเตเดšเต เด•เดดเดฟเดžเตเดžเต, เด†เดฆเตเดฏ เด‰เดชเดฏเต‹เด•เตเดคเดพเดตเต เดŽเดกเดฟเดฑเตเดฑเดฟเด‚เด—เต เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เตเดฎเตเดชเต‹เตพ, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเดฟเดจเต เดตเดฟเดœเดฑเตเดฑเต เดคเดŸเดžเตเดžเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เดจเตเดจเตเด‚ เด…เดตเดฐเตเดŸเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเด‚ เด†เดตเตผเดคเตเดคเดฟเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเตเด‚ เดตเดฟเดตเดฐเด‚ เดฒเดญเดฟเด•เตเด•เตเด‚.

Postgres: bloat, pg_repack, deferred constraints

เดชเดฐเดฟเดถเต‹เดงเดจเด•เตพ เดŽเดฒเตเดฒเดพเดฏเตโ€Œเดชเตเดชเต‹เดดเตเด‚ เดฎเดพเดฑเตเดฑเดฟเดตเดฏเตเด•เตเด•เดพเดคเตเดค เดฎเต‹เดกเดฟเตฝ เด†เดฃเต†เดจเตเดจเต เด‰เดฑเดชเตเดชเดพเด•เตเด•เดพเตป, เด’เดฑเดฟเดœเดฟเดจเตฝ เดฎเดพเดฑเตเดฑเดฟเดตเต†เดšเตเดš เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเดคเตเดคเดฟเดจเต เดธเดฎเดพเดจเดฎเดพเดฏ เด’เดฐเต เดชเตเดคเดฟเดฏ เดธเต‚เดšเดฟเด• เดžเด™เตเด™เตพ เดธเตƒเดทเตเดŸเดฟเดšเตเดšเต:

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 เดฎเดฟเดจเดฟเดฑเตเดฑเดพเดฃเต).

เดชเดฐเต€เด•เตเดทเดฃเด™เตเด™เตพ เดชเต‹เดธเดฟเดฑเตเดฑเต€เดตเต เด†เดฏเดฟเดฐเตเดจเตเดจเต. เดจเดฟเตผเดฎเตเดฎเดพเดฃเดคเตเดคเดฟเดฒเตเด‚ เดธเดฎเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•. เดตเตเดฏเด•เตเดคเดคเดฏเตเด•เตเด•เดพเดฏเดฟ, เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดšเตเดšเดคเดฟเดจเต เดถเต‡เดทเด‚ เดกเดพเดฑเตเดฑเดพเดฌเต‡เดธเตเด•เดณเดฟเดฒเตŠเดจเตเดจเดฟเดจเตเดฑเต† เดตเดฒเตเดชเตเดชเดฎเตเดณเตเดณ เด’เดฐเต เดšเดฟเดคเตเดฐเด‚ เด‡เดคเดพ:

Postgres: bloat, pg_repack, deferred constraints

เดˆ เดชเดฐเดฟเดนเดพเดฐเดคเตเดคเดฟเตฝ เดžเด™เตเด™เตพ เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏเตเด‚ เดคเตƒเดชเตเดคเดฐเดพเดฏเดคเดฟเดจเดพเตฝ, เดฐเดฃเตเดŸเดพเดฎเดคเตเดคเต‡เดคเต เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เดžเด™เตเด™เตพ เดถเตเดฐเดฎเดฟเดšเตเดšเดฟเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃ เดกเต†เดตเดฒเดชเตเดชเตผเดฎเดพเดฐเตเดฎเดพเดฏเดฟ เด‡เดคเต เดšเตผเดšเตเดš เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดธเดพเดงเตเดฏเดค เดžเด™เตเด™เตพ เดชเดฐเดฟเด—เดฃเดฟเด•เตเด•เตเดจเตเดจเต. เดžเด™เตเด™เดณเตเดŸเต† เดจเดฟเดฒเดตเดฟเดฒเต† เดชเตเดจเดฐเดตเดฒเต‹เด•เดจเด‚, เดจเดฟเตผเดญเดพเด—เตเดฏเดตเดถเดพเตฝ, เดชเตเดฐเดธเดฟเดฆเตเดงเต€เด•เดฐเดฃเดคเตเดคเดฟเดจเต เด‡เดคเตเดตเดฐเต† เดคเดฏเตเดฏเดพเดฑเดพเดฏเดฟเดŸเตเดŸเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เด…เดฆเตเดตเดฟเดคเต€เดฏเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเดฟเดตเดšเตเดš เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดฎเดพเดคเตเดฐเดฎเดพเดฃเต เดžเด™เตเด™เตพ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเดšเตเดšเดคเต, เด•เต‚เดŸเดพเดคเต† เด’เดฐเต เดชเต‚เตผเดฃเตเดฃเดฎเดพเดฏ เดชเดพเดšเตเดšเดฟเดจเดพเดฏเดฟ เดฎเดฑเตเดฑเต เดคเดฐเด™เตเด™เตพเด•เตเด•เต เดชเดฟเดจเตเดคเตเดฃ เดจเตฝเด•เต‡เดฃเตเดŸเดคเต เด†เดตเดถเตเดฏเดฎเดพเดฃเต. เดญเดพเดตเดฟเดฏเดฟเตฝ เด‡เดคเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต.

เด’เดฐเตเดชเด•เตเดทเต‡ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดšเต‹เดฆเตเดฏเดฎเตเดฃเตเดŸเต, เดŽเดจเตเดคเตเด•เตŠเดฃเตเดŸเดพเดฃเต เดžเด™เตเด™เตพ เดˆ เดธเตเดฑเตเดฑเต‹เดฑเดฟเดฏเดฟเตฝ pg_repack เดชเดฐเดฟเดทเตเด•เดฐเดฟเดšเตเดšเต เด‡เดŸเดชเต†เดŸเตเดŸเดคเต, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เด…เดคเดฟเดจเตเดฑเต† เด…เดจเดฒเต‹เด—เตเด•เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดฟเดฒเตเดฒ? เดšเดฟเดฒ เดธเดฎเดฏเด™เตเด™เดณเดฟเตฝ เดžเด™เตเด™เดณเตเด‚ เด‡เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดšเดฟเดจเตเดคเดฟเดšเตเดšเต, เดชเด•เตเดทเต‡ เดจเต‡เดฐเดคเตเดคเต† เด‡เดคเต เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเดคเดฟเดจเตเดฑเต† เดจเดฒเตเดฒ เด…เดจเตเดญเดตเด‚, เดฎเดพเดฑเตเดฑเดฟเดตเดšเตเดš เดจเดฟเดฏเดจเตเดคเตเดฐเดฃเด™เตเด™เดณเดฟเดฒเตเดฒเดพเดคเต† เดฎเต‡เดถเด•เดณเดฟเตฝ, เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดฑเต† เดธเดพเดฐเดพเด‚เดถเด‚ เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚ เด…เดคเต เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดถเตเดฐเดฎเดฟเด•เตเด•เดพเตป เดžเด™เตเด™เดณเต† เดชเตเดฐเต‡เดฐเดฟเดชเตเดชเดฟเดšเตเดšเต. เด•เต‚เดŸเดพเดคเต†, เดฎเดฑเตเดฑเต เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเดคเดฟเดจเต เดชเดฐเดฟเดถเต‹เดงเดจเด•เตพ เดจเดŸเดคเตเดคเดพเตป เดธเดฎเดฏเด‚ เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เดžเด™เตเด™เตพ เด†เดฆเตเดฏเด‚ เด…เดคเดฟเตฝ เดชเตเดฐเดถเตเดจเด‚ เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดคเต€เดฐเตเดฎเดพเดจเดฟเดšเตเดšเต, เดจเตเดฏเดพเดฏเดฎเดพเดฏ เดธเดฎเดฏเดคเตเดคเต เด‡เดคเต เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒเต†เดจเตเดจเต เดžเด™เตเด™เตพ เดฎเดจเดธเตเดธเดฟเดฒเดพเด•เตเด•เดฟเดฏเดพเตฝ, เดžเด™เตเด™เตพ เด…เดจเดฒเต‹เด—เตเด•เตพ เดจเต‹เด•เตเด•เดพเตป เดคเตเดŸเด™เตเด™เตเด‚. .

เด•เดฃเตเดŸเต†เดคเตเดคเดฒเตเด•เตพ

เดžเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เด…เดจเตเดญเดตเดคเตเดคเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ เดžเด™เตเด™เตพเด•เตเด•เต เดŽเดจเตเดคเดพเดฃเต เดถเตเดชเดพเตผเดถ เดšเต†เดฏเตเดฏเดพเตป เด•เดดเดฟเดฏเตเด•:

  1. เดจเดฟเด™เตเด™เดณเตเดŸเต† เดตเดฏเดฑเตเดตเต‡เดฆเดจ เดจเดฟเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด•. เดฎเต‹เดฃเดฟเดฑเตเดฑเดฑเดฟเด‚เด—เต เดกเดพเดฑเตเดฑเดฏเต† เด…เดŸเดฟเดธเตเดฅเดพเดจเดฎเดพเด•เตเด•เดฟ, เด“เดŸเตเดŸเต‹เดตเดพเด•เตเดตเด‚ เดŽเดคเตเดฐ เดจเดจเตเดจเดพเดฏเดฟ เด•เตเดฐเดฎเต€เด•เดฐเดฟเดšเตเดšเดฟเดŸเตเดŸเตเดฃเตเดŸเต†เดจเตเดจเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดจเดธเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเด‚.
  2. เดธเตเดตเต€เด•เดพเดฐเตเดฏเดฎเดพเดฏ เดคเดฒเดคเตเดคเดฟเตฝ เดตเดฏเตผ เดจเดฟเดฒเดจเดฟเตผเดคเตเดคเดพเตป AUTOVACUUM เด•เตเดฐเดฎเต€เด•เดฐเดฟเด•เตเด•เตเด•.
  3. เดฌเตเดฒเต‹เดŸเตเดŸเต เด‡เดชเตเดชเต‹เดดเตเด‚ เดตเดณเดฐเตเด•เดฏเตเด‚ เดฌเต‹เด•เตโ€Œเดธเดฟเดจเต เดชเตเดฑเดคเตเดคเตเดณเตเดณ เด‰เดชเด•เดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด…เดคเดฟเดจเต† เดฎเดฑเดฟเด•เดŸเด•เตเด•เดพเตป เด•เดดเดฟเดฏเตเดจเตเดจเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เดฌเดพเดนเตเดฏ เดตเดฟเดชเตเดฒเต€เด•เดฐเดฃเด™เตเด™เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดญเดฏเดชเตเดชเต†เดŸเดฐเตเดคเต. เดŽเดฒเตเดฒเดพเด‚ เดจเดจเตเดจเดพเดฏเดฟ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดชเตเดฐเดงเดพเดจ เด•เดพเดฐเตเดฏเด‚.
  4. เดจเดฟเด™เตเด™เดณเตเดŸเต† เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เดจเตเดธเดฐเดฟเดšเตเดšเต เดฌเดพเดนเตเดฏ เดชเดฐเดฟเดนเดพเดฐเด™เตเด™เตพ เดชเดฐเดฟเดทเตเด•เดฐเดฟเด•เตเด•เดพเตป เดญเดฏเดชเตเดชเต†เดŸเดฐเตเดคเต - เดšเดฟเดฒเดชเตเดชเต‹เตพ เด‡เดคเต เดจเดฟเด™เตเด™เดณเตเดŸเต† เดธเตเดตเดจเตเดคเด‚ เด•เต‹เดกเต เดฎเดพเดฑเตเดฑเตเดจเตเดจเดคเดฟเดจเต‡เด•เตเด•เดพเตพ เด•เต‚เดŸเตเดคเตฝ เดซเดฒเดชเตเดฐเดฆเดตเตเด‚ เดŽเดณเตเดชเตเดชเดตเตเดฎเดพเดฃเต.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•