ááá¬ážáá»á¬ážááŸáá·áº á¡ááœáŸááºážáá»á¬ážáá±á«áºááœáẠáá±á¬ááºážááœááŒááºážáá¡áá»áá¯ážáááºáá±á¬ááºááŸá¯ááᯠáá»ááºáá»ááºááŒáá·áºááŒáá·áºááááŸáááŒá®áž Postgres ááœááºáá¬áááá² ááŸááá±áá«áááºá VACUUM FULL ááá¯á·ááá¯áẠCLUSTER áá²á·ááá¯á· áááºážááᯠáá±á¬ááºá
áºááŒááºáááœáẠááá¯ááºááœááºááŒá±ááŸááºážááẠáááºážáááºážáá»á¬áž ááŸááááºá ááá¯á·áá±á¬áº áááºážááá¯á·ááẠáááºáááºáá±á
ááºá¡ááœááºáž á
á¬ážááœá²áá»á¬ážááᯠáá±á¬á·áááºáá¬ážáá±á¬ááŒá±á¬áá·áº á¡ááŒá²áááºáž á¡áá¯á¶ážáááŒá¯ááá¯ááºáá«á
áá±á¬ááºážáá«ážááœáẠáá±á¬ááºážááœááŸá¯ááŒá
áºááœá¬ážáá¯á¶á áááºážááᯠáááºáááºáá²á·ááá¯á· ááá¯ááºáá»ááºááá¯ááºááááºážá ááœáŸá±á·ááá¯ááºážáá¬ážáá±á¬ ááá·áºáááºáá»á¯ááºáá»ááºááŸá¯áá»á¬ážááŸáá·áº pg_repack ááá¯ážáá»á²á·ááŸá¯ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá¡ááœáẠáááºážááá¯á·áá°áá±á¬ááºáá¬ááá·áº ááŒá¿áá¬áá»á¬ážá¡ááŒá±á¬ááºáž áá®á¡áá¯áá®á¡áááºážáááºáá«ááŸááááºá
áá®áá±á¬ááºážáá«ážááᯠá¡ááŒá±áá¶ááŒá®áž áá±ážáá¬ážáá¬áá«á
áááºážáá»á¯ááºááŒááºáž áá¬ááŒá±á¬áá·áºááŒá áºáá¬áá²á
Postgres ááẠáá¬ážááŸááºážáá±á«ááºážá
á¯á¶ áá±á¬áºáááºááᯠá¡ááŒá±áá¶ááẠ(
ááŸááºážáá«áááºá áá®áá¬ážááŸááºážá¡á¬ážáá¯á¶ážááᯠááááºážáááºážáá¬ážááá¯á· ááá¯áá«áááºá Postgres ááẠá á¬áá»ááºááŸá¬áá áºáá¯ááŒá®ážáá áºáᯠááŸááºáá¬ááºááŒáá·áº á¡áá¯ááºáá¯ááºááŒá®áž á á¬áá»ááºááŸá¬áá áºáá¯ááẠáá áºááºá០ááá¯á·ááá¯áẠá á¬ááŒáá·áºáááºááá¯ááºááá·áº á¡áááºážáá¯á¶ážáá±áá¬ááá¬áááŒá áºáááºá áá®ááá¯ááŒá áºááœá¬ážáá¬ááᯠáá¬ážáááºááá¯á· á¥ááá¬áá±ážáá áºáá¯ááᯠááŒáá·áºáá¡á±á¬ááºá
áá»áœááºá¯ááºááá¯á·ááœáẠááŸááºáááºážáá»á¬ážá áœá¬ááá·áºáá¬ážáá±á¬ ááá¬ážáá áºáá¯ááŸáááẠááá¯ááŒáá«á áá¯á·á ááá¬ážááᯠááááºážáááºážáá¬ážááá·áº ááá¯ááºá áááá á¬áá»ááºááŸá¬ááœáẠáá±áá¬á¡áá Ạáá±á«áºáá¬áááºá áááºážááá¯á·ááẠáááááŒá¯ááŒá®ážáá±á¬áẠá¡ááŒá¬ážááœá±áá±ážááœá±áá°áá»á¬ážá¡ááœáẠáááŸáááá¯ááºáá±á¬ ááá¯ááºááá¯ááºáá¬ážááŸááºážá¡áááºážáá»á¬ážááŒá áºááẠ(ááá¯ážááá¯ážááŸááºážááŸááºážá¡ááœááºá áá®ážááŒá¬ážááœá²áá¯ááºááŸá¯á¡ááá·áºááẠRead Committed áᯠáá»áœááºá¯ááºááá¯á· áá°ááá«áááº)á
ááá¯á·áá±á¬áẠááá·áºááœááºážááŸá¯áá»á¬ážáá²á០áá
áºáá¯ááᯠá¡ááºááááºáá¯ááºáᬠáá¬ážááŸááºážáá±á¬ááºážááᯠááááºááá¯ááºáá±á¬á·ááŒá±á¬ááºáž á¡ááŸááºá¡áá¬ážááŒá¯áá«áááºá
áá
áºááá·áºááŒá®ážáá
áºááá·áºá á¡áááºážáá¬ážááŸááºážáá»á¬ážááᯠá¡ááá·áºááŒáŸáá·áºáááºááŒááºážááŸáá·áº áá»ááºááŒááºážá áá±áá¬áá
áºáááºááá·áºááẠ"á¡ááŸáá¯ááº" ááŒá
áºááá·áº á
á¬áá»ááºááŸá¬áá
áºáá¯ááŒáá·áº á¡áá¯á¶ážáááºáá²á·áááºá á€áá±áá¬ááᯠáááºááá·áºááœá±ááŒá±ážááœáŸá²ááŒá±á¬ááºážááŸá¯ááœááºáá»áŸ áááŒááºááá¯ááºáá«á
Postgres ááœáẠááá¹ááá¬ážáá
áºáá¯ááŸááááºá
ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·áá¥ááá¬ááœááºá áá áºáá»áááºáá»áááºááœáẠááá¬ážááœáẠá á¬áá»ááºááŸá¬áá±ážáá»ááºááŸá¬áá«áááá·áºáááºá ááá¯á·áá±á¬áº áááºážááœáẠáá áºáááºáá¬áá±á¬ ááá¯ááºááá¯ááºáá±áá¬áá«ááŸááááºá ááááºá¡áá±ááŒáá·áºá ááá¬ážááá¯áááºáá±á¬ááºáá±á¬á¡áá«á áá»áœááºá¯ááºááá¯á·ááẠááá¯á¡ááºáááºáááºááá¯á á¡áá»ááºá¡áááºáá»á¬ážá áœá¬ááᯠáááºáá«áááºá
ááᯠVACUUM ááẠááááºááá¯ááºáá±á¬á¡áááºážáá¬ážááŸááºážá¡á¬ážáá¯á¶ážááᯠáá»ááºááá¯ááºáá»áŸááºáááºá á¡ááŒá±á¡áá± áááááá¬áᬠáá±á¬ááºážááœááºáá¬áááºááá¯ááºáá«á á¡áááºážáá
áºá¡ááœáẠá
á¬áá»ááºááŸá¬áá»á¬áž ááá¯á·ááá¯áẠá
á¬áá»ááºááŸá¬áá
áºáá¯áá¯á¶ážááœáẠáá±áá¬ááœááºááŸááááºááŒá
áºáá±á¬áºáááºáž ááá¯á¡ááºáááºáááºááá¯á áá±áá¬ááᯠáá»áœááºá¯ááºááá¯á· áááºáááºáááºááŸá¯áá±áá«áááºá
á
áá¬ážáá
ááºá ááá¯ááºáá¡áá¯á¶ážááœáẠáá¯á¶ážáááá¬ááŒá
áºáá±ááẠ(áá»áœááºá¯ááºááá¯á·áá¥ááá¬ááŸá áá¯áááá
á¬áá»ááºááŸá¬) ááŒá
áºáá«á VACUUM ááẠáááºážááá¯áá»á¯á¶á·ááá¯ááºáááºááŒá
áºáááºá ááá¯áá° áá°áááẠá¡áááºááœááºááŸááá±ááŒá®ááŒá
áºáá±á¬ááŒá±á¬áá·áº áá°áá¡ááœáẠáá¬ááŸáá¯ááºááá±ážááá¯ááºáá«á
ááá¯áá²á·ááá¯á· ááᬠááá¯á·ááá¯áẠá¡ááœááºáá»á²áá±á¬ á
á¬áá»ááºááŸá¬á¡áá±á¡ááœáẠááŒá®ážáá¬ážáá¬áá±á¬á¡áá«á bloat áá¯áá±á«áºáá±á¬á áááºážááẠá
áœááºážáá±á¬ááºáááºááᯠá
áááºáááºáá±á¬ááºáá«áááºá
á¡áááºáá±á¬áºááŒáá«á¡áá¬á¡á¬ážáá¯á¶ážááẠááá¬ážáá»á¬ážááœáẠáá±á¬ááºážááœááŸá¯ááŒá áºáá±á«áºááŒááºážá á ááºááŒááºááŒá áºáááºá á¡ááœáŸááºážááááºážáá»á¬ážááœáẠá€áááºážá¡ááá¯ááºážááẠááŒá áºáááºáá«áááºá
áá«á·ááŸá¬ áá±á¬ááºážáá±ááá¬áž
ááá·áºááœáẠáááºážáá»á¯ááºááŒááºážááŸááááŸá áá¯á¶ážááŒááºááẠáááºážáááºážáá»á¬ážá
áœá¬ááŸááá«áááºá áááá¡ááŒá¶á¥á¬ááºááŸá¬ ááá¬ážáá»á¬ážááŸá á¡áááºážá¡áá±á¡ááœááºá ááá¯ááºááá¯ááºáá¯ááºááœáŸáá·áºááá·áº á¡áááºážá¡áá±á¡ááœááºá
áááºááŒáá·áº á¡áá®ážá
ááºáá¯á¶ážá¡áá»ááºá¡áááºáá»á¬ážáá«ááŸááá±á¬ ááŒááºááœááºáž Postgres á
á¬áááºážá¡ááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áááºááŒá
áºáááºá á¡ááºáá¬áááºáá±á«áºááœáẠá¡ááá·áºáá¯ááºáá¬ážáá±á¬ script á¡áá»á¬ážá¡ááŒá¬ážááᯠáááºááŸá¬ááœá±á·ááá¯ááºáá«áááºá á¡ááŒá±áá¶á¡ááŒá
áºáá°áááºá
áá±á¬ááºááááºážááá±á¬á· Extension ááá¯áá¯á¶ážááá¯á·áá«á
áá»áœááºá¯ááºááá¯á·ááẠ20% á¡áá áááºáá¶ááá¯ááºáá±á¬ áá±ážáááºáá±á¬ bloat áááºááá¯ážááᯠáá¯á¶ážáááºáá«áááºá áááºážááᯠfillfactor á analogue á¡ááŒá
Ạáá°áááá¯ááºáááºá
áááºážáá»á¯ááºááŒááºážááᯠááá¯ááºáá»ááºáááºážáá»á¬áž
Postgres ááẠáá±á¬ááºáá²á áááºážáá»ááºááŒááºážááᯠááá¯ááºááœááºááŒá±ááŸááºážááẠáááºážáááºážáá»á¬ážá áœá¬ááŸááá±á¬áºáááºáž áááºážááá¯á·ááẠáá°ááá¯ááºážá¡ááœáẠá¡ááŒá²áááºáž áááá·áºáá»á±á¬áºáá«á
áá±á¬ááºážááŒááºážáááŒá áºáá±á«áºá á±ááẠAUTOVACUUM ááᯠá á®á ááºáááºááŸááºáá«á. ááá¯á·ááá¯áẠááá¯ááááá»á áœá¬á áááºážááᯠááá·áºáááºáá¶ááá¯ááºáá±á¬ á¡ááá·áºááœáẠáá¬ážááŸááááºá áááºážááẠ"ááá¹áááááºá" á¡ááŒá¶áá¬ááºááŸáá·áºáá°áá¯á¶ááááºá ááá¯á·áá±á¬áºáááºááœá±á·ááœááºáááºážáááºá¡á±á¬ááºááŒááºáááºá¡ááŒá²áááºážáááœááºáá°áá«á á¥ááá¬á¡á¬ážááŒáá·áºá ááá·áºááœáẠáá±áá¬á¡á á®á¡á ááºááᯠáá¯á¶ááŸááºááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááŒáá·áº áááºááŒáœá áœá¬ ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ááŸááááºá ááá¯á·ááá¯áẠá¡áá»áá¯á·áá±á¬áá±áá¬ááœáŸá±á·ááŒá±á¬ááºážááŸá¯áá»áá¯áž áá¯ááºáá±á¬ááºáá±áá«áááºá ááááºá¡áá±ááŒáá·áºá áááºá load profile ááẠáááŒá¬áá ááŒá±á¬ááºážáá²ááá¯ááºááŒá®áž áá¯á¶ááŸááºá¡á¬ážááŒáá·áº ááá¬ážáá áºáá¯á០áá áºáá¯ááá¯á· ááœá²ááŒá¬ážáááá·áºáááºá ááá¯ááá¯áááºááŸá¬ áááºááẠá¡áááºážááẠááŸá±á·ááá¯á· á¡áááºáááŒáẠáá¯ááºáá±á¬ááºááŒá®áž ááá¬ážáá áºáá¯á á®á ááŒá±á¬ááºážáá²áá±áá±á¬ áááá¯ááá¯ááºááá¯á· AUTOVACUUM ááᯠáá»áááºááŸáááẠááá¯á¡ááºáááºá áá«áá±ááá·áº áá®ááá¯áá¯ááºááᬠáááœááºáá°ážááá¯áᬠáááá¬áá«áááºá
AUTOVACUUM ááẠááá¬ážáá»á¬ážááᯠááá¯ááºááá®ááá¯ááºáááá·áº á¡ááŒá±á¬ááºážáááºážááŸá¬ ááá¯ááœá±áá±ážááœá±áá°áá»á¬ážá¡ááœáẠáááŸáááá¯ááºáá±á¬ áá±áá¬áá»á¬ážááᯠááŸááºážáá¯ááºááŒááºážá០ááá·áºáá¬ážáá±á¬ áá¬áááŸááºááŒá¬ ááœá±áá±ážááœá±áá°ááŸá¯áá»á¬áž ááŸááá±áá±á¬ááŒá±á¬áá·áº ááŒá áºáááºá á€áá±áá¬ááœáẠá¡ááŒá¶ááŒá¯áá»ááºááŸá¬áááºáž áááá¬áááºááŸá¬ážááẠ- âdanglingâ á¡áá±á¬ááºážá¡áááºáá»á¬ážááᯠáááºááŸá¬ážááŒá®áž áááºááŒáœáá±á¬ á¡áá±á¬ááºážá¡áááºááŒá¯áá¯ááºááá·áºá¡áá»áááºááᯠáá»áŸá±á¬á·áá»áá«á ááá¯á·áá±á¬áº ááá·áºáá»áŸá±á¬ááºááœáŸá¬ááœáẠload ááẠOLAP ááŸáá·áº OLTP ááá¯á·á áá±á«ááºážá ááºáá áºáá¯ááŒá áºáá«áá áááºááẠáááŒáá¯ááºáááºááœáẠáááŒá¬áá á¡ááºááááºáá»á¬ážááŸáá·áº ááá¯áá±á¬ááºážáá±á¬ á á¯á¶á ááºážáá±ážááŒááºážááŸá¯áá»á¬ážá¡ááŒáẠáá±ááŸááºáá¯ááºáá±á¬ááºááŸá¯áá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážááŸáááẠ- á¥ááá¬á á¡á á®áááºáá¶á á¬áá áºáá¯ááᯠáááºáá±á¬ááºááŒááºážá ááá¯ááá¯á·áá±á¬á¡ááŒá±á¡áá±áá»áá¯ážááœááºá áááºážááá¯á·áá áºáá¯á á®ááᯠááá¯ááá¯áá±á¬ááºážááœááºá áœá¬áá»áááºááŸáááá¯ááºá á±ááá·áº ááá°áá®áá±á¬á¡ááŒá±áá»á¬ážáá áºáá»áŸá±á¬áẠáááºááá¯ááŒáá·áºááŒááºááẠá ááºážá á¬ážááá·áºáááºá
á¡ááŒá¬ážá¥ááá¬- áááá¯ááá¯ááºááẠáá áºáá¬ážáááºážááŒá áºáá±áá»áŸááºáááºá ááá¯á·áá±á¬áº áá±áá¬áá±á·á áºááẠá¡ááœááºááŒáá·áºáá¬ážáá±á¬áááºá¡á±á¬ááºááœáẠááŸááá±áááºá ááá¯á·áá±á¬áẠá¡ááŒááºážáááºáá¯á¶ážáá±á¬ AUTOVACUUM áááºááẠááááºážáááá¯ááºááŒá áºááŒá®áž áá±á¬ááºážáá¬ážáá¬áááºááŒá áºáááºá á¡ááá¯ááºážá¡áᬠ(áá±á«ááºááá¯áẠááá¯á·ááá¯áẠá¡áá»á¬ážááá¯ááº) ááẠáá áºáá¯áááºážáá±á¬ ááŒá±ááŸááºážáá»ááºááŒá áºáááºá
AUTOVACUUM ááᯠáááºáááºáá¬ážááá·áº á¡ááŒá±á¡áá±ááœáẠáá¬áá¯ááºááááºáááºážá
á¡ááœá²á· áá¯ááºá á¯ááºá áẠá¡ááŒáá·áº ááá¬ážáá»á¬ážááŸáá·áº á¡ááœáŸááºážááááºážáá»á¬ážá á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠááŒááºáááºáááºáá±á¬ááºááŒá®áž áááºážááá¯á·ááœáẠáááºááá¯ááºáᬠá¡áá»ááºá¡áááºáá»á¬ážááá¯áᬠáá»ááºáá¬ážáááºá áá±á¬ááºážááœááŸá¯ááᯠáááºááŸá¬ážáááºá áááºážááẠááŒá®ážááŒáá·áºá á¯á¶á áœá¬ áá¯ááºáá±á¬ááºááá¯ááºáá±á¬áºáááºáž áááºážááá¯ááºáá±á¬ááºááŸá¯á¡ááœááºáž á á¬ážááœá²áá±á«áºááŸá áá®ážááá·áºáá±á¬á·ááá±á¬ááºáá áºáᯠ(AccessExclusiveLock) ááᯠáááºážáá°áá¬ážááŒá®áž á€ááá¬ážááŸá á á¯á¶á ááºážáá±ážááŒááºážááŸá¯áá»á¬ážááá¯ááẠáá¯ááºáá±á¬ááºááœáá·áºáááŒá¯áá² ááœá±ážáá»ááºáá¬ážáááºá á¡áááºá áááºááẠáááºá áááºáá±á¬ááºááŸá¯ ááá¯á·ááá¯áẠáááºážá á¡á áááºá¡ááá¯ááºážááᯠá¡áá»áááºá¡áááºááŒá¬ áááºááá·áºááẠáááºááá¯ááºáá»áŸáẠ(áá±áá¬áá±á·á áºááŸáá·áº áááºá áá¬á·ááºáá²á á¡ááœááºá¡á á¬ážáá±á«áº áá°áááºá áááá Ạáááºááááºážá០áá¬áá®áá»á¬ážá áœá¬á¡áá)á ááá¯á·áá±á¬áẠá€ááœá±ážáá»ááºááŸá¯ááẠá¡áá±á¬ááºážáá¯á¶ážááŒá áºáááºá áááºážáááºážáá«áááºá áá»áœááºá¯ááºááá¯á·ááœáẠVACUUM FULL ááᯠá á®á ááºááááºážááááºážáá¬ážá ááºá¡ááœááºáž áá¯ááºáá±á¬ááºááẠá¡áá»áááºáááŸááá±á¬ááŒá±á¬áá·áº á€áááºážáááºážááẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠáááá·áºáá»á±á¬áºáá«á
á¡ááœá²á· áááºážááœá² VACUUM FULL áá²á·ááá¯á·ááẠááá¬ážáá»á¬ážá á¡ááŒá±á¬ááºážá¡áá¬áá»á¬ážááᯠááŒááºáááºáááºáá±á¬ááºáá±ážáááºá ááá¯á·áá±á¬áº áá±áá¬ááᯠáá áºááºáá±á«áºááœáẠáá¯ááºááá¯ááºážááá¯ááºáᬠá á®á á¥áºáá¬ážááá·áº á¡ááœáŸááºážáá áºáá¯ááᯠáááºááŸááºááœáá·áºááŒá¯ááẠ(ááá¯á·áá±á¬áº áá±á¬ááºááœáẠá¡áááºážá¡áá áºá¡ááœáẠá¡á¬ááá¶áá»ááºáááŸááá«)á á¡áá»áá¯á·áá±á¬á¡ááŒá±á¡áá±áá»á¬ážááœááºá á€á¡áá¬ááẠááŸááºáááºážáá»á¬ážá áœá¬ááᯠá¡ááœáŸááºážááŒáá·áºáááºááŒááºážááŸáá·áºá¡áá° queries á¡áá»á¬ážá¡ááŒá¬ážá¡ááœáẠáá±á¬ááºážááœááºááá·áºáá»á±á¬áºááŸá¯áá áºáá¯ááŒá áºáááºá command áá¡á¬ážáááºážáá»ááºááẠVACUUM FULL ááŸáá·áºá¡áá°áá°áááºááŒá áºááẠ- áááºáááºáá±á ááºá¡ááœááºážááá¬ážááá¯áá±á¬á·áááºáááºá
á¡ááœá²á· REINDEX ááááºááŸá
áºáá¯ááŸáá·áº áááºáá°áá±á¬áºáááºáž ááá¬ážá áááá»áá±á¬á¡ááœáŸááºáž ááá¯á·ááá¯áẠá¡ááœáŸááºážá¡á¬ážáá¯á¶ážááᯠááŒááºáááºáááºáá±á¬ááºáááºá áá±á¬á·ááºáá»á¬ážááẠá¡áááºážááẠá¡á¬ážáááºážáááº- á
á¬ážááœá²áá±á«áºááŸá ShareLock (ááŒá¯ááŒááºááœááºážáá¶ááŸá¯áá»á¬ážááᯠáá¬ážáá®ážáá¬ážáá±á¬áºáááºáž ááœá±ážáá»ááºááŸá¯ááᯠááœáá·áºááŒá¯áááº) ááŸáá·áº á¡ááœáŸááºážááœáẠAccessExclusiveLock ááŒááºáááºáááºáá±á¬ááºááŒááºáž (á€á¡ááœáŸááºážááᯠá¡áá¯á¶ážááŒá¯á áá±ážááŒááºážááŸá¯áá»á¬ážááᯠááááºááá¯á·áááº)á ááá¯á·áá±á¬áº Postgres á 12th áá¬ážááŸááºážááœáẠparameter áá
áºáá¯áá±á«áºáá¬áááºá
Postgres á á¡á
á±á¬ááá¯ááºážáá¬ážááŸááºážáá»á¬ážááœááºá áááºááẠREINDEX ááᯠáá
áºááŒáá¯ááºááẠá¡áá¯á¶ážááŒá¯ááŒááºážááŸáá·áº á¡áá¬ážáá° ááááºááᯠáááŸáááá¯ááºáááºá
ááá¯á·ááŒá±á¬áá·áºá á¡ááœáŸááºážááááºážáá»á¬ážá¡ááœáẠ"áá»á¶áá²ááŒááºáž" ááá¯áááºááŸá¬ážáááºáááºážáááºážáá»á¬ážááŸááá«áá ááá¬ážáá»á¬ážá¡ááœááºáááŸááá«á á€áá±áá¬ááœáẠá¡áá»áá¯ážáá»áá¯ážáá±á¬ ááŒááºá extension áá»á¬áž áá«áááºáá¬áááº-
pg_repack áááºááá¯á¡áá¯ááºáá¯ááºááá²á
áá»áœááºá¯ááºááá¯á·ááœáẠá¡ááœáŸááºážáá»á¬ážá ááá·áºáááºáá»ááºáá»á¬ážá áá¶ááá±á¬ááºážá
áœá¬ááŒáá·áº áá±á¬ááºážááœáá±á¬ áá¯á¶ážáá¯á¶ážáá»á¬ážáá»á¬áž á
á¬ážááœá²áá
áºáá¯á¶ážááŸáááẠááá¯ááŒáá«á
áá¯á·á pg_repack á áááá¡ááá·áºááŸá¬ áááºážáá¯ááºáá±á¬ááºáá±áá»áááºááœáẠááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááᯠááááºážáááºážáááºá¡ááœáẠááŸááºáááºážááá¬ážáá
áºáᯠáááºáá®ážáááºááŒá
áºáááºá ááá·áºááœááºážááŸá¯á á¡ááºááááºááŸáá·áº áá»ááºááŸá¯ááá¯ááºážá¡ááœáẠá€ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠá¡á
áá»áá¯ážááŸá¯á០áááºáá°ááœá¬ážá
á±áááºááŒá
áºáááºá ááá¯á·áá±á¬áẠáá±áá¬ááá·áºááœááºážááŒááºážáá¯ááºáááºážá
ááºááᯠááŸá±ážááœá±ážá
á±áááºá¡ááœáẠá¡ááœáŸááºážáá»á¬ážááŸáá·áº ááá·áºáááºáá»ááºáá»á¬ážááá«áá² ááá¬ážáá
áºáá¯ááᯠáááºáá®ážáá«áááºá
ááá¯á·áá±á¬ááºá pg_repack ááẠááá¬ážáá±á¬ááºážá០áá±áá¬áá»á¬ážááᯠááá¬ážá¡áá áºááá¯á· ááœáŸá²ááŒá±á¬ááºážáá±ážáá¬á ááááºááá¯ááºáá±á¬ á¡áááºážá¡á¬ážáá¯á¶ážááᯠá¡ááá¯á¡áá»á±á¬áẠá á áºáá¯ááºáᬠááá¬ážá¡áá áºá¡ááœáẠá¡ááœáŸááºážáá»á¬ážááᯠáááºáá®ážáá±ážáááºá á€áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá¡á¬ážáá¯á¶ážááᯠáá¯ááºáá±á¬ááºáá±á ááºá¡ááœááºáž á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááẠááŸááºáááºážááá¬ážááœáẠá á¯áá¯á¶áá±áá«áááºá
áá±á¬ááºáá áºááá·áºááŸá¬ á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠááá¬ážá¡áá áºááá¯á· ááœáŸá²ááŒá±á¬ááºážáááºááŒá áºáááºá ááœáŸá±á·ááŒá±á¬ááºážááŒááºážá¡á¬áž á¡ááŒáááºááŒááẠáááºáá«áááºáá« áá¯ááºáá±á¬ááºááŒá®áž ááŸááºáááºážááá¬ážááœáẠááá·áºááœááºážááŸá¯ 20 áááºáááºážáá±á¬ á¡áá»áááºááœááºá pg_repack ááẠááá¯ááºáá¬áá±á¬áá±á¬á·ááᯠááá°ááŒá®áž áá±á¬ááºáá¯á¶ážáá±áá¬ááᯠááœáŸá±á·ááŒá±á¬ááºážáᬠPostgres á áá áºááá¬ážááŸá ááá¬ážáá±á¬ááºážááᯠá¡áá áºááŸáá·áº á¡á á¬ážááá¯ážáááºá á€á¡áá»áááºááẠááẠá á¬ážááœá²ááŸáá·áº á¡áá¯ááºááœá²áá¯ááºááá¯ááºáááºááá¯ááºááá·áº áá áºáá¯áááºážááŸáá·áº á¡ááœááºááá¯áá±á¬ááºážáá±á¬ á¡áá»áááºááŒá áºáááºá áááºážáá±á¬ááºá ááá¬ážáá±á¬ááºážááŸáá·áº ááŸááºáááºážáá«ááŸááá±á¬ ááá¬ážááᯠáá»ááºááŒá®áž ááá¯ááºá áá áºááœáẠáá±áá¬ááœááºáá»á¬áž áá±á«áºáá¬áááºá áá¯ááºáááºážá ááºááŒá®ážáá«ááŒá®á
á¡áá¬á¡á¬ážáá¯á¶ážááẠáá®á¡áá¯áá®á¡á áá±á¬ááºážááœááºááŸáá±á¬áºáááºáž áááºááœá±á·ááœáẠáá¬ááŒá áºááœá¬ážááááºážá áá»áœááºá¯ááºááá¯á·ááẠpg_repack ááᯠload ááŸáá·áº load ááá«áá² á ááºážáááºááŒá®áž á¡áá»áááºááááºáá® áááºááá·áºááœá¬ážáá±á¬á¡áá«ááœáẠáááºážááá¯ááºáá±á¬ááºáá»ááºááᯠá á áºáá±ážáá²á·ááẠ(áá áºáááºážá¡á¬ážááŒáá·áº 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 á០áááºáá®ážáá¬ážáááºá áááºážáááœá²á·á
ááºážááŸá¯ááœááºáá«áááºáá±á¬ á¡áááºá¡áá»ááºážáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á áááºážááŸáá·áºááá¯ááºáá®áá±á¬ "áá»áœááºá¯ááºááá¯á·á" ááá·áºáááºáá»ááºááᯠáá»áœááºá¯ááºááá¯á· áá¯á¶ážááŒááºáá²á·áááºá ááŒá¿áá¬á áá«áᬠáá¯á¶ážá áá¬áá¬áẠááá·áºáááºáá»áẠááá¯ááºáá«áá°ážá ááœáŸá±á·ááá¯ááºážááá¯ááºáᬠ(
ááœáŸá±á·ááá¯ááºážáá¬ážáá±á¬ ááá·áºáááºáá»ááºáá»á¬áž- áááºážááá¯á·ááẠá¡áááºááŒá±á¬áá·áº ááá¯á¡ááºááŒá®áž áááºážááá¯á· áááºááá¯á·á¡áá¯ááºáá¯ááºááááºážá
ááœáŸá±á·ááá¯ááºážááá·áºáááºáá»ááºáá»á¬ážá¡ááŒá±á¬ááºáž áá®á¡áá¯áá®á¡áááºážáááºá
ááá¯ážááŸááºážáá±á¬á¥ááá¬áá
áºáá¯ááᯠáá¯á¶ážáááºááŒáá·áºááŒáá«á
áá¯á·- áá»áœááºá¯ááºááá¯á·ááœáẠáááºááœáŸááºážáá»ááºááŸá
áºáá¯áá«ááŸááá±á¬ áá¬ážáá»á¬ážá ááá¬áž-áááºážááœáŸááºá
á¬á¡á¯ááºááœáẠáá¬ážáá¡áááºááŸáá·áº á¡á
á®á¡á
á¥áºááŸááááºá
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â ááá¬ážááœáẠáááŸááᯠá¡á¬ááá¶áá¬ážáá±á¬ á¡ááŸá¬á á¬áá áºáá¯ááá¯á· á¡ááá¯áááºááá¯ážá¡á á¬ážááá¯ážááŸá¯áá áºáá¯ááᯠááá·áºáá«á áááá¯ááááºáá±ážááœá²ááŒááºážááœááºá áááºážááᯠ"ááááºážááŸááºááŸá áºáá¯ááááºááá¯ážáá»á¬ážááᯠáá¯á¶ážáá¯á¶áá áºáá¯á¶ááá¯á·áááŸááºááŒááºáž" áá¯áá±á«áºáááºá á€áááºážáááºážááá áºáá¯áááºážáá±á¬á¡á¬ážáááºážáá»ááºááŸá¬ áááºáá±á¬ááºážááœááºážáá¶ááŸá¯ááŒá áºáááºá
ááœá±ážáá»ááºá áá¬ááŸá áºáá¯- ááááºážááŒáá·áºá¡á á¬áž á¡ááŸá¬á á¬áááºááá¯ážá¡ááœáẠfloating point data type ááá¯á¡áá¯á¶ážááŒá¯ááẠááá¬ážááᯠááŒááºáááºáá®ááá¯ááºážááœá²áá«á ááá¯á·áá±á¬ááºá á¥ááá¬á 1 á០2.5 ááá¯á· áááºááá¯ážááᯠá¡ááºááááºáá¯ááºáá±á¬á¡áá«á ááá entry ááẠáá¯áááááŸáá·áº ááááááŒá¬ážááœáẠá¡ááá¯á¡áá»á±á¬áẠâáááºâ áááá·áºáááºá á€ááŒá±ááŸááºážáá»ááºááẠá¡áá¯ááºáá¯ááºáá±á¬áºáááºáž ááá·áºáááºáá»ááºááŸá áºáá¯ááŸááááºá ááááŠážá áœá¬á áááºááá¯ážááᯠá¡ááºáá¬áá±á·á áºá áá áºáá±áá¬áá¬ááœáẠá¡áá¯á¶ážááŒá¯áá«á ááá·áºá¡ááœáẠá¡áááºáááŒá±áá«á áá¯áááá¡áá»ááºá áá±áá¬á¡áá»áá¯ážá¡á á¬ážááááá»ááŸá¯áá±á«áºáá°áááºá ááŸááºáááºážá¡á¬ážáá¯á¶ážááááºááá¯ážáá»á¬ážááᯠááŒááºáááºáááœááºáá»ááºáá® ááŒá áºááá¯ááºáá±á¬ááá·áºááœááºážááŸá¯á¡áá±á¡ááœáẠá¡ááá·áºá¡áááºááŸááááºááŒá áºáááºá
ááœá±ážáá»ááºááŸá¯ á- ááá·áºáááºáá»ááºááᯠááœáŸá±á·ááá¯ááºážáá¬ážáááºá áááááááºááŒá¯ááá·áºá¡áá»áááºááœááºáᬠá á áºáá±ážáááºá
create table cars
(
name text constraint pk_cars primary key,
ord integer not null constraint uk_cars unique deferrable initially deferred
);
áá»áœááºá¯ááºááá¯á·á áááŠážáá±á¬ááºážááá¯áá»ááºá áá¯áá¹áááá±áááẠáááááááºááŒá¯áá»áááºááœáẠáááºááá¯ážáá»á¬ážá¡á¬ážáá¯á¶ážááẠáá°ážááŒá¬ážááŒá±á¬ááºáž áá±áá»á¬á á±áá±á¬ááŒá±á¬áá·áºá áááºážááẠá¡á±á¬ááºááŒááºáááá·áºáááºá
á¡áááºááœááºáá±á¬áºááŒáá¬ážáá±á¬ á¥ááá¬ááẠáá±á«ááºážá ááºááœá²á·á ááºážááŸá¯ááŒá áºáááºá ááá¯á·áá±á¬áº áááºážááẠá áááºáá°ážááá¯áá±á¬áºááŒáááºá áá»áœááºá¯ááºááá¯á·á á¡ááá®áá±ážááŸááºážááœááºá á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠáá¯ááºáá±á«áºááœáẠáá»áŸáá±áá¬ážáá±á¬ áá áºáá»ááºá¡áá¬ááá¹áá¯áá»á¬ážááŸáá·áº áá áºááŒáá¯ááºááẠáá¯ááºáá±á¬ááºááá·áºá¡áá« áááááá¹ááá»á¬ážááᯠááŒá±ááŸááºážááẠáá¬áááºááŸááá±á¬ áá¯áá¹áááá±áááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááẠááœáŸá±á·ááá¯ááºážááá·áºáááºáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯áá«áááºá ááá¯ááá·áºáááºáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŒáá·áº áá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºážáá¯ááºááᯠá¡áááºážáááºááá¯ážááŸááºážá¡á±á¬áẠááŒá¯áá¯ááºááá¯ááºá á±áá«áááºá
áá±áá¯áá»á¡á¬ážááŒáá·áºá ááá·áºáááºá¡áá»áá¯ážá¡á
á¬ážáá±á«áºáá°áááºá Postgres ááœáẠáááºážááá¯á·ááá¯á
á
áºáá±ážáááºá¡ááœáẠá¡áá±ážá
áááºá¡ááá·áºáá¯á¶ážááá·áºááŸááááº- á¡áááºážá ááœá±áá±ážááœá±áá°ááŸáá·áº áá±á¬áºááŒááŸá¯á¡ááá·áºáá»á¬ážá
source:
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 ááŸá áá®ážááá·áºááá·áºáááºáá»ááºáá»á¬ážááᯠáá®ážááá·áºá¡ááœáŸááºážáá
áºáá¯áááºáá®ážááŒááºážááŒáá·áº á¡áá±á¬ááºá¡áááºáá±á¬áºáá«áááºá ááá¯á·áá±á¬áº ááœáŸá±á·ááá¯ááºážááá·áºáááºááŸá¯áá
áºáá¯á¡ááœááºá á¡ááœáŸááºážááááºážááᯠááœáŸá±á·ááá¯ááºážáááááá·áºá¡ááŒáẠsql á¡áááá·áºááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá»áááºááœáẠá¡ááŒá²áááºážá
á
áºáá±ážáá±áá±á¬ááŒá±á¬áá·áº á¡ááŒá¯á¡áá°ááẠáá°áá®áááºááá¯ááºáá«á
ááá¯á·ááŒá±á¬áá·áºá ááŒá¿áá¬áá¡ááŸá áºáá¬áááŸá¬ check á "ááŸá±á¬áá·áºááŸá±áž" ááœáẠáááºááŸááááº- áá°áááºážááá¬ážááœáẠáááºážááẠcommit áá¯ááºááá·áºá¡áá»áááºááœáẠááŒá áºáá±á«áºááŒá®áž sql command ááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá»áááºááœáẠááá¬ážá¡áá áºááœááºááŒá áºáááºá ááá¯ááá¯áááºááŸá¬ á á áºáá±ážááŸá¯ááŸá áºáá¯á áá¯á¶ážááœáẠá¡áá¬ážáá°áá¯ááºáá±á¬ááºááŒá±á¬ááºáž áá±áá»á¬á á±ááẠááá¯á¡ááºáááº- á¡ááŒá²áááºážááŸá±á¬áá·áºááŸá±ážááŒááºáž ááá¯á·ááá¯áẠá¡ááŒá²áááºážáá»ááºááŒááºážááŒá áºá á±ááẠááá¯á¡ááºáááºá
áá«ááᯠáá«ááá¯á·ááŸá¬ áá¬á áááºáá°ážááœá±ááŸááá²á
áá»á¬ááºážáá°á¡ááœáŸááºážáá áºáᯠáááºáá®ážáá«á
áááá¡ááŒá¶ááŸá¬ á á áºáá±ážáá»ááºááŸá áºáá¯áá¯á¶ážááᯠáá»ááºáá»ááºážáá¯ááºááœáẠáá¯ááºáá±á¬ááºáááºááŒá áºáááºá áááºážááẠááŸá¬ážááœááºážáá±á¬ á¡ááŒá¯ááá±á¬áá±á¬ááºááá·áº ááá·áºáááºáá»ááºáá»á¬áž á¡áá»á¬ážá¡ááŒá¬ážááᯠáá¯ááºáá±ážááá¯ááºáá±á¬áºáááºáž áááºážááá¯á·áá²á០á¡áááºážáááºáá¬ááŸááá«áá ááá¯ááá¯á·áá±á¬ áááááá¹ááá»á¬ážááẠáááºážááá¯á·á¡ááœáẠáá¯á¶ááŸááºá¡ááŒá±á¡áá±ááŒá áºáá±á¬ááŒá±á¬áá·áºá áááºážááẠá¡áá¯á¶ážááŒá¯áá°áá»á¬ážá áá¯ááºáááºážááᯠáááááá¯ááºá á±ááá·áºáá«á á¥ááá¬á¡á¬ážááŒáá·áºá á¡áá¯á¶ážááŒá¯áá°ááŸá áºáŠážááẠáá°áá®áá±á¬áá áºáá»ááºááᯠáá áºáá»áááºáááºážáááºážááŒááºááŒááºážá áááºááá·áºá¡áá«á áá¯áááá¡áá¯á¶ážááŒá¯áá°á client ááẠáááá¡áá¯á¶ážááŒá¯áá°á០áááºážááŒááºáááºá¡ááœáẠáá áºáá»ááºááᯠááááºááá¯á·áá¬ážááŒá®ážááŒá áºááá·áº á¡áá»ááºá¡áááºááᯠáááºáá¶áááŸáááẠá¡áá»áááºáááŸááá«á ááá¯ááá¯á·áá±á¬á¡ááŒá±á¡áá±áá»áá¯ážááœááºá áá¬áá¬ááẠáá¯áááá¡áá¯á¶ážááŒá¯áá°ááᯠááŒááºážáááºááŒá®áž áááºážááá±á¬ááºáááºááẠá¡ááŒá±á¬ááºážá¡áá²áá»á¬ážááᯠááŒááºááááºážáᬠáá áºáá»ááºááᯠááááºááá¯á·áááºá ááá¡ááŒá¬á áááá¡áá¯á¶ážááŒá¯áá°ááẠáááºážááŒááºááŸá¯ááŒá®ážááœá¬ážáá±á¬á¡áá«á áá¯áááááẠáá áºáá»ááºááᯠááááºááá¯á·áá¬ážááŒááºážáááŸááá±á¬á·ááá·áº á¡áá»ááºá¡áááºáá»á¬ážááᯠáááºáá¶áááŸááááºááŒá áºááŒá®áž áááºážááá¯á·ááá¯ááºáá±á¬ááºáá»ááºááᯠááŒááºáááºáá¯ááºáá±á¬ááºááá¯ááºáááºááŒá áºáááºá
á á áºáá±ážááŸá¯áá»á¬ážááẠááœáŸá±á·ááá¯ááºážááŒááºážáááŸáááá·áºáá¯ááºááœáẠá¡ááŒá²ááŸááá±ááŒá±á¬ááºáž áá±áá»á¬á á±áááºá áá»áœááºá¯ááºááá¯á·ááẠáá°áááœáŸá±á·ááá¯ááºážáá¬ážáá±á¬ ááá·áºáááºáá»ááºááŸáá·áº áááºáá°áá±á¬ á¡ááœáŸááºážá¡áá áºáá áºáá¯ááᯠáááºáá®ážáá²á·áááº-
CREATE UNIQUE INDEX CONCURRENTLY uk_tablename__immediate ON tablename (id, index);
-- run pg_repack
DROP INDEX CONCURRENTLY uk_tablename__immediate;
á ááºážáááºááŸá¯áááºáááºážáá»ááºááœááºá áá»áœááºá¯ááºááá¯á·ááẠáá»áŸá±á¬áºááá·áºáá¬ážááá·áº á¡ááŸá¬ážá¡ááœááºážá¡áááºážáááºáá»áŸáᬠáááŸááá²á·áááºá á¡á±á¬ááºááŒáẠáá»áœááºá¯ááºááá¯á·ááẠpg_repack ááᯠáá¯ááºáá¯ááºááŸá¯ááœáẠáááºáá¶áá¯ááºáá±á¬ááºááŒá®áž á¡áá¯ááºáá»áááºáá áºáá¬áá®á¡ááœááºáž áááá¡á á¯ááœáẠá¡ááŸá¬ážá¡ááœááºáž á áᯠááá²á·áááºá á€áááºááŸá¬ áááºáá¶ááá¯ááºáá±á¬ááááºáá áºáá¯ááŒá áºáááºá ááá¯á·áá±á¬áºá áá¯áááá¡á á¯á¡áá±ážááœááºááŸáááŒá®ážáá¬áž á¡ááŸá¬ážá¡ááœááºážá¡áá±á¡ááœáẠáááááá¬áá¬ááá¯ážáá¬ááŒá®áž 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 ááŸááºáááºážáá»á¬ážááŸáá·áº áá®áá»áŸáááºá áááºážááẠáá»áœááºá¯ááºááá¯á·áá á áºáá±ážááŸá¯áá»á¬áž á¡áááºááŒá±á¬áá·áº á¡á±á¬ááºááŒááºááŒá±á¬ááºáž ááŸááºážááŒááẠ- áááºážááá¯á·ááẠâbatch junctionâ ááá á¹á á¡á¬áž á¡áá»á¯á¶ážááááºáá«á áá»áœááºá¯ááºááá¯á·ááẠááœáŸááºááŒá¬ážáá»ááºááŸá áºáá¯ááᯠá¡áá¯á¶ážááŒá¯ááẠ- ááá·áºááœááºážááŒááºážááŸáá·áº á¡ááºááááºáá¯ááºááŒááºáž ááŒá áºáá±á¬ááŒá±á¬áá·áº á¡áááá·áºááŸá áºáá¯á ááœá±áá±ážááœá±áá° 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 áá¬ážááŸááºážá¡áá±á¬ááºážáá»á¬ážááœááºááá¯áá²á·ááá¯á·á¡áá¯ááºáá¯ááºáááº)á ááá¯á·áá±á¬áº ááŒá¿áá¬áá áºáá¯ááŸáááẠ- áá»áœááºá¯ááºááá¯á·ááẠááŸá áºááŸááºááá»á¬áž ááœá±áá±ážááœá±áá°ááᯠáááºáá®ážáá±ááŒá®áž áááºážááẠááááºáááŒá±á¬áá²á·ááá·áºá¡ááá¯ááºáž áá±á¬ááºážááœááŸá¯á¡áá áºáá áºáᯠáá±á«áºáá±á«ááºáá¬á á±ááẠááŒáááºážááŒá±á¬ááºááŸá¯áá áºáá¯ááŒá áºáááºá
áá¯áááááŒá±ááŸááºážáá»ááºááẠááá¯ááá¯ááŸá¯ááºááœá±ážáá±á¬áºáááºáž ááá¯ááŸááºááá¯ááºáááº- ááá¬ážááœáẠáá±áá¬áá»á¬ážááá·áºáá¬ážááá·áº ááœá±áá±ážááœá±áá°á identifier ááŒáá·áº áá±á¬áºáá¶áá áºáá¯ááᯠáááºáá®ážáá«á ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠáá±áá¬ááᯠáá°ážáá°ááá·áºá¡áá«á áááºážááᯠဠattribute ááŒáá·áº á¡á¯ááºá á¯ááœá²á·ááá¯ááºááŒá®áž áááºá ááºááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááᯠá¡áá°ááᜠááœáŸá²ááŒá±á¬ááºážááŒá±á¬ááºáž áá±áá»á¬á á±áá«áááºá á¡á á¯ááá¯ááºááẠááœá±áá±ážááœá±áá°áá»á¬ážá áœá¬ (ááá¯á·ááá¯áẠá¡ááŒá®ážááŒá®ážáá áºáá¯) á០ááœá²á·á ááºážáááºááŒá áºááŒá®áž áááºážááẠá€ááœáŸá²ááŒá±á¬ááºážááŸá¯áá»á¬ážááœáẠáá±áá¬áááºáá»áŸááŒá±á¬ááºážáá²áá²á·áááºáá±á«áºáá°áááºá áááºážáá¡ááœááºá¡á á¬áž ááœá²ááŒá¬ážáááºááŒá áºáááºá ááá°áá®áá±á¬ ááœá±áá±ážááœá±áá°áá»á¬ážá០áá±áá¬áá»á¬ážááẠáá»áááºážá¡á á®á¡á á¥áºááŒáá·áº ááŸááºáááºážááá¬ážáá²ááá¯á· áááºáá±á¬ááºáá¬áá±á¬ááŒá±á¬áá·áº ááááºááá²á·ááá¯á· áááºááá¯ááºáááºááẠáááŒá áºááá¯ááºáá±á¬á·ááŒá±á¬ááºáž áááááŒá¯ááẠá¡áá±ážááŒá®ážáá«áááºá tx_id ááŒáá·áº á á áºáá¯ááºááŒááºážááŒáá·áº áá±á¬ááºážááá¯ááŸá¯áá áºáá¯á á®á¡ááœáẠseqscan ááẠá á»á±ážááŒá®ážááœááºážáááºá á¡ááœáŸááºážáá áºáᯠááá¯á¡ááºáá±á¬áºáááºáž áááºážááᯠá¡ááºááááºáá¯ááºááŒááºážá overhead ááŒá±á¬áá·áº áááºážáááºážááá¯áááºáž ááŸá±ážááœá±ážá á±áááºááŒá áºáááºá áá±áá°áá»á¡á¬ážááŒáá·áºá á¡ááŒá²ááá¯ááá¯á áááºááẠáá áºá á¯á¶áá áºáá¯ááᯠá áœáá·áºááœáŸááºááẠááá¯á¡ááºáááºá
ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠááá¯ááá¯ááá¯ážááŸááºážáá±á¬ááŒá±á¬áá·áº áááááœá±ážáá»ááºááŸá¯ááŒáá·áº á áááºááẠáá¯á¶ážááŒááºáá²á·áááºá ááááŠážá áœá¬á ááŸááºáá»á¬ážáá±á¬ááœá±áá±ážááœá±áá°ááẠáááá·áºááŒá¿áá¬áá¯ááºááá¯áẠáá¬ážáááºááẠááá¯á¡ááºáá«áááºá ááá¬ážáá±á¬ááºážá០áá±áá¬á¡áá áºááá¯á· áááºáááœáŸá²ááŒá±á¬ááºážááŒááºážááẠááŸááºáá»á¬ážáá±á¬ ááœá±áá±ážááœá±áá°áá áºáá¯ááœáẠááŒá áºáá±á«áºáá±á¬ááŒá±á¬áá·áºá "á€ááœá±áá±ážááœá±áá°ááᯠáá»áœááºá¯ááºááá¯á·áááºáá»áŸááá¯ážááŒáŸáá·áºáááºáááºáž" á¡ááŒá áºááá¯á· ááŒá±á¬ááºážáá²ááœá¬ážáá«áááºá ááá ááœá±áá±ážááœá±áá°á ááŒá¬áá»áááºááẠááá¬ážá á¡ááœááºá¡á á¬ážáá±á«áºááœáẠá¡ááá áá°áááºáá«áááºá á¡áá áºáá áºáá¯áááŒá¬áá»áááºááẠáá±áá¬ááœáŸá²ááŒá±á¬ááºážááŸá¯á¡ááœááºáž ááá¬ážááœáẠá¡ááŒá±á¬ááºážá¡áá²áááºáá»áŸá á¯áá¯á¶áá±ááááºážá ááá¯ááá¯áááºááŸá¬á áááºáááŒááºážáááºááŸá¯á¡áá±á«áºá pg_repack áááºáááºááŸá¯ááẠá¡áááºážáááºáá»áŸáᬠáááºáá±á¬ááºááŸá¯áá±ážááá·áºá¡áá»áááºá¡ááœááºáž ááŒá áºááœá¬ážáá²á·ááŒá®áž á¡ááŒá±á¬ááºážá¡áá²áá»á¬ážá ááá¬áááẠááá¬ážááá°áá¡ááœááºá¡á á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºáá«á á¡áá»áá¯ážá¡á á¬ážááá»áŸáá±á ááœá±áá±ážááœá±áá°á¡áá áºáá áºáá¯áá¡áá»áááºááᯠáá»á áºáá»á°ááŸá¯ááá¯ááºáááºáᯠáá»áœááºá¯ááºááá¯á·áá¯á¶ážááŒááºáá²á·ááẠ(ááŸáá¯ááºážááŸááºáááºá¡ááœáẠáá»ááºážáá»áŸá¡á¬ážááŒáá·áº 1 áá¬áá®ááŸáá·áº 2-3 áááá áºááŒá áºáááº)á
á ááºážáááºááŸá¯ááœá±á á¡ááŒá¯ááá±á¬áá±á¬ááºáááºá áá¯ááºáá¯ááºááŸá¯ááá¯áááºáž á áááºáá«á ááŸááºážááŸááºážáááºážáááºážáááááºá á€áá±áá¬ááœáẠáá¯ááºáá±á¬ááºááŒá®ážáá±á¬áẠáá±áá¬áá±á·á áºáá áºáá¯á á¡ááœááºá¡á á¬ážááŸáá·áº áá¯á¶áá áºáá¯á¶ááŒá áºáááº-
á€ááŒá±ááŸááºážáá»ááºááᯠáá»áœááºá¯ááºááá¯á· áá¯á¶ážá áá»á±áááºá¡á¬ážááá±á¬ááŒá±á¬áá·áºá áá»áœááºá¯ááºááá¯á·ááẠáá¯ááááá
áºáá¯ááᯠá¡áá±á¬ááºá¡ááẠáá±á¬áºááẠáááŒáá¯ážá
á¬ážáá²á áááºážááᯠextension developer áá»á¬ážááŸáá·áº ááœá±ážááœá±ážááẠááŒá
áºááá¯ááºááŒá±ááᯠáá»áœááºá¯ááºááá¯á· á
ááºážá
á¬ážáá±áá«áááºá áá»áœááºá¯ááºááá¯á·á áááºááŸááááºážááŒááºááŸá¯ááŸá¬ áá¶ááá±á¬ááºážá
áœá¬ááŒáá·áºá áá»áœááºá¯ááºááá¯á·ááẠáá°ážááŒá¬ážáá±á¬ááœáŸá±á·ááá¯ááºážááá·áºáááºááŸá¯áá»á¬ážááŒáá·áº ááŒá¿áá¬ááᯠááŒá±ááŸááºážááŒá®áž ááŒáá·áºá
á¯á¶áá±á¬ patch áá
áºáá¯á¡ááœáẠá¡ááŒá¬ážá¡áá»áá¯ážá¡á
á¬ážáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯áá±ážááẠááá¯á¡ááºáá±á¬ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·á áááºááŸáááŒááºáááºááŒááºáááºááŸá¯ááᯠáá¯ááºáá±áááºá¡ááœáẠá¡áááºááá·áºáááŒá
áºáá±ážáá«á á¡áá¬áááºááŸá¬ áá«ááᯠáá¯ááºááá¯ááºáááºááá¯á· áá»áœááºáá±á¬áºááá¯á· áá»áŸá±á¬áºááá·áºáá«áááºá
ááá·áºááœááºáá±ážááœááºážáá áºáá¯ááŸááááºá pg_repack áááœááºážáá¶ááŸá¯ááŸáá·áºá¡áá°áá»áœááºá¯ááºááá¯á·áááºá¡áááºááŒá±á¬áá·áºá€áá¬ááºáááºážááœááºáá« á ááºááááºážá á¥ááá¬á¡á¬ážááŒáá·áºáááºážá analogues áá»á¬ážááá¯ááá¯á¶ážáá²á·áá«á áá áºáá»áááºáá»áááºááœáẠáá»áœááºá¯ááºááá¯á·áááºáž áááºážááᯠá ááºážá á¬ážáá²á·ááŒáá±á¬áºáááºáž á¡á á±á¬ááá¯ááºážá áááºážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá á¡ááŒá¯ááá±á¬áá±á¬ááºáá±á¬ á¡ááœá±á·á¡ááŒá¯á¶ááẠááœáŸá±á·ááá¯ááºážááá·áºáááºááŸá¯áá»á¬ážáááŸááá² á á¬ážááœá²áá»á¬ážáá±á«áºááœáẠááŒá¿áá¬áá¡ááŸá áºáá¬áááᯠáá¬ážáááºááŒá®áž ááŒá±ááŸááºážááẠááŒáá¯ážá á¬ážááẠáá»áœááºá¯ááºááá¯á·ááᯠááŸá¯á¶á·áá±á¬áºáá±ážáá²á·áááºá ááá¯á·á¡ááŒááºá á¡ááŒá¬ážááŒá±ááŸááºážáááºážáá»á¬ážááá¯á¡áá¯á¶ážááŒá¯á á ááºážáááºááŸá¯áá»á¬ážááŒá¯áá¯ááºáááºáááºáž á¡áá»áááºááá¯á¡ááºáááºá ááá¯á·ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠáááºážááœááºááŸááá±á¬ááŒá¿áá¬ááᯠáŠážá áœá¬ááŒá±ááŸááºážáááºááŒáá¯ážá á¬ážááẠáá¯á¶ážááŒááºáá²á·ááŒá®áž ááá·áºáá»á±á¬áºáá±á¬á¡áá»áááºá¡ááœááºáž áá»áœááºá¯ááºááá¯á·ááá¯ááºáá±á¬ááºááá¯ááºááŒá±á¬ááºáž ááááŸááá«áá ááá¯á·áá±á¬áẠanalogues áá»á¬ážááᯠá áááºááŒáá·áºááŸá¯áááºááŒá áºáááºá .
ááœá±á·ááŸááá»ááºáá»á¬áž
áá»áœááºá¯ááºááá¯á·áááá¯ááºááá¯ááºá¡ááœá±á·á¡ááŒá¯á¶á¡áá±á«áºá¡ááŒá±áá¶á áá»áœááºá¯ááºááá¯á·á¡ááŒá¶ááŒá¯ááá¯ááºáááº-
- ááá·áºáááºážááá¯ááºááᯠá á±á¬áá·áºááŒáá·áºáá«á á á±á¬áá·áºááŒáá·áºáá±áá¬á¡áá±á«áº á¡ááŒá±áá¶á autovacuum ááᯠáááºáá²á·ááá¯á· áá±á¬ááºážá áœá¬ configure áá¯ááºáá¬ážáááºááᯠáááºáá¬ážáááºááá¯ááºáááºá
- áááºáá¶ááá¯ááºáá±á¬á¡ááá·áºááœáẠáá±á¬ááºážáá±á á±ááẠAUTOVACUUM ááᯠáá»áááºááŸááá«á
- áá±á¬ááºážáá±áá±ážáááºááŸáá·áº ááŒááºááááááá¬áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááá»á±á¬áºááœáŸá¬ážááá¯ááºáá«á ááŒááºá extension áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááẠáááŒá±á¬ááºáá«ááŸáá·áºá á¡áááááá±á¬á· á¡áá¬á¡á¬ážáá¯á¶ážááᯠáá±á¬ááºážáá±á¬ááºážá ááºážáááºááá¯á·áá«áá²á
- ááá·áºááá¯á¡ááºáá»ááºáá»á¬ážááŸáá·áºááá¯ááºáá®ááá·áº ááŒááºáááŒá±ááŸááºážáá»ááºáá»á¬ážááᯠááœááºážáá¶ááŒááºáááºááẠáááŒá±á¬ááºáá«ááŸáá·áº - áá áºáá«áá áºáᶠáááºážááẠááá·áºááá¯ááºááá¯ááºáá¯ááºááᯠááŒá±á¬ááºážáá²ááŒááºážáááºááẠááá¯ááá¯áááá±á¬ááºááŒá®áž ááœááºáá°ááá¯ááºáááºá
source: www.habr.com