рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ

рдЯреЗрдмрд▓ рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ рдкрд░ рдмреНрд▓реЛрдЯ рдХрд╛ рдкреНрд░рднрд╛рд╡ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЬреНрдЮрд╛рдд рд╣реИ рдФрд░ рдпрд╣ рди рдХреЗрд╡рд▓ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝ рдореЗрдВ рдореМрдЬреВрдж рд╣реИред рдмреЙрдХреНрд╕ рдХреЗ рдмрд╛рд╣рд░ рдЗрд╕рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рд╡реИрдХреНрдпреВрдо рдлреБрд▓ рдпрд╛ рдХреНрд▓рд╕реНрдЯрд░, рд▓реЗрдХрд┐рди рд╡реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЯреЗрдмрд▓ рдХреЛ рд▓реЙрдХ рдХрд░ рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдореЗрд╢рд╛ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд▓реЗрдЦ рдореЗрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реЛрдЧрд╛ рдХрд┐ рдмреНрд▓реЛрдЯ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ, рдЖрдк рдЗрд╕рд╕реЗ рдХреИрд╕реЗ рд▓рдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдУрдВ рдФрд░ pg_repack рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рдЙрдкрдпреЛрдЧ рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВред

рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдпрд╣ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдореЗрд░рд╛ рднрд╛рд╖рдг PgConf.Russia 2020 рдкрд░ред

рд╕реВрдЬрди рдХреНрдпреЛрдВ рд╣реЛрддреА рд╣реИ?

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝ рдПрдХ рдмрд╣реБ-рд╕рдВрд╕реНрдХрд░рдг рдореЙрдбрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ (рдПрдорд╡реАрд╕реАрд╕реА). рдЗрд╕рдХрд╛ рд╕рд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рдХрдИ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рд▓реЗрдирджреЗрди рдореЗрдВ рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдирд╣реАрдВ рджрд┐рдЦрддреЗ, рд▓реЗрдХрд┐рди рдЬрд░реВрд░реА рдирд╣реАрдВ рдХрд┐ рдПрдХ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд╣реЛред рдпрд╣ рдХрдИ рд▓реЗрдирджреЗрди рдХреЛ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рд╡рд╕реНрддреБрддрдГ рдПрдХ-рджреВрд╕рд░реЗ рдкрд░ рдХреЛрдИ рдкреНрд░рднрд╛рд╡ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рд╣реИред

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрди рд╕рднреА рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝ рдореЗрдореЛрд░реА рдкреЗрдЬ рджрд░ рдкреЗрдЬ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдкреЗрдЬ рдбреЗрдЯрд╛ рдХреА рдиреНрдпреВрдирддрдо рдорд╛рддреНрд░рд╛ рд╣реИ рдЬрд┐рд╕реЗ рдбрд┐рд╕реНрдХ рд╕реЗ рдкрдврд╝рд╛ рдпрд╛ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдЗрдП рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ рдХрдИ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝реЗ рд╣реИрдВред рдирдпрд╛ рдбреЗрдЯрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдкрд╣рд▓реЗ рдкреГрд╖реНрда рдкрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдБ рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рдпреЗ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд╛рдЗрд╡ рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ рдЬреЛ рдХрдорд┐рдЯ рдХреЗ рдмрд╛рдж рдЕрдиреНрдп рд▓реЗрдирджреЗрди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ (рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП, рд╣рдо рдорд╛рди рд▓реЗрдВрдЧреЗ рдХрд┐ рдЕрд▓рдЧрд╛рд╡ рд╕реНрддрд░ рд░реАрдб рдХрдорд┐рдЯреЗрдб рд╣реИ)ред

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ

рдлрд┐рд░ рд╣рдордиреЗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЕрджреНрдпрддрди рдХрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдм рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рдорд╛рдирд╛ рдЧрдпрд╛ред

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ

рдЪрд░рдг рджрд░ рдЪрд░рдг, рдкрдВрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрджреНрдпрддрди рдФрд░ рд╣рдЯрд╛рддреЗ рд╣реБрдП, рд╣рдореЗрдВ рдПрдХ рдкреГрд╖реНрда рдорд┐рд▓рд╛ рдЬрд┐рд╕рдореЗрдВ рд▓рдЧрднрдЧ рдЖрдзрд╛ рдбреЗрдЯрд╛ "рдХрдЪрд░рд╛" рд╣реИред рдпрд╣ рдбреЗрдЯрд╛ рдХрд┐рд╕реА рднреА рд▓реЗрдирджреЗрди рдореЗрдВ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ.

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдореЗрдВ рдПрдХ рддрдВрддреНрд░ рд╣реИ рд╡реИрдХреНрдпреВрдо, рдЬреЛ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╕рд╛рдлрд╝ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рдмрдирд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрджрд┐ рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк рд╕реЗ рдЖрдХреНрд░рд╛рдордХ рд░реВрдк рд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдпрд╛ рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╡реНрдпрд╕реНрдд рд╣реИ, рддреЛ "рдХрдЪрд░рд╛ рдбреЗрдЯрд╛" рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдирдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреГрд╖реНрдареЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХрд┐рд╕реА рд╕рдордп рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЪрд╛рд░ рдкреГрд╖реНрда рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдХреЗрд╡рд▓ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдореЗрдВ рд▓рд╛рдЗрд╡ рдбреЗрдЯрд╛ рд╣реЛрдЧрд╛ред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рддрд╛рд▓рд┐рдХрд╛ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдкрд░, рд╣рдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдХрд╣реАрдВ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдкрдврд╝реЗрдВрдЧреЗред

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ

рднрд▓реЗ рд╣реА VACUUM рдЕрдм рд╕рднреА рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкрдВрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рд╣рдЯрд╛ рджреЗ, рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдирд╛рдЯрдХреАрдп рд░реВрдк рд╕реЗ рд╕реБрдзрд╛рд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреГрд╖реНрдареЛрдВ рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рдВрдкреВрд░реНрдг рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рдЦрд╛рд▓реА рд╕реНрдерд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╣рдо рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдбреЗрдЯрд╛ рдкрдврд╝ рд░рд╣реЗ рд╣реЛрдВрдЧреЗред
рд╡реИрд╕реЗ, рдпрджрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦрд╛рд▓реА рдкреГрд╖реНрда (рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рджреВрд╕рд░рд╛ рд╡рд╛рд▓рд╛) рд╣реЛрддрд╛, рддреЛ VACUUM рдЙрд╕реЗ рдЯреНрд░рд┐рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрддрд╛ред рд▓реЗрдХрд┐рди рдЕрдм рд╡рд╣ рдмреАрдЪ рдореЗрдВ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЙрд╕рдХреЗ рд╕рд╛рде рдХреБрдЫ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛.

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ

рдЬрдм рдРрд╕реЗ рдЦрд╛рд▓реА рдпрд╛ рдЕрддреНрдпрдзрд┐рдХ рд╡рд┐рд░рд▓ рдкреГрд╖реНрдареЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдбрд╝реА рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬрд┐рд╕реЗ рдмреНрд▓реЛрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдкрд░ рдЕрд╕рд░ рдкрдбрд╝рдиреЗ рд▓рдЧрддрд╛ рд╣реИред

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣рд░ рдЪреАрдЬрд╝ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рд╕реВрдЬрди рдХреА рдШрдЯрдирд╛ рдХреА рдпрд╛рдВрддреНрд░рд┐рдХреА рд╣реИред рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдореЗрдВ рдпрд╣ рд▓рдЧрднрдЧ рдЗрд╕реА рдкреНрд░рдХрд╛рд░ рд╣реЛрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдореБрдЭреЗ рд╕реВрдЬрди рд╣реИ?

рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЛ рд╕реВрдЬрди рд╣реИ рдпрд╛ рдирд╣реАрдВред рдкрд╣рд▓реЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдЖрдВрддрд░рд┐рдХ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдЖрдБрдХрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛, "рд▓рд╛рдЗрд╡" рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЖрджрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреБрдорд╛рдирд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рд╣реИред рдЖрдк рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рддреИрдпрд╛рд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдХрдИ рд░реВрдк рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдпрд╛ рд▓рд┐рдЦреА рд╣реБрдИ рдХрд╣рд╛рдиреА PostgreSQL рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рд╕реЗ, рдЬреЛ рдЯреЛрд╕реНрдЯ рдФрд░ рдмреНрд▓реЛрдЯ рдмреАрдЯреНрд░реА рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд╕рд╛рде рдмреНрд▓реЛрдЯ рдЯреЗрдмрд▓ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдЕрдиреБрднрд╡ рдореЗрдВ рдЗрд╕рдХреА рддреНрд░реБрдЯрд┐ 10-20% рд╣реИред

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ pgstattuple, рдЬреЛ рдЖрдкрдХреЛ рдкреГрд╖реНрдареЛрдВ рдХреЗ рдЕрдВрджрд░ рджреЗрдЦрдиреЗ рдФрд░ рдЕрдиреБрдорд╛рдирд┐рдд рдФрд░ рд╕рдЯреАрдХ рдмреНрд▓реЛрдЯ рдорд╛рди рджреЛрдиреЛрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдкреВрд░реА рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХреИрди рдХрд░рдиреА рд╣реЛрдЧреАред

рд╣рдо 20% рддрдХ рдХреЗ рдЫреЛрдЯреЗ рдмреНрд▓реЛрдЯ рдорд╛рди рдХреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдорд╛рдирддреЗ рд╣реИрдВред рдЗрд╕реЗ рдлрд┐рд▓рдлреИрдХреНрдЯрд░ рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдирд╛ ╨╕ рд╕реВрдЪрдХрд╛рдВрдХ. 50% рдФрд░ рдЙрд╕рд╕реЗ рдЕрдзрд┐рдХ рдкрд░, рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдмрдВрдзреА рд╕рдорд╕реНрдпрд╛рдПрдВ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред

рд╕реВрдЬрди рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рддрд░реАрдХреЗ

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝ рдХреЗ рдкрд╛рд╕ рдмреЙрдХреНрд╕ рд╕реЗ рдмрд╛рд╣рд░ рд╕реВрдЬрди рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╣рдореЗрд╢рд╛ рд╕рднреА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред

рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдмреНрд▓реЛрдЯ рди рд╣реЛ. рдпрд╛ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдЖрдкрдХреЗ рд▓рд┐рдП рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрддрд░ рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдпрд╣ "рдХрдкреНрддрд╛рди" рдХреА рд╕рд▓рд╛рд╣ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕реЗ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рд╣рдореЗрд╢рд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдбреЗрдЯрд╛ рд╕реНрдХреАрдорд╛ рдореЗрдВ рдирд┐рдпрдорд┐рдд рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдпрд╛ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдбреЗрдЯрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╣реЛ рд░рд╣рд╛ рд╣реИред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдЖрдкрдХреА рд▓реЛрдб рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдмрд╛рд░-рдмрд╛рд░ рдмрджрд▓ рд╕рдХрддреА рд╣реИ рдФрд░ рдЖрдо рддреМрд░ рдкрд░ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рднрд┐рдиреНрди рд╣реЛрдЧреАред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рдереЛрдбрд╝рд╛ рдЖрдЧреЗ рдХрд╛рдо рдХрд░рдиреЗ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдмрджрд▓рддреА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЬрд╛рд╣рд┐рд░ рддреМрд░ рдкрд░ рдРрд╕рд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдирд╣реАрдВ рд╣реИ.

AUTOVACUUM рдХреЗ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ рд╕рд╛рде рди рдЯрд┐рдХ рдкрд╛рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдХрд╛рд░рдг рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд▓реЗрди-рджреЗрди рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рдЙрди рд▓реЗрди-рджреЗрди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдбреЗрдЯрд╛ рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рд╕рд┐рдлрд╝рд╛рд░рд┐рд╢ рднреА рд╕реНрдкрд╖реНрдЯ рд╣реИ - "рд▓рдЯрдХрддреЗ" рд▓реЗрдирджреЗрди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдПрдВ рдФрд░ рд╕рдХреНрд░рд┐рдп рд▓реЗрдирджреЗрди рдХреЗ рд╕рдордп рдХреЛ рдХрдо рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдкрд░ рд▓реЛрдб OLAP рдФрд░ OLTP рдХрд╛ рдорд┐рд╢реНрд░рд┐рдд рд░реВрдк рд╣реИ, рддреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рд╛рде рдХрдИ рд▓рдЧрд╛рддрд╛рд░ рдЕрдкрдбреЗрдЯ рдФрд░ рдЫреЛрдЯреА рдХреНрд╡реЗрд░реАрдЬрд╝, рд╕рд╛рде рд╣реА рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рдВрдЪрд╛рд▓рди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдирд╛ред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд▓реЛрдб рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЖрдзрд╛рд░реЛрдВ рдкрд░ рдлреИрд▓рд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдЙрдЪрд┐рдд рд╣реИ, рдЬреЛ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред

рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг - рднрд▓реЗ рд╣реА рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рд╕рдЬрд╛рддреАрдп рд╣реИ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛рдмреЗрд╕ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд▓реЛрдб рдХреЗ рддрд╣рдд рд╣реИ, рддреЛ рд╕рдмрд╕реЗ рдЖрдХреНрд░рд╛рдордХ рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рднреА рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдмреНрд▓реЛрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд╕реНрдХреЗрд▓рд┐рдВрдЧ (рдКрд░реНрдзреНрд╡рд╛рдзрд░ рдпрд╛ рдХреНрд╖реИрддрд┐рдЬ) рд╣реА рдПрдХрдорд╛рддреНрд░ рд╕рдорд╛рдзрд╛рди рд╣реИред

рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдХреНрдпрд╛ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдЖрдкрдиреЗ рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реВрдЬрди рдмрдврд╝рддреА рдЬрд╛ рд░рд╣реА рд╣реИред

рдЯреАрдо рд╡реИрдХреНрдпреВрдо рдкреВрд░реНрдг рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдФрд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрдирдореЗрдВ рдХреЗрд╡рд▓ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдбреЗрдЯрд╛ рдЫреЛрдбрд╝рддрд╛ рд╣реИред рдмреНрд▓реЛрдЯ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди рдЯреЗрдмрд▓ рдкрд░ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд▓реЙрдХ рдХреИрдкреНрдЪрд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рдПрдХреНрд╕реЗрд╕рдПрдХреНрд╕рдХреНрд▓реВрд╕рд┐рд╡рд▓реЙрдХ), рдЬреЛ рдЗрд╕ рдЯреЗрдмрд▓ рдкрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛтАЛтАЛрдХрд┐ рдЪрдпрди рднреА рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдпрд╛ рдЙрд╕рдХреЗ рдХрд┐рд╕реА рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП (рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдЖрдкрдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рдЖрдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рджрд╕рд┐рдпреЛрдВ рдорд┐рдирдЯ рд╕реЗ рд▓реЗрдХрд░ рдХрдИ рдШрдВрдЯреЛрдВ рддрдХ) рд░реЛрдХрдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░рдЦрд░рдЦрд╛рд╡ рдХреЗ рджреМрд░рд╛рди VACUUM FULL рдЪрд▓рд╛рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рд╡рд┐рдзрд┐ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред

рдЯреАрдо рдХреНрд▓рд╕реНрдЯрд░ VACUUM FULL рдХреА рддрд░рд╣ рд╣реА рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдкрдХреЛ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдбреЗрдЯрд╛ рдХреЛ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рдбрд┐рд╕реНрдХ рдкрд░ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдирдИ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдСрд░реНрдбрд░ рдХреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рд╣реИ)ред рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдпрд╣ рдХрдИ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫрд╛ рдЕрдиреБрдХреВрд▓рди рд╣реИ - рд╕реВрдЪрдХрд╛рдВрдХ рджреНрд╡рд╛рд░рд╛ рдХрдИ рд░рд┐рдХреЙрд░реНрдб рдкрдврд╝рдиреЗ рдХреЗ рд╕рд╛рдеред рдХрдорд╛рдВрдб рдХрд╛ рдиреБрдХрд╕рд╛рди VACUUM FULL рдЬреИрд╕рд╛ рд╣реА рд╣реИ - рдпрд╣ рдСрдкрд░реЗрд╢рди рдХреЗ рджреМрд░рд╛рди рдЯреЗрдмрд▓ рдХреЛ рд▓реЙрдХ рдХрд░ рджреЗрддрд╛ рд╣реИред

рдЯреАрдо рдкреБрди: рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдкрд┐рдЫрд▓реЗ рджреЛ рдХреЗ рд╕рдорд╛рди, рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реВрдЪрдХрд╛рдВрдХ рдпрд╛ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рднреА рд╕реВрдЪрдХрд╛рдВрдХреЛрдВ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИред рддрд╛рд▓реЗ рдереЛрдбрд╝реЗ рдХрдордЬрд╝реЛрд░ рд╣реЛрддреЗ рд╣реИрдВ: рдЯреЗрдмрд▓ рдкрд░ ShareLock (рд╕рдВрд╢реЛрдзрдиреЛрдВ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЪрдпрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ) рдФрд░ рдкреБрдирд░реНрдирд┐рд░реНрдорд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рдЗрдВрдбреЗрдХреНрд╕ рдкрд░ AccessExcliusLock (рдЗрд╕ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд╡реЗрд░реА рдХреЛ рдмреНрд▓реЙрдХ рдХрд░рддрд╛ рд╣реИ)ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝ рдХреЗ 12рд╡реЗрдВ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдЗрд╕рдХреЗ рд╕рд╛рде-рд╕рд╛рде, рдЬреЛ рдЖрдкрдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рдорд╡рд░реНрддреА рдЬреЛрдбрд╝, рд╕рдВрд╢реЛрдзрди рдпрд╛ рд╡рд┐рд▓реЛрдкрди рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд┐рдП рдмрд┐рдирд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рдлрд┐рд░ рд╕реЗ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

Postgres рдХреЗ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ, рдЖрдк REINDEX CONCURRENTLY рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдорд╛рди рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╕рдорд╡рд░реНрддреА рд░реВрдк рд╕реЗ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдПрдВ. рдпрд╣ рдЖрдкрдХреЛ рд╕рдЦреНрдд рд▓реЙрдХрд┐рдВрдЧ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рд╢реЗрдпрд░рдЕрдкрдбреЗрдЯрдПрдХреНрд╕рдХреНрд▓реВрд╕рд┐рд╡рд▓реЙрдХ, рдЬреЛ рд╕рдорд╛рдирд╛рдВрддрд░ рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ), рдлрд┐рд░ рдкреБрд░рд╛рдиреЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рдПрдХ рдирдП рд╕реЗ рдмрджрд▓реЗрдВ рдФрд░ рдкреБрд░рд╛рдиреЗ рдЗрдВрдбреЗрдХреНрд╕ рдХреЛ рд╣рдЯрд╛ рджреЗрдВред рдпрд╣ рдЖрдкрдХреЛ рдЖрдкрдХреЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХрд┐рдП рдмрд┐рдирд╛ рдЗрдВрдбреЗрдХреНрд╕ рдмреНрд▓реЛрдЯ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЗрдВрдбреЗрдХреНрд╕ рдХрд╛ рдкреБрдирд░реНрдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╕рдордп рдбрд┐рд╕реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЕрддрд┐рд░рд┐рдХреНрдд рднрд╛рд░ рдкрдбрд╝реЗрдЧрд╛ред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдпрджрд┐ рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП "рдлрд╝реНрд▓рд╛рдИ рдкрд░" рдмреНрд▓реЛрдЯ рдХреЛ рдЦрддреНрдо рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рд╣реИрдВ, рддреЛ рдЯреЗрдмрд▓ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдирд╣реАрдВ рд╣реИред рдпрд╣реАрдВ рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдмрд╛рд╣рд░реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛рдо рдореЗрдВ рдЖрддреЗ рд╣реИрдВ: pg_repack (рдкреВрд░реНрд╡ рдореЗрдВ pg_reorg), рдкреАрдЬреАрдХреЙрдореНрдкреИрдХреНрдЯ, рдкреАрдЬреАрдХреЙрдореНрдкреИрдХреНрдЯрдЯреЗрдмрд▓ рдФрд░ рджреВрд╕рд░реЗред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рдореИрдВ рдЙрдирдХреА рддреБрд▓рдирд╛ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ рдФрд░ рдХреЗрд╡рд▓ pg_repack рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдХреБрдЫ рд╕рдВрд╢реЛрдзрди рдХреЗ рдмрд╛рдж рд╕реНрд╡рдпрдВ рдХрд░рддреЗ рд╣реИрдВред

pg_repack рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рддрд╛рд▓рд┐рдХрд╛ рд╣реИ - рд╕реВрдЪрдХрд╛рдВрдХ, рдкреНрд░рддрд┐рдмрдВрдз рдФрд░, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдмреНрд▓реЛрдЯ рдХреЗ рд╕рд╛рдеред pg_repack рдХрд╛ рдкрд╣рд▓рд╛ рдЪрд░рдг рдЪрд▓рдиреЗ рдХреЗ рджреМрд░рд╛рди рд╕рднреА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓реЙрдЧ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдирд╛ рд╣реИред рдЯреНрд░рд┐рдЧрд░ рдкреНрд░рддреНрдпреЗрдХ рдЗрдиреНрд╕рд░реНрдЯ, рдЕрдкрдбреЗрдЯ рдФрд░ рдбрд┐рд▓реАрдЯ рдХреЗ рд▓рд┐рдП рдЗрди рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЛрд╣рд░рд╛рдПрдЧрд╛ред рдлрд┐рд░ рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдореВрд▓ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд╕рдорд╛рди, рд▓реЗрдХрд┐рди рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдФрд░ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд┐рдирд╛, рддрд╛рдХрд┐ рдбреЗрдЯрд╛ рдбрд╛рд▓рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдзреАрдореА рди рд╣реЛред

рдЗрд╕рдХреЗ рдмрд╛рдж, pg_repack рдбреЗрдЯрд╛ рдХреЛ рдкреБрд░рд╛рдиреА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рднреА рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рддрд╛ рд╣реИред рдЗрди рд╕рднреА рдкрд░рд┐рдЪрд╛рд▓рдиреЛрдВ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рд▓реЙрдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЬрдорд╛ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред

рдЕрдЧрд▓рд╛ рдЪрд░рдг рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИред рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдХрдИ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЬрдм рд▓реЙрдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ 20 рд╕реЗ рдХрдо рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдБ рдмрдЪреА рд╣реЛрддреА рд╣реИрдВ, рддреЛ pg_repack рдПрдХ рдордЬрдмреВрдд рд▓реЙрдХ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдирд╡реАрдирддрдо рдбреЗрдЯрд╛ рдХреЛ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рд╕рд┐рд╕реНрдЯрдо рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкреБрд░рд╛рдиреА рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдирдП рд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдПрдХрдорд╛рддреНрд░ рдФрд░ рдмрд╣реБрдд рд╣реА рдХрдо рд╕рдордп рд╣реИ рдЬрдм рдЖрдк рдЯреЗрдмрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рдкрд╛рдПрдВрдЧреЗред рдЗрд╕рдХреЗ рдмрд╛рдж, рдкреБрд░рд╛рдиреА рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рд▓реЙрдЧ рд╡рд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рд╕реНрдерд╛рди рдЦрд╛рд▓реА рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ.

рд╕рд┐рджреНрдзрд╛рдВрдд рдореЗрдВ рд╕рдм рдХреБрдЫ рдмрдврд╝рд┐рдпрд╛ рджрд┐рдЦрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рд╣рдордиреЗ рдмрд┐рдирд╛ рд▓реЛрдб рдФрд░ рдЕрдВрдбрд░ рд▓реЛрдб рдХреЗ pg_repack рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛, рдФрд░ рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рд░реБрдХрдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЗрд╕рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдБрдЪ рдХреА (рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, Ctrl + C рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рд╕рднреА рдкрд░реАрдХреНрд╖рдг рд╕рдХрд╛рд░рд╛рддреНрдордХ рдереЗ.

рд╣рдо рднреЛрдЬрди рдХреА рджреБрдХрд╛рди рдкрд░ рдЧрдП - рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рд╣рдорд╛рд░реА рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдирд╣реАрдВ рд╣реБрдЖред

рдмрд┐рдХреНрд░реА рдкрд░ рдкрд╣рд▓рд╛ рдкреИрдирдХреЗрдХ

рдкрд╣рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рд╣рдореЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдмрд╛рдзрд╛ рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИ:

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

рдЗрд╕ рд╕реАрдорд╛ рдХрд╛ рдПрдХ рд╕реНрд╡рддрдГ-рдирд┐рд░реНрдорд┐рдд рдирд╛рдо Index_16508 рдерд╛ - рдЗрд╕реЗ pg_repack рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдордиреЗ "рд╣рдорд╛рд░реА" рдмрд╛рдзрд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬреЛ рдЗрд╕рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╕рд╛рдордиреЗ рдЖрдИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рд╕реАрдорд╛ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рд╡рд┐рд▓рдВрдмрд┐рдд рд╕реАрдорд╛ рд╣реИ (рдЖрд╕реНрдердЧрд┐рдд рдмрд╛рдзрд╛), рдЕрд░реНрдерд╛рддред рдЗрд╕рдХрд╛ рд╕рддреНрдпрд╛рдкрди рдПрд╕рдХреНрдпреВрдПрд▓ рдХрдорд╛рдВрдб рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рд╣реЛрддреЗ рд╣реИрдВред

рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ: рдЙрдирдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ рдФрд░ рд╡реЗ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддреА рд╣реИрдВ

рдЖрд╕реНрдердЧрд┐рдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рд╕рд┐рджреНрдзрд╛рдВрддред
рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ: рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рд╡рд╛рд▓реА рдХрд╛рд░реЛрдВ рдХреА рдПрдХ рддрд╛рд▓рд┐рдХрд╛-рд╕рдВрджрд░реНрдн рдкреБрд╕реНрддрдХ рд╣реИ - рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ рдХрд╛рд░ рдХрд╛ рдирд╛рдо рдФрд░ рдХреНрд░рдоред
рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ

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



рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╣рдореЗрдВ рдкрд╣рд▓реА рдФрд░ рджреВрд╕рд░реА рдХрд╛рд░реЛрдВ рдХреА рдЕрджрд▓рд╛-рдмрджрд▓реА рдХрд░рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рд╕реАрдзрд╛ рд╕рдорд╛рдзрд╛рди рдпрд╣ рд╣реИ рдХрд┐ рдкрд╣рд▓реЗ рдорд╛рди рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдФрд░ рджреВрд╕рд░реЗ рдХреЛ рдкрд╣рд▓реЗ рдореЗрдВ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП:

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

рд▓реЗрдХрд┐рди рдЬрдм рд╣рдо рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдмрд╛рдзрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХреА рдЙрдореНрдореАрдж рдХрд░рддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдорд╛рдиреЛрдВ рдХрд╛ рдХреНрд░рдо рдЕрджреНрд╡рд┐рддреАрдп рд╣реИ:

[23305] ERROR: duplicate key value violates unique constraint тАЬuk_carsтАЭ
Detail: Key (ord)=(2) already exists.

рдореИрдВ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ? рд╡рд┐рдХрд▓реНрдк рдПрдХ: рдЙрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рдореВрд▓реНрдп рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЬреЛрдбрд╝реЗрдВ рдЬреЛ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП "-1"ред рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ, рдЗрд╕реЗ "рджреЛ рд╡реЗрд░рд┐рдПрдмрд▓реНрд╕ рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреЛ рддреАрд╕рд░реЗ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрджрд╛рди-рдкреНрд░рджрд╛рди рдХрд░рдирд╛" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкрджреНрдзрддрд┐ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рджреЛрд╖ рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрджреНрдпрддрди рд╣реИред

рд╡рд┐рдХрд▓реНрдк рджреЛ: рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рдмрдЬрд╛рдп рдСрд░реНрдбрд░ рдорд╛рди рдХреЗ рд▓рд┐рдП рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ рдкреЙрдЗрдВрдЯ рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░реЗрдВред рдлрд┐рд░, рдорд╛рди рдХреЛ 1 рд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рддреЗ рд╕рдордп, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 2.5 рдкрд░, рдкрд╣рд▓реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рджреВрд╕рд░реЗ рдФрд░ рддреАрд╕рд░реЗ рдХреЗ рдмреАрдЪ "рдЦрдбрд╝реА" рд╣реЛ рдЬрд╛рдПрдЧреАред рдпрд╣ рд╕рдорд╛рдзрд╛рди рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рджреЛ рд╕реАрдорд╛рдПрдБ рд╣реИрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрджрд┐ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рдХрд╣реАрдВ рдорд╛рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред рджреВрд╕рд░рд╛, рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдЯреАрдХрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рднреА рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдореВрд▓реНрдпреЛрдВ рдХреА рдкреБрдирд░реНрдЧрдгрдирд╛ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реАрдорд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпрд╛рдВ рд╣реЛрдВрдЧреАред

рд╡рд┐рдХрд▓реНрдк рддреАрди: рдмрд╛рдзрд╛ рдХреЛ рд╕реНрдердЧрд┐рдд рдХрд░ рджреЗрдВ рддрд╛рдХрд┐ рдЗрд╕реЗ рдХреЗрд╡рд▓ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреЗ рд╕рдордп рд╣реА рдЬрд╛рдВрдЪрд╛ рдЬрд╛ рд╕рдХреЗ:

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

рдЪреВрдБрдХрд┐ рд╣рдорд╛рд░реЗ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдЕрдиреБрд░реЛрдз рдХрд╛ рддрд░реНрдХ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рддрд┐рдмрджреНрдзрддрд╛ рдХреЗ рд╕рдордп рд╕рднреА рдорд╛рди рдЕрджреНрд╡рд┐рддреАрдп рд╣реИрдВ, рдпрд╣ рд╕рдлрд▓ рд╣реЛрдЧрд╛ред

рдКрдкрд░ рдЪрд░реНрдЪрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг, рдмреЗрд╢рдХ, рдмрд╣реБрдд рд╕рд┐рдВрдереЗрдЯрд┐рдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдкреНрд░рдХрдЯ рдХрд░рддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рд╣рдо рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЙрди рд╡рд┐рд╡рд╛рджреЛрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдЬрдм рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рд╕рд╛рде рдмреЛрд░реНрдб рдкрд░ рд╕рд╛рдЭрд╛ рд╡рд┐рдЬреЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдРрд╕реЗ рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╣рдо рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд░рд▓ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред

рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдмрд╛рдзрд╛ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдореЗрдВ рдЙрдирдХреА рдЬрд╛рдБрдЪ рдХреЗ рд▓рд┐рдП рдЧреНрд░реИрдиреНрдпреБрд▓реИрд░рд┐рдЯреА рдХреЗ рддреАрди рд╕реНрддрд░ рд╣реЛрддреЗ рд╣реИрдВ: рдкрдВрдХреНрддрд┐, рд▓реЗрдирджреЗрди рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реНрддрд░ред
рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ
рд╕реНрд░реЛрдд: рдмреЗрдЧреНрд░реАрдлреНрд╕

CHECK рдФрд░ NOT NULL рдХреЛ рд╣рдореЗрд╢рд╛ рдкрдВрдХреНрддрд┐ рд╕реНрддрд░ рдкрд░ рдЪреЗрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдЕрдиреНрдп рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд▓рд┐рдП, рдЬреИрд╕рд╛ рдХрд┐ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдЖрдк рдФрд░ рдЕрдзрд┐рдХ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╣рд╛рдВ.

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдХрд╣реЗрдВ рддреЛ, рдХрдИ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ рдЕрдзрд┐рдХ рдкрдардиреАрдп рдХреЛрдб рдФрд░ рдХрдо рдЖрджреЗрд╢ рдкреНрд░рджрд╛рди рдХрд░рддреА рд╣реИрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЖрдкрдХреЛ рдбрд┐рдмрдЧрд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рдХрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдЬрд┐рд╕ рдХреНрд╖рдг рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ рдФрд░ рдЬрд┐рд╕ рдХреНрд╖рдг рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ, рд╡реЗ рд╕рдордп рдореЗрдВ рдЕрд▓рдЧ рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛ рд╢рд╛рдорд┐рд▓ рд╣реИ рддреЛ рдЕрдиреБрд╕реВрдЪрдХ рд╣рдореЗрд╢рд╛ рдПрдХ рдЗрд╖реНрдЯрддрдо рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

pg_repack рдореЗрдВ рд╕реБрдзрд╛рд░

рд╣рдордиреЗ рдХрд╡рд░ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ рдХреНрдпрд╛ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╣рдорд╛рд░реА рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдХреИрд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВ? рдЖрдЗрдП рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдпрд╛рдж рдХрд░реЗрдВ рдЬреЛ рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдорд┐рд▓реА рдереА:

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

рдпрд╣ рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдбреЗрдЯрд╛ рдХреЛ рд▓реЙрдЧ рдЯреЗрдмрд▓ рд╕реЗ рдирдИ рдЯреЗрдмрд▓ рдореЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐... рд▓реЙрдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдкреНрд░рддрд┐рдмрджреНрдз рд╣реИред рдпрджрд┐ рд╡реЗ рдореВрд▓ рддрд╛рд▓рд┐рдХрд╛ рдХреА рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЙрдиреНрд╣реАрдВ рдмрд╛рдзрд╛рдУрдВ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХреИрд╕реЗ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ, рд╕рдорд╕реНрдпрд╛ рдХреА рдЬрдбрд╝ pg_repack рдХреЗ рдкрд┐рдЫрд▓реЗ рдЪрд░рдг рдореЗрдВ рд╣реИ, рдЬреЛ рдХреЗрд╡рд▓ рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╛рдзрд╛рдПрдВ рдирд╣реАрдВ: рдкреБрд░рд╛рдиреА рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдмрд╛рдзрд╛ рдереА, рдФрд░ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдиреЗ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рдЗрдВрдбреЗрдХреНрд╕ рдмрдирд╛рдпрд╛ред

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ

рдпрд╣рд╛рдВ рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдпрджрд┐ рдмрд╛рдзрд╛ рд╕рд╛рдорд╛рдиреНрдп рд╣реИ рдФрд░ рд╕реНрдердЧрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рдЗрд╕ рдмрд╛рдзрд╛ рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬ рдореЗрдВ рдЕрджреНрд╡рд┐рддреАрдп рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдПрдХ рдЕрджреНрд╡рд┐рддреАрдп рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдХрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╕реНрдердЧрд┐рдд рдмрд╛рдзрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╕реВрдЪрдХрд╛рдВрдХ рдХреЛ рд╕реНрдердЧрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдПрд╕рдХреНрдпреВрдПрд▓ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдкрд░ рд╣рдореЗрд╢рд╛ рдЬрд╛рдВрдЪ рдХреА рдЬрд╛рддреА рд╣реИред

рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рдЪреЗрдХ рдХреЗ "рджреЗрд░реА" рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ: рдореВрд▓ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдпрд╣ рдХрдорд┐рдЯ рдХреЗ рд╕рдордп рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрд╕рдХреНрдпреВрдПрд▓ рдХрдорд╛рдВрдб рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рд╕рдордп рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЬрд╛рдБрдЪ рджреЛрдиреЛрдВ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдХреА рдЬрд╛рдП: рдпрд╛ рддреЛ рд╣рдореЗрд╢рд╛ рджреЗрд░реА рд╕реЗ, рдпрд╛ рд╣рдореЗрд╢рд╛ рддреБрд░рдВрддред

рддреЛ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреНрдпрд╛ рд╡рд┐рдЪрд╛рд░ рдереЗ?

рд╕реНрдердЧрд┐рдд рдХреЗ рд╕рдорд╛рди рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдПрдВ

рдкрд╣рд▓рд╛ рд╡рд┐рдЪрд╛рд░ рджреЛрдиреЛрдВ рдЬрд╛рдВрдЪреЛрдВ рдХреЛ рддрддреНрдХрд╛рд▓ рдореЛрдб рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╣реИред рдЗрд╕рд╕реЗ рдХрдИ рдЧрд▓рдд рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкреНрд░рддрд┐рдмрдВрдз рдЙрддреНрдкрдиреНрди рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реИрдВ, рддреЛ рдЗрд╕рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдХрд╛рдо рдкрд░ рдЕрд╕рд░ рдирд╣реАрдВ рдкрдбрд╝рдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдРрд╕реЗ рд╕рдВрдШрд░реНрд╖ рдЙрдирдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдерд┐рддрд┐ рд╣реИред рд╡реЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рджреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╣реА рд╡рд┐рдЬреЗрдЯ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рджреВрд╕рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╡рд┐рдЬреЗрдЯ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрд╡рд░реБрджреНрдз рд╣реИред рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рд░реНрд╡рд░ рджреВрд╕рд░реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдордирд╛ рдХрд░ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рд╡рд╛рдкрд╕ рд▓реЗ рд▓реЗрддрд╛ рд╣реИ рдФрд░ рд╡рд┐рдЬреЗрдЯ рдХреЛ рдмреНрд▓реЙрдХ рдХрд░ рджреЗрддрд╛ рд╣реИред рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж, рдЬрдм рдкрд╣рд▓рд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдВрдкрд╛рджрди рдкреВрд░рд╛ рдХрд░ рд▓реЗрдЧрд╛, рддреЛ рджреВрд╕рд░реЗ рдХреЛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧреА рдХрд┐ рд╡рд┐рдЬреЗрдЯ рдЕрдм рдЕрд╡рд░реБрджреНрдз рдирд╣реАрдВ рд╣реИ рдФрд░ рд╡рд╣ рдЕрдкрдиреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рджреЛрд╣рд░рд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдЧрд╛ред

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ

рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдЪреЗрдХ рд╣рдореЗрд╢рд╛ рдЧреИрд░-рд╡рд┐рд▓рдВрдмрд┐рдд рдореЛрдб рдореЗрдВ рд╣реЛрдВ, рд╣рдордиреЗ рдореВрд▓ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛ рдХреЗ рд╕рдорд╛рди рдПрдХ рдирдпрд╛ рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдпрд╛:

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

рдкрд░реАрдХреНрд╖рдг рдкрд░рд┐рд╡реЗрд╢ рдореЗрдВ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдЕрдкреЗрдХреНрд╖рд┐рдд рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рд╣реБрдИрдВред рд╕рдлрд▓рддрд╛! рд╣рдордиреЗ рдЙрддреНрдкрд╛рджрди рдкрд░ рдлрд┐рд░ рд╕реЗ pg_repack рдЪрд▓рд╛рдпрд╛ рдФрд░ рдПрдХ рдШрдВрдЯреЗ рдХреЗ рдХрд╛рдо рдореЗрдВ рдкрд╣рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ 5 рддреНрд░реБрдЯрд┐рдпрд╛рдБ рдорд┐рд▓реАрдВред рдпрд╣ рдПрдХ рд╕реНрд╡реАрдХрд╛рд░реНрдп рдкрд░рд┐рдгрд╛рдо рд╣реИ. рд╣рд╛рд▓рд╛рдБрдХрд┐, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рджреВрд╕рд░реЗ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХрд╛рдлреА рдмрдврд╝ рдЧрдИ рдФрд░ рд╣рдореЗрдВ pg_repack рдХреЛ рд░реЛрдХрдирд╛ рдкрдбрд╝рд╛ред

рдпрд╣ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ? рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдХрд┐ рдХрд┐рддрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдПрдХ рд╣реА рд╡рд┐рдЬреЗрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЙрд╕ рд╕рдордп рдкрд╣рд▓реЗ рдХреНрд▓рд╕реНрдЯрд░ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рджреВрд╕рд░реЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдХрдо рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзреА рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдП рдереЗ, рдпрд╛рдиреАред рд╣рдо рдмрд╕ "рднрд╛рдЧреНрдпрд╢рд╛рд▓реА" рдереЗред

рд╡рд┐рдЪрд╛рд░ рдХрд╛рдо рдирд╣реАрдВ рдЖрдпрд╛. рдЙрд╕ рд╕рдордп, рд╣рдордиреЗ рджреЛ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рди рджреЗрдЦреЗ: рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдУрдВ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ, рдпрд╛ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pg_repack рдХреЛ "рд╕рд┐рдЦрд╛рдПрдВ"ред рд╣рдордиреЗ рджреВрд╕рд░рд╛ рдЪреБрдирд╛.

рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЛ рдореВрд▓ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдмрджрд▓реЗрдВ

рд╕рдВрд╢реЛрдзрди рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╕реНрдкрд╖реНрдЯ рдерд╛ - рдпрджрд┐ рдореВрд▓ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛ рд╣реИ, рддреЛ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдРрд╕реА рдмрд╛рдзрд╛ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рди рдХрд┐ рдПрдХ рд╕реВрдЪрдХрд╛рдВрдХред

рдЕрдкрдиреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдордиреЗ рдПрдХ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрд╛:

  • рдЖрд╕реНрдердЧрд┐рдд рдмрд╛рдзрд╛ рдФрд░ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рд╡рд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛;
  • рдПрдХ рд▓реВрдк рдореЗрдВ рдбреЗрдЯрд╛ рдбрд╛рд▓реЗрдВ рдЬреЛ рдореМрдЬреВрджрд╛ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡ рдХрд░рддрд╛ рд╣реИ;
  • рдЕрджреНрдпрддрди рдХрд░реЗрдВ - рдбреЗрдЯрд╛ рдореЗрдВ рдЕрдм рдЯрдХрд░рд╛рд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛;
  • рдкрд░рд┐рд╡рд░реНрддрди рдкреНрд░рддрд┐рдмрджреНрдз рдХрд░реЗрдВ.

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

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

pg_repack рдХрд╛ рдореВрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╣рдореЗрд╢рд╛ рдкрд╣рд▓реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкрд░ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рдерд╛, рд╕рдВрд╢реЛрдзрд┐рдд рд╕рдВрд╕реНрдХрд░рдг рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рдмрд┐рдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛ред рдорд╣рд╛рдиред

рд╣рдо рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рд▓реЙрдЧ рдЯреЗрдмрд▓ рд╕реЗ рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдирдП рдореЗрдВ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рдЙрд╕реА рдЪрд░рдг рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ:

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

рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реНрдерд┐рддрд┐: рдкрд░реАрдХреНрд╖рдг рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрддреНрдкрд╛рджрди рдореЗрдВ рдирд╣реАрдВ?!

APPLY_COUNT рдФрд░ рджреЛ рдмреИрдЪреЛрдВ рдХрд╛ рдЬрдВрдХреНрд╢рди

рд╣рдордиреЗ рдХреЛрдб рдХрд╛ рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рдкрдВрдХреНрддрд┐ рджрд░ рдкрдВрдХреНрддрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдФрд░ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рдЦреЛрдЬрд╛: рдбреЗрдЯрд╛ рдХреЛ рд▓реЙрдЧ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдмреИрдЪреЛрдВ рдореЗрдВ рдПрдХ рдирдП рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, APPLY_COUNT рд╕реНрдерд┐рд░рд╛рдВрдХ рдиреЗ рдмреИрдЪ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛:

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

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

рд╕рдорд╕реНрдпрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдореВрд▓ рд▓реЗрдирджреЗрди рд╕реЗ рдбреЗрдЯрд╛, рдЬрд┐рд╕рдореЗрдВ рдХрдИ рдСрдкрд░реЗрд╢рди рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдмрд╛рдзрд╛ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛрдиреЗ рдкрд░, рджреЛ рдмреИрдЪреЛрдВ рдХреЗ рдЬрдВрдХреНрд╢рди рдкрд░ рд╕рдорд╛рдкреНрдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ - рдЖрдзреЗ рдХрдорд╛рдВрдб рдкрд╣рд▓реЗ рдмреИрдЪ рдореЗрдВ рдкреНрд░рддрд┐рдмрджреНрдз рд╣реЛрдВрдЧреЗ, рдФрд░ рджреВрд╕рд░реЗ рдЖрдзреЗ рдХреНрд╖рдг рдореЗрдВред рдФрд░ рдпрд╣рд╛рдВ, рдЖрдкрдХреА рдХрд┐рд╕реНрдордд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ: рдпрджрд┐ рдЯреАрдореЗрдВ рдкрд╣рд▓реЗ рдмреИрдЪ рдореЗрдВ рдХреБрдЫ рднреА рдЙрд▓реНрд▓рдВрдШрди рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВ, рддреЛ рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдпрджрд┐ рд╡реЗ рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИред

APPLY_COUNT 1000 рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ, рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдг рд╕рдлрд▓ рдХреНрдпреЛрдВ рдереЗ - рдЙрдиреНрд╣реЛрдВрдиреЗ "рдмреИрдЪ рдЬрдВрдХреНрд╢рди" рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдХрд╡рд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ред рд╣рдордиреЗ рджреЛ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ - рдЗрдиреНрд╕рд░реНрдЯ рдФрд░ рдЕрдкрдбреЗрдЯ, рдЗрд╕рд▓рд┐рдП рджреЛ рдХрдорд╛рдВрдб рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ 500 рд▓реЗрдирджреЗрди рд╣рдореЗрд╢рд╛ рдПрдХ рдмреИрдЪ рдореЗрдВ рд░рдЦреЗ рдЧрдП рдФрд░ рд╣рдореЗрдВ рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реБрдИред рджреВрд╕рд░рд╛ рдЕрдкрдбреЗрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдорд╛рд░реЗ рд╕рдВрдкрд╛рджрди рдиреЗ рдХрд╛рдо рдХрд░рдирд╛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛:

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

рддреЛ, рдЕрдЧрд▓рд╛ рдХрд╛рд░реНрдп рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рд╣реИ рдХрд┐ рдореВрд▓ рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдбреЗрдЯрд╛, рдЬреЛ рдПрдХ рд▓реЗрдирджреЗрди рдореЗрдВ рдмрджрд▓рд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рд▓реЗрдирджреЗрди рдХреЗ рднреАрддрд░ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рднреА рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПред

рдмреИрдЪрд┐рдВрдЧ рд╕реЗ рдЗрдВрдХрд╛рд░

рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рд╕рдорд╛рдзрд╛рди рдереЗред рдкрд╣рд▓рд╛: рдЖрдЗрдП рдмреИрдЪреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЫреЛрдбрд╝ рджреЗрдВ рдФрд░ рдПрдХ рд▓реЗрдирджреЗрди рдореЗрдВ рдбреЗрдЯрд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред рдЗрд╕ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд▓рд╛рдн рдЗрд╕рдХреА рд╕рд╛рджрдЧреА рдереА - рдЖрд╡рд╢реНрдпрдХ рдХреЛрдб рдкрд░рд┐рд╡рд░реНрддрди рдиреНрдпреВрдирддрдо рдереЗ (рд╡реИрд╕реЗ, рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ pg_reorg рдмрд┐рд▓реНрдХреБрд▓ рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рдерд╛)ред рд▓реЗрдХрд┐рди рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ - рд╣рдо рдПрдХ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЪрд▓рдиреЗ рд╡рд╛рд▓рд╛ рд▓реЗрдирджреЗрди рдмрдирд╛ рд░рд╣реЗ рд╣реИрдВ, рдФрд░ рдпрд╣, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛, рдПрдХ рдирдП рдмреНрд▓реЛрдЯ рдХреЗ рдЙрднрд░рдиреЗ рдХрд╛ рдЦрддрд░рд╛ рд╣реИред

рджреВрд╕рд░рд╛ рд╕рдорд╛рдзрд╛рди рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ, рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж рдЕрдзрд┐рдХ рд╕рд╣реА рд╣реИ: рд▓реЗрди-рджреЗрди рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд▓реЙрдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рдХреЙрд▓рдо рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдиреЗ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдЬреЛрдбрд╝рд╛ рд╣реИред рдлрд┐рд░, рдЬрдм рд╣рдо рдбреЗрдЯрд╛ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЗрд╕реЗ рдЗрд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╕рдореВрд╣рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдмрдВрдзрд┐рдд рдкрд░рд┐рд╡рд░реНрддрди рдПрдХ рд╕рд╛рде рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред рдмреИрдЪ рдХрдИ рд▓реЗрди-рджреЗрди (рдпрд╛ рдПрдХ рдмрдбрд╝реЗ рд▓реЗрди-рджреЗрди) рд╕реЗ рдмрдиреЗрдЧрд╛ рдФрд░ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдЗрд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░реЗрдЧрд╛ рдХрд┐ рдЗрди рд▓реЗрди-рджреЗрди рдореЗрдВ рдХрд┐рддрдирд╛ рдбреЗрдЯрд╛ рдмрджрд▓рд╛ рдЧрдпрд╛ рдерд╛ред рдпрд╣ рдзреНрдпрд╛рди рд░рдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЪреВрдВрдХрд┐ рд╡рд┐рднрд┐рдиреНрди рд▓реЗрдирджреЗрди рд╕реЗ рдбреЗрдЯрд╛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд░рдо рдореЗрдВ рд▓реЙрдЧ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдкрдврд╝рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рдерд╛ред tx_id рджреНрд╡рд╛рд░рд╛ рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдкреНрд░рддреНрдпреЗрдХ рдЕрдиреБрд░реЛрдз рдХреЗ рд▓рд┐рдП seqscan рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИ, рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХреЗ рдУрд╡рд░рд╣реЗрдб рдХреЗ рдХрд╛рд░рдг рдпрд╣ рд╡рд┐рдзрд┐ рдХреЛ рдзреАрдорд╛ рднреА рдХрд░ рджреЗрдЧрд╛ред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЖрдкрдХреЛ рдХреБрдЫ рддреНрдпрд╛рдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╡рд┐рдХрд▓реНрдк рд╕реЗ рд╢реБрд░реБрдЖрдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЖрд╕рд╛рди рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рд╕рдордЭрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдХрд┐ рдХреНрдпрд╛ рд▓рдВрдмрд╛ рд▓реЗрдирджреЗрди рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред рдЪреВрдВрдХрд┐ рдкреБрд░рд╛рдиреА рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдирдИ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдбреЗрдЯрд╛ рдХрд╛ рдореБрдЦреНрдп рд╕реНрдерд╛рдирд╛рдВрддрд░рдг рднреА рдПрдХ рд▓рдВрдмреЗ рд▓реЗрдирджреЗрди рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдкреНрд░рд╢реНрди "рд╣рдо рдЗрд╕ рд▓реЗрдирджреЗрди рдХреЛ рдХрд┐рддрдирд╛ рдмрдврд╝рд╛рдПрдВрдЧреЗ?" рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ред рдкрд╣рд▓реЗ рд▓реЗрдирджреЗрди рдХреА рдЕрд╡рдзрд┐ рдореБрдЦреНрдпрддрдГ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИред рдХрд┐рд╕реА рдирдП рдХреА рдЕрд╡рдзрд┐ рдЗрд╕ рдмрд╛рдд рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддреА рд╣реИ рдХрд┐ рдбреЗрдЯрд╛ рдЯреНрд░рд╛рдВрд╕рдлрд░ рдХреЗ рджреМрд░рд╛рди рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдХрд┐рддрдиреЗ рдкрд░рд┐рд╡рд░реНрддрди рдЬрдорд╛ рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддред рднрд╛рд░ рдХреА рддреАрд╡реНрд░рддрд╛ рдкрд░. рдиреНрдпреВрдирддрдо рд╕реЗрд╡рд╛ рд▓реЛрдб рдХреЗ рд╕рдордп pg_repack рд░рди рд╣реБрдЖ, рдФрд░ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рдореВрд▓ рдЖрдХрд╛рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреА рдорд╛рддреНрд░рд╛ рдЕрдиреБрдкрд╛рддрд╣реАрди рд░реВрдк рд╕реЗ рдЫреЛрдЯреА рдереАред рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рд╣рдо рдПрдХ рдирдП рд▓реЗрдирджреЗрди рдХреЗ рд╕рдордп рдХреА рдЙрдкреЗрдХреНрд╖рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рддреБрд▓рдирд╛ рдХреЗ рд▓рд┐рдП, рдФрд╕рддрди рдпрд╣ 1 рдШрдВрдЯрд╛ рдФрд░ 2-3 рдорд┐рдирдЯ рд╣реИ)ред

рдкреНрд░рдпреЛрдЧ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдереЗ. рдкреНрд░реЛрдбрдХреНрд╢рди рдкрд░ рднреА рд▓реЙрдиреНрдЪ. рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдПрдХ рддрд╕реНрд╡реАрд░ рджреА рдЧрдИ рд╣реИ:

рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдЬрд╝: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рд╡рд┐рд▓рдВрдмрд┐рдд рдмрд╛рдзрд╛рдПрдБ

рдЪреВрдБрдХрд┐ рд╣рдо рдЗрд╕ рд╕рдорд╛рдзрд╛рди рд╕реЗ рдкреВрд░реА рддрд░рд╣ рд╕рдВрддреБрд╖реНрдЯ рдереЗ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рджреВрд╕рд░реЗ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкрд░ рдЪрд░реНрдЪрд╛ рдХрд░рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рд╣рдорд╛рд░рд╛ рд╡рд░реНрддрдорд╛рди рд╕рдВрд╢реЛрдзрди, рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЕрднреА рддрдХ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдордиреЗ рдХреЗрд╡рд▓ рдЕрджреНрд╡рд┐рддреАрдп рд╡рд┐рд▓рдВрдмрд┐рдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдПрдХ рдкреВрд░реНрдг рдкреИрдЪ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд╣рдореЗрдВ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗред

рд╢рд╛рдпрдж рдЖрдкрдХреЗ рдорди рдореЗрдВ рдпрд╣ рд╕рд╡рд╛рд▓ рд╣реЛ рдХрд┐ рд╣рдо pg_repack рдХреЗ рд╕рдВрд╢реЛрдзрди рдХреЗ рд╕рд╛рде рдЗрд╕ рдХрд╣рд╛рдиреА рдореЗрдВ рдХреНрдпреЛрдВ рд╢рд╛рдорд┐рд▓ рд╣реБрдП, рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд┐рдпрд╛? рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рд╣рдордиреЗ рднреА рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛, рд▓реЗрдХрд┐рди рдмрд┐рдирд╛ рдХрд┐рд╕реА рдмрд╛рдзрд╛ рдХреЗ рдЯреЗрдмрд▓ рдкрд░ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрдиреБрднрд╡ рдиреЗ рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рдЗрд╕рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдпрджрд┐ рд╣рдореЗрдВ рдПрд╣рд╕рд╛рд╕ рд╣реБрдЖ рдХрд┐ рд╣рдо рдЙрдЪрд┐рдд рд╕рдордп рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХреЛ рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрдВрдЧреЗред .

рдирд┐рд╖реНрдХрд░реНрд╖

рд╣рдо рдЕрдкрдиреЗ рдЕрдиреБрднрд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХреНрдпрд╛ рдЕрдиреБрд╢рдВрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  1. рдЕрдкрдиреЗ рд╕реВрдЬрди рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВред рдирд┐рдЧрд░рд╛рдиреА рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  2. рдмреНрд▓реЛрдЯ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрддрд░ рдкрд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВред
  3. рдпрджрд┐ рд╕реВрдЬрди рдЕрднреА рднреА рдмрдврд╝ рд░рд╣реА рд╣реИ рдФрд░ рдЖрдк рдЖрдЙрдЯ-рдСрдлрд╝-рдж-рдмреЙрдХреНрд╕ рдЯреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕реЗ рджреВрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдмрд╛рд╣рд░реА рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рди рдбрд░реЗрдВред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рд░ рдЪреАрдЬрд╝ рдХрд╛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд░реЗрдВред
  4. рдЕрдкрдиреА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдмрд╛рд╣рд░реА рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рд╕реЗ рди рдбрд░реЗрдВ - рдХрднреА-рдХрднреА рдпрд╣ рдЖрдкрдХреЗ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рднреА рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рдФрд░ рдЖрд╕рд╛рди рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ