Postgres: рдмреНрд▓реЛрдЯ, pg_repack рдФрд░ рдЖрд╕реНрдердЧрд┐рдд рдмрд╛рдзрд╛рдПрдВ



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

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

рдпрд╣ рд▓реЗрдЦ PgConf.Russia 2020 рдореЗрдВ рдореЗрд░реА рдкреНрд░рд╕реНрддреБрддрд┐ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ ред


рдмреНрд▓реЛрдЯ рдХреНрдпреЛрдВ рд╣реЛрддрд╛ рд╣реИ


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

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

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



рдлрд┐рд░ рд╣рдордиреЗ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рддрд░рд╣ рдкреБрд░рд╛рдиреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдЕрдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд┐рд╣реНрдирд┐рдд рдХрд┐рдпрд╛ред



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



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

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



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



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

рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╕рдм рдХреБрдЫ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдмреНрд▓реЛрдЯ рдШрдЯрдирд╛ рдХреЗ рдпрд╛рдВрддреНрд░рд┐рдХреА рд╣реИред рдЕрдиреБрдХреНрд░рдорд┐рдд рдореЗрдВ, рдпрд╣ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рд╣реЛрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдореБрдЭреЗ рдмреНрд▓реЛрдЯ рд╣реИ?


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

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

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

рдмреНрд▓реЛрдЯ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рддрд░реАрдХреЗ


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

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

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

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

рд▓реЗрдХрд┐рди рдЬрдм рдЖрдкрдиреЗ AUTOVACUUM рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмреНрд▓реЛрдЯ рдмрдврд╝рдирд╛ рдЬрд╛рд░реА рд╣реИред рд░рд┐рдХреНрдд рдкреВрд░реНрдг

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

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

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

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

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

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



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

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

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

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

рд╣рдо рдареЗрд╕ рдЧрдП - рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рдЧрдпрд╛ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдореЗрдВ рдЙрдореНрдореАрдж рдереАред

рдареЗрд╕ рдкрд░ рдкрд╣рд▓рд╛ рдкреИрдирдХреЗрдХ


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

$ ./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 рдХрдорд╛рдВрдб рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдЕрдкреНрд░рддреНрдпрд╛рд╢рд┐рдд рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рд╣реЛрддреЗ рд╣реИрдВред

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


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

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

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

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

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

рд╕реНрд░реЛрдд: begriffs

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

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

рд╢реЛрдзрди pg_repack


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

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

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

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



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

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

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

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


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



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

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 рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рде рдХреНрдпреЛрдВ рдЬреБрдбрд╝ рдЧрдП, рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕рдХреЗ рдПрдирд╛рд▓реЙрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛? рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░, рд╣рдордиреЗ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд╕реЛрдЪрд╛, рд▓реЗрдХрд┐рди рд▓рдВрдмрд┐рдд рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреЗ рдмрд┐рдирд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдкрд░ рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдЕрдиреБрднрд╡ рдиреЗ рд╣рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рд╛рд░ рдХреЛ рд╕рдордЭрдиреЗ рдФрд░ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдореЗрдВ рднреА рд╕рдордп рд▓рдЧрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣рдо рдЗрд╕рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдЕрдЧрд░ рд╣рдореЗрдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЙрдЪрд┐рдд рд╕рдордп рдореЗрдВ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдПрдирд╛рд▓реЙрдЧреНрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред

рдЬрд╛рдБрдЪ - рдкрд░рд┐рдгрд╛рдо


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

  1. рдЕрдкрдиреЗ рдмреНрд▓реЛрдЯ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░реЗрдВред рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдХрд┐рддрдиреА рдЕрдЪреНрдЫреА рддрд░рд╣ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
  2. рдЙрдЪрд┐рдд рд╕реНрддрд░ рдкрд░ рдмреНрд▓реЛрдЯ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП AUTOVACUUM рд╕реЗрдЯ рдХрд░реЗрдВред
  3. bloat тАЬ тАЭ, . тАУ .
  4. тАУ , .

All Articles