PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

Alexey Lesovsky рджреНрд╡рд╛рд░рд╛ 2015 рд░рд┐рдкреЛрд░реНрдЯ рдХреЛ рдЯреНрд░рд╛рдиреНрд╕рдХреНрд░рд┐рдкреНрд╢рди "рдкреЛрд╖реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХ рдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмрдХреА"

рдкреНрд░рддрд┐рд╡реЗрджрдирдХреЛ рд▓реЗрдЦрдХрдмрд╛рдЯ рдЕрд╕реНрд╡реАрдХрд░рдг: рдо рдиреЛрдЯ рдЧрд░реНрдЫреБ рдХрд┐ рдпреЛ рдкреНрд░рддрд┐рд╡реЗрджрди рдиреЛрднреЗрдореНрдмрд░ 2015 рдХреЛ рд╣реЛ - 4 рд╡рд░реНрд╖ рднрдиреНрджрд╛ рдмрдвреА рдмрд┐рддрд┐рд╕рдХреЗрдХреЛ рдЫ рд░ рдзреЗрд░реИ рд╕рдордп рдмрд┐рддрд┐рд╕рдХреЗрдХреЛ рдЫред рд░рд┐рдкреЛрд░реНрдЯрдорд╛ рдЫрд▓рдлрд▓ рдЧрд░рд┐рдПрдХреЛ рд╕рдВрд╕реНрдХрд░рдг 9.4 рдЕрдм рд╕рдорд░реНрдерд┐рдд рдЫреИрдиред рд╡рд┐рдЧрдд 4 рд╡рд░реНрд╖рд╣рд░реВрдорд╛, 5 рдирдпрд╛рдБ рд╡рд┐рдореЛрдЪрдирд╣рд░реВ рдЬрд╛рд░реА рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН рдЬрд╕рдорд╛ рддрдереНрдпрд╛рдЩреНрдХрдХреЛ рд╕рдиреНрджрд░реНрднрдорд╛ рдзреЗрд░реИ рдЖрд╡рд┐рд╖реНрдХрд╛рд░рд╣рд░реВ, рд╕реБрдзрд╛рд░рд╣рд░реВ рд░ рдкрд░рд┐рд╡рд░реНрддрдирд╣рд░реВ рджреЗрдЦрд╛ рдкрд░реЗрдХрд╛ рдЫрдиреН, рд░ рдХреЗрд╣реА рд╕рд╛рдордЧреНрд░реАрд╣рд░реВ рдкреБрд░рд╛рдиреЛ рд░ рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рдЫреИрдирдиреНред рдореИрд▓реЗ рд╕рдореАрдХреНрд╖рд╛ рдЧрд░реНрджрд╛, рдореИрд▓реЗ рдпреА рдард╛рдЙрдБрд╣рд░реВрд▓рд╛рдИ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реЗрдВ рддрд╛рдХрд┐ рддрдкрд╛рдИрдВ рдкрд╛рдардХрд▓рд╛рдИ рднреНрд░рдордорд╛ рдирдкрд░реЛрд╕реНред рдореИрд▓реЗ рдпреА рдард╛рдЙрдБрд╣рд░реВ рдкреБрди: рд▓реЗрдЦреЗрдХреЛ рдЫреИрди, рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдЫрдиреН, рд░ рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдлрд░рдХ рд░рд┐рдкреЛрд░реНрдЯ рдмрд╛рд╣рд┐рд░ рдЖрдЙрдиреЗрдЫред

PostgreSQL DBMS рдПрдХ рд╡рд┐рд╢рд╛рд▓ рд╕рдВрдпрдиреНрддреНрд░ рд╣реЛ, рд░ рдпреЛ рд╕рдВрдпрдиреНрддреНрд░рдорд╛ рдзреЗрд░реИ рдЙрдкрдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рд╣реБрдиреНрдЫрдиреН, рдЬрд╕рдХреЛ рд╕рдордиреНрд╡рдпрд┐рдд рдХрд╛рд░реНрдпрд▓реЗ рдкреНрд░рддреНрдпрдХреНрд╖ рд░реВрдкрдорд╛ DBMS рдХреЛ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрдирд▓рд╛рдИ рдЕрд╕рд░ рдЧрд░реНрдЫред рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдХреНрд░рдордорд╛, рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рд░ рдШрдЯрдХрд╣рд░реВрдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рд╕рдЩреНрдХрд▓рди рдЧрд░рд┐рдиреНрдЫ, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ PostgreSQL рдХреЛ рдкреНрд░рднрд╛рд╡рдХрд╛рд░рд┐рддрд╛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рд░ рдХрд╛рд░реНрдпрд╕рдореНрдкрд╛рджрди рд╕реБрдзрд╛рд░ рдЧрд░реНрди рдЙрдкрд╛рдпрд╣рд░реВ рд▓рд┐рди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рдпрджреНрдпрдкрд┐, рддреНрдпрд╣рд╛рдБ рдзреЗрд░реИ рдЬрд╛рдирдХрд╛рд░реА рдЫ рд░ рдпреЛ рдПрдХ рдмрд░реБ рд╕рд░рд▓ рд░реВрдкрдорд╛ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХреЛ рдЫред рдпрд╕ рдЬрд╛рдирдХрд╛рд░реАрд▓рд╛рдИ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрдиреЗ рд░ рдпрд╕рд▓рд╛рдИ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдЧрд░реНрдиреЗ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдВ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реЛ, рд░ рдЙрдкрдХрд░рдг рд░ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВрдХреЛ "рдЪрд┐рдбрд┐рдпрд╛рдШрд░" рд▓реЗ рдЙрдиреНрдирдд DBA рдкрдирд┐ рд╕рдЬрд┐рд▓реИ рднреНрд░рдорд┐рдд рдЧрд░реНрди рд╕рдХреНрдЫред
PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА


рд╢реБрдн рджрд┐рдЙрдБрд╕реЛ рдореЗрд░реЛ рдирд╛рдо Aleksey рд╣реЛред рдЗрд▓реНрдпрд╛рд▓реЗ рднрдиреЗ рдЬрд╕реНрддреИ, рдо PostgreSQL рддрдереНрдпрд╛рдЩреНрдХрдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреБред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

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

рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдмрддрд╛рдЙрдЫреБ рдХрд┐ рдХрд╕рд░реА рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд░реВрдкрдорд╛ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рд╡рд┐рднрд┐рдиреНрди рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЬреБрди рддрдкрд╛рдИрдВрд╕рдБрдЧ рд╣реБрди рд╕рдХреНрдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

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

рд░ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдЙрдкрдХрд░рдг рд╕рдореАрдХреНрд╖рд╛ рд╣реБрдиреЗрдЫреИрди, рдо рдПрдХ рдЙрддреНрдкрд╛рджрди рдЕрд░реНрдХреЛрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрдиреЗрдЫреИрдиред рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рд╡рд┐рдЬреНрдЮрд╛рдкрди рд╣реБрдиреЗрдЫреИрдиред рдпрд╕рд▓рд╛рдИ рдЫреЛрдбреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдо рддрдкрд╛рдИрд▓рд╛рдИ рджреЗрдЦрд╛рдЙрди рдЪрд╛рд╣рдиреНрдЫреБ рдХрд┐ рддрдереНрдпрд╛рдЩреНрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рдЙрдкрдпреЛрдЧреА рдЫред рдпреЛ рдЖрд╡рд╢реНрдпрдХ рдЫред рдпрд╕рд▓рд╛рдИ рдирд┐рдбрд░рддрд╛рдкреВрд░реНрд╡рдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореАрд▓рд╛рдИ рд╕рд╛рджрд╛ SQL рд░ SQL рдХреЛ рдЖрдзрд╛рд░рднреВрдд рдЬреНрдЮрд╛рди рдЪрд╛рд╣рд┐рдиреНрдЫред

рд░ рд╣рд╛рдореА рд╕рдорд╕реНрдпрд╛рд╣рд░реВ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдХреБрди рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдЫрдиреМрдЯ рдЧрд░реНрдиреЗ рдмрд╛рд░реЗ рдХреБрд░рд╛ рдЧрд░реНрдиреЗрдЫреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ PostgreSQL рд╣реЗрд░реНрдЫреМрдВ рд░ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╣реЗрд░реНрди рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдордорд╛ рдХрдорд╛рдгреНрдб рдЪрд▓рд╛рдЙрдБрдЫреМрдВ рднрдиреЗ, рд╣рд╛рдореАрд▓реЗ "рдмреНрд▓реНрдпрд╛рдХ рдмрдХреНрд╕" рджреЗрдЦреНрдиреЗрдЫреМрдВред рд╣рд╛рдореА рдХреЗрд╣рд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рджреЗрдЦреНрдиреЗрдЫреМрдВ рдЬрд╕рд▓реЗ рдХреЗрд╣рд┐ рдЧрд░реНрдЫ, рд░ рдирд╛рдордмрд╛рдЯ рд╣рд╛рдореА рд▓рдЧрднрдЧ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рддреНрдпрд╣рд╛рдБ рдХреЗ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫрдиреН, рддрд┐рдиреАрд╣рд░реВ рдХреЗ рдЧрд░рд┐рд░рд╣реЗрдХрд╛ рдЫрдиреНред рддрд░, рд╡рд╛рд╕реНрддрд╡рдорд╛, рдпреЛ рдмреНрд▓реНрдпрд╛рдХ рдмрдХреНрд╕ рд╣реЛ, рд╣рд╛рдореА рднрд┐рддреНрд░ рд╣реЗрд░реНрди рд╕рдХреНрджреИрдиреМрдВред

рд╣рд╛рдореА CPU рд▓реЛрдб рдорд╛ рд╣реЗрд░реНрди рд╕рдХреНрдЫреМрдВ top, рд╣рд╛рдореА рдХреЗрд╣рд┐ рдкреНрд░рдгрд╛рд▓реА рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реБ рджреНрд╡рд╛рд░рд╛ рдореЗрдореЛрд░реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ, рддрд░ рд╣рд╛рдореА PostgreSQL рднрд┐рддреНрд░ рд╣реЗрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреЗрдЫреИрдиреМрдВред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд▓рд╛рдИ рдЕрдиреНрдп рдЙрдкрдХрд░рдг рдЪрд╛рд╣рд┐рдиреНрдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рд░ рдЕрдЧрд╛рдбрд┐ рдмрдвреНрджреИ, рдо рддрдкрд╛рдИрд▓рд╛рдИ рд╕рдордп рдХрд╣рд╛рдБ рдмрд┐рддрд╛рдПрдХреЛ рдЫ рднрдиреНрдиреЗрдЫреБред рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ PostgreSQL рд▓рд╛рдИ рдпрд╕реНрддреЛ рдпреЛрдЬрдирд╛рдХреЛ рд░реВрдкрдорд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрдЫреМрдВ рднрдиреЗ, рд╕рдордп рдХрд╣рд╛рдБ рдмрд┐рддреНрдпреЛ рднрдиреНрдиреЗ рдЬрд╡рд╛рдл рджрд┐рди рд╕рдореНрднрд╡ рд╣реБрдиреЗрдЫред рдпреА рджреБрдИ рдЪреАрдЬрд╣рд░реВ рдЫрдиреН: рдпреЛ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рд░ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдпрд╣рд░реВрдмрд╛рдЯ рдЧреНрд░рд╛рд╣рдХ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдкреНрд░рд╢реЛрдзрди рд╣реЛ рдЬреБрди PostgreSQL рдпрд╕рд▓рд╛рдИ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдЧрд░реНрджрдЫред

рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдорд╛рдерд┐рд▓реНрд▓реЛ рдмрд╛рдпрд╛рдБ рдХреБрдирд╛рдорд╛ рд╣реЗрд░реНрди рдерд╛рд▓реНрдпреМрдВ рднрдиреЗ, рд╣рд╛рдореА рдХрд╕рд░реА рдХреНрд▓рд╛рдЗрдиреНрдЯ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдкреНрд░рд╢реЛрдзрди рдЧрд░рд┐рдиреНрдЫ рднрдиреЗрд░ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВред рдЕрдиреБрд░реЛрдз рдЕрдиреБрдкреНрд░рдпреЛрдЧрдмрд╛рдЯ рдЖрдЙрдБрдЫ рд░ рдЧреНрд░рд╛рд╣рдХ рд╕рддреНрд░ рдердк рдХрд╛рдордХреЛ рд▓рд╛рдЧрд┐ рдЦреЛрд▓рд┐рдПрдХреЛ рдЫред рдЕрдиреБрд░реЛрдз рдЕрдиреБрд╕реВрдЪрдХрд▓рд╛рдИ рдкрд╛рд╕ рдЧрд░рд┐рдПрдХреЛ рдЫред рдпреЛрдЬрдирд╛рдХрд╛рд░рд▓реЗ рдкреНрд░рд╢реНрди рдпреЛрдЬрдирд╛ рдмрдирд╛рдЙрдБрдЫред рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдирдХреЛ рд▓рд╛рдЧрд┐ рдердк рдкрдард╛рдЙрдБрдЫред рддреНрдпрд╣рд╛рдБ рддрд╛рд▓рд┐рдХрд╛ рд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рд╕рдВрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдмреНрд▓рдХ I / O рдбрд╛рдЯрд╛ рдХреЛ рдХреЗрд╣рд┐ рдкреНрд░рдХрд╛рд░ рдЫред рдЖрд╡рд╢реНрдпрдХ рдбрд╛рдЯрд╛ рдбрд┐рд╕реНрдХрдмрд╛рдЯ рдореЗрдореЛрд░реАрдорд╛ "рд╕рд╛рдЭреЗрджрд╛рд░реА рдмрдлрд░" рднрдирд┐рдиреЗ рд╡рд┐рд╢реЗрд╖ рдХреНрд╖реЗрддреНрд░рдорд╛ рдкрдврд┐рдиреНрдЫред рдХреНрд╡реЗрд░реА рдирддрд┐рдЬрд╛рд╣рд░реВ, рдпрджрд┐ рддрд┐рдиреАрд╣рд░реВ рдЕрдкрдбреЗрдЯ, рдореЗрдЯрд╛рдЗрдПрдХрд╛ рдЫрдиреН, WAL рдорд╛ рд▓реЗрдирджреЗрди рд▓рдЧрдорд╛ рд░реЗрдХрд░реНрдб рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреНред рдХреЗрд╣рд┐ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЬрд╛рдирдХрд╛рд░реА рд▓рдЧ рд╡рд╛ рддрдереНрдпрд╛рдЩреНрдХ рдХрд▓реЗрдХреНрдЯрд░ рдорд╛ рдЬрд╛рдиреНрдЫред рд░ рдЕрдиреБрд░реЛрдзрдХреЛ рдкрд░рд┐рдгрд╛рдо рдЧреНрд░рд╛рд╣рдХрд▓рд╛рдИ рдлрд┐рд░реНрддрд╛ рджрд┐рдЗрдиреНрдЫред рддреНрдпрд╕ рдкрдЫрд┐, рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдирдпрд╛рдБ рдЕрдиреБрд░реЛрдзрдХреЛ рд╕рд╛рде рд╕рдмреИ рдХреБрд░рд╛ рджреЛрд╣реЛрд░реНрдпрд╛рдЙрди рд╕рдХреНрдЫред

рд╣рд╛рдореАрд╕рдБрдЧ рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛рд░реНрдпрд╣рд░реВ рд░ рдкреГрд╖реНрдарднреВрдорд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВрд╕рдБрдЧ рдХреЗ рдЫ? рд╣рд╛рдореАрд╕рдБрдЧ рдзреЗрд░реИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓рд╛рдИ рд╕рд╛рдорд╛рдиреНрдп рдЕрдкрд░реЗрдЯрд┐рдЩ рдореЛрдбрдорд╛ рд░рд╛рдЦреНрдЫред рдпреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдкрдирд┐ рд░рд┐рдкреЛрд░реНрдЯрдорд╛ рдХрднрд░ рдЧрд░рд┐рдиреЗрдЫрдиреН: рдпреА рд╣реБрдиреН рдЕрдЯреЛрднреНрдпрд╛рдХреНрдпреВрдо, рдЪреЗрдХрдкреЛрдЗрдиреНрдЯрд░, рдкреНрд░рддрд┐рдХреГрддрд┐рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ, рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХред рдореИрд▓реЗ рд░рд┐рдкреЛрд░реНрдЯ рдЧрд░реНрджрд╛ рдо рддреА рдкреНрд░рддреНрдпреЗрдХрд▓рд╛рдИ рдЫреБрдиреЗрдЫреБред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рддрдереНрдпрд╛рдЩреНрдХрдорд╛ рдХреЗ рд╕рдорд╕реНрдпрд╛ рдЫрдиреН ?

  • рдзреЗрд░реИ рдЬрд╛рдирдХрд╛рд░реАред PostgreSQL 9.4 рд▓реЗ рддрдереНрдпрд╛рдЩреНрдХ рдбреЗрдЯрд╛ рд╣реЗрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ 109 рдореЗрдЯреНрд░рд┐рдХреНрд╕ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рдпрджреНрдпрдкрд┐, рдпрджрд┐ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓реЗ рдзреЗрд░реИ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ, рд╕реНрдХреАрдорд╛рд╣рд░реВ, рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВ рднрдгреНрдбрд╛рд░ рдЧрд░реНрджрдЫ рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдпреА рд╕рдмреИ рдореЗрдЯреНрд░рд┐рдХрд╣рд░реВ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ, рдбрд╛рдЯрд╛рдмреЗрд╕рд╣рд░реВрдХреЛ рдЕрдиреБрд░реВрдк рд╕рдВрдЦреНрдпрд╛рджреНрд╡рд╛рд░рд╛ рдЧреБрдгрди рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред рдЕрд░реНрдерд╛рддреН, рддреНрдпрд╣рд╛рдБ рдердк рдЬрд╛рдирдХрд╛рд░реА рдЫред рд░ рдпрд╕рдорд╛ рдбреБрдмреНрди рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдЫред
  • рдЕрд░реНрдХреЛ рд╕рдорд╕реНрдпрд╛ рдпреЛ рд╣реЛ рдХрд┐ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдХрд╛рдЙрдиреНрдЯрд░рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░рд┐рдиреНрдЫред рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдпреА рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рд╣реЗрд░реНтАНрдпреМрдВ рднрдиреЗ, рд╣рд╛рдореА рд▓рдЧрд╛рддрд╛рд░ рдмрдвреНрджреЛ рдХрд╛рдЙрдиреНрдЯрд░рд╣рд░реВ рджреЗрдЦреНрдиреЗрдЫреМрдВред рд░ рдпрджрд┐ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рд░рд┐рд╕реЗрдЯ рднрдПрджреЗрдЦрд┐ рдзреЗрд░реИ рд╕рдордп рдмрд┐рддрд┐рд╕рдХреЗрдХреЛ рдЫ рднрдиреЗ, рд╣рд╛рдореА рдЕрд░рдмреМрдВ рдорд╛рдирд╣рд░реВ рджреЗрдЦреНрдиреЗрдЫреМрдВред рд░ рдЙрдиреАрд╣рд░реВрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдХреЗрд╣реА рдкрдирд┐ рднрдиреЗрдирдиреНред
  • рдХреБрдиреИ рдЗрддрд┐рд╣рд╛рд╕ рдЫреИрдиред рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдХреЗрд╣рд┐ рдкреНрд░рдХрд╛рд░рдХреЛ рд╡рд┐рдлрд▓рддрд╛ рдЫ рднрдиреЗ, рдХреЗрд╣рд┐ 15-30 рдорд┐рдиреЗрдЯ рдкрд╣рд┐рд▓реЗ рдЦрд╕реНрдпреЛ, рддрдкрд╛рдЗрдБ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд░ 15-30 рдорд┐рдиреЗрдЯ рдкрд╣рд┐рд▓реЗ рдХреЗ рднрдпреЛ рд╣реЗрд░реНрди рд╕рдХреНрд╖рдо рд╣реБрдиреБрд╣реБрдиреЗ рдЫреИрдиред рдпреЛ рд╕рдорд╕реНрдпрд╛ рд╣реЛред
  • PostgreSQL рдорд╛ рдирд┐рд░реНрдорд┐рдд рдЙрдкрдХрд░рдг рдХреЛ рдЕрднрд╛рд╡ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛред рдХрд░реНрдиреЗрд▓ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рд╣рд░реВрд▓реЗ рдХреБрдиреИ рдкрдирд┐ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдкреНрд░рджрд╛рди рдЧрд░реНрджреИрдирдиреНред рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рддреНрдпрд╕реНрддреЛ рдХреЗрд╣реА рдЫреИрдиред рддрд┐рдиреАрд╣рд░реВ рдХреЗрд╡рд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рддрдереНрдпрд╛рдЩреНрдХ рджрд┐рдиреНрдЫрдиреНред рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдпрд╕рд▓рд╛рдИ рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЬреЗ рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ рдЧрд░реНрдиреБрд╣реЛрд╕реНред
  • PostgreSQL рдорд╛ рдирд┐рд░реНрдорд┐рдд рдХреБрдиреИ рдЙрдкрдХрд░рдг рдирднрдПрдХреЛрд▓реЗ, рдпрд╕рд▓реЗ рдЕрд░реНрдХреЛ рд╕рдорд╕реНрдпрд╛ рдирд┐рдореНрддреНрдпрд╛рдЙрдБрдЫред рдзреЗрд░реИ рддреЗрд╕реНрд░реЛ рдкрдХреНрд╖ рдЙрдкрдХрд░рдгрд╣рд░реВред рдкреНрд░рддреНрдпреЗрдХ рдХрдореНрдкрдиреА рдЬрд╕рдХреЛ рдХрдо рд╡рд╛ рдХрдо рдкреНрд░рддреНрдпрдХреНрд╖ рд╣рд╛рддрд╣рд░реВ рдЫрдиреН рдЖрдлреНрдиреИ рдХрд╛рд░реНрдпрдХреНрд░рдо рд▓реЗрдЦреНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджреИрдЫрдиреНред рд░ рдирддрд┐рдЬрд╛рдХреЛ рд░реВрдкрдорд╛, рд╕рдореБрджрд╛рдпрд╕рдБрдЧ рдзреЗрд░реИ рдЙрдкрдХрд░рдгрд╣рд░реВ рдЫрдиреН рдЬреБрди рддрдкрд╛рдИрдВрд▓реЗ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд░ рдХреЗрд╣реА рдЙрдкрдХрд░рдгрд╣рд░реВрдорд╛ рдХреЗрд╣реА рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЫрдиреН, рдЕрдиреНрдп рдЙрдкрдХрд░рдгрд╣рд░реВрдорд╛ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЫреИрдирдиреН, рд╡рд╛ рддреНрдпрд╣рд╛рдБ рдХреЗрд╣реА рдирдпрд╛рдБ рд╕реБрд╡рд┐рдзрд╛рд╣рд░реВ рдЫрдиреНред рд░ рдПрдХ рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реБрдиреНрдЫ рдХрд┐ рддрдкрд╛рдИрдВрд▓реЗ рджреБрдИ, рддреАрди, рд╡рд╛ рдЪрд╛рд░ рдЙрдкрдХрд░рдгрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдЬреБрди рдПрдХрдЕрд░реНрдХрд╛рд▓рд╛рдИ рдУрднрд░рд▓реНрдпрд╛рдк рдЧрд░реНрджрдЫ рд░ рдлрд░рдХ рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдЫрдиреНред рдпреЛ рдзреЗрд░реИ рдЕрдкреНрд░рд┐рдп рдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

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

рд░ рддрдкрд╛рдИрд▓рд╛рдИ SQL рдХреЛ рдЖрдзрд╛рд░рднреВрдд рдЬреНрдЮрд╛рди рдЪрд╛рд╣рд┐рдиреНрдЫред рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдмрд╛рдЯ рдХреЗрд╣реА рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ SQL рдХреНрд╡реЗрд░реАрд╣рд░реВ рдмрдирд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдЕрд░реНрдерд╛рддреН рддрдкрд╛рдИрдВрд▓реЗ рдХрд╕рд░реА рдЪрдпрди рдЧрд░реНрдиреЗ, рд╕рд╛рдореЗрд▓ рд╣реБрдиреЗ рднрдиреЗрд░ рдЬрд╛рдиреНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рддрдереНрдпрд╛рдЩреНрдХрд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рдзреЗрд░реИ рдХреБрд░рд╛рд╣рд░реВ рдмрддрд╛рдЙрдБрдЫред рддрд┐рдиреАрд╣рд░реВ рдХреЛрдЯрд┐рд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред

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

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рддрдереНрдпрд╛рдЩреНрдХрдХрд╛ рд╕реНрд░реЛрддрд╣рд░реВ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдЧрд░рд┐рдПрдХрд╛ рдЫрдиреН:

  • рд╕рд╛рдЭрд╛ рдореЗрдореЛрд░реАрдорд╛ (рд╕рд╛рдЭреЗрджрд╛рд░реА рдмрдлрд░рд╣рд░реВ) рддреНрдпрд╣рд╛рдБ рд╕реНрдерд┐рд░ рдбрд╛рдЯрд╛ рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдПрдХ рдЦрдгреНрдб рдЫ, рддреНрдпрд╣рд╛рдБ рддреА рдХрд╛рдЙрдиреНрдЯрд░рд╣рд░реВ рдкрдирд┐ рдЫрдиреН рдЬреБрди рдирд┐рд╢реНрдЪрд┐рдд рдШрдЯрдирд╛рд╣рд░реВ рджреЗрдЦрд╛ рдкрд░реНрджрд╛, рд╡рд╛ рдбрд╛рдЯрд╛рдмреЗрд╕рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдорд╛ рдХреЗрд╣реА рдХреНрд╖рдгрд╣рд░реВ рдЙрддреНрдкрдиреНрди рд╣реБрдБрджрд╛ рд▓рдЧрд╛рддрд╛рд░ рдмрдврд╛рдЗрдиреНрдЫред
  • рдпреА рд╕рдмреИ рдХрд╛рдЙрдиреНрдЯрд░рд╣рд░реВ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрд▓рдмреНрдз рдЫреИрдирдиреН рд░ рдкреНрд░рд╢рд╛рд╕рдХрд▓рд╛рдИ рдкрдирд┐ рдЙрдкрд▓рдмреНрдз рдЫреИрдирдиреНред рдпреА рддрд▓реНрд▓реЛ рддрд╣рдХрд╛ рдХреБрд░рд╛ рд╣реБрдиреН ред рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдкрд╣реБрдБрдЪ рдЧрд░реНрди, PostgreSQL рд▓реЗ SQL рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВрдХреЛ рд░реВрдкрдорд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред рд╣рд╛рдореА рдпреА рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдЪрдпрди рдЪрдпрдирд╣рд░реВ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ рд░ рдореЗрдЯреНрд░рд┐рдХрдХреЛ рдХреБрдиреИ рдкреНрд░рдХрд╛рд░ (рд╡рд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕рдХреЛ рд╕реЗрдЯ) рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред
  • рдпрджреНрдпрдкрд┐, рдпреА рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдзреИрдВ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реБрдБрджреИрди, рддреНрдпрд╕реИрд▓реЗ рдХрд╛рд░реНрдпрд╣рд░реВ рджреГрд╢реНрдпрд╣рд░реВ (VIEWs) рдХреЛ рдЖрдзрд╛рд░ рд╣реБрдиреНред рдпреА рднрд░реНрдЪреБрдЕрд▓ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рд╣реБрдиреН рдЬрд╕рд▓реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдкреНрд░рдгрд╛рд▓реАрдорд╛, рд╡рд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдорд╛ рднрдПрдХрд╛ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рдХреЗрд╣реА рд╕реЗрдЯрдорд╛ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдкреНрд░рджрд╛рди рдЧрд░реНрджрдЫред
  • рдпреА рдмрд┐рд▓реНрдЯ-рдЗрди рджреГрд╢реНрдпрд╣рд░реВ (VIEWs) рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рдореБрдЦреНрдп рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдиреНрдЯрд░рдлреЗрд╕ рд╣реБрдиреНред рддрд┐рдиреАрд╣рд░реВ рдХреБрдиреИ рдкрдирд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рдмрд┐рдирд╛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛ рдЙрдкрд▓рдмреНрдз рдЫрдиреН, рддрдкрд╛рдЗрдБ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рддреБрд░реБрдиреНрддреИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рддреНрдпрд╣рд╛рдБрдмрд╛рдЯ рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд░ рдпреЛрдЧрджрд╛рдирд╣рд░реВ рдкрдирд┐ рдЫрдиреНред рдпреЛрдЧрджрд╛рдирд╣рд░реВ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдЫрдиреНред рддрдкрд╛рдИрдВрд▓реЗ postgresql-contrib рдкреНрдпрд╛рдХреЗрдЬ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, postgresql94-contrib), рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдЖрд╡рд╢реНрдпрдХ рдореЛрдбреНрдпреБрд▓ рд▓реЛрдб рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реН, PostgreSQL рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд░ рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред (рдиреЛрдЯред рд╡рд┐рддрд░рдгрдХреЛ рдЖрдзрд╛рд░рдорд╛, рдпреЛрдЧрджрд╛рдирдХреЛ рднрд░реНрдЦрд░рдХрд╛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдорд╛ рдкреНрдпрд╛рдХреЗрдЬ рдореБрдЦреНрдп рдкреНрдпрд╛рдХреЗрдЬрдХреЛ рдЕрдВрд╢ рд╣реЛ).
  • рд░ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдпреЛрдЧрджрд╛рдирд╣рд░реВ рдЫрдиреНред рддрд┐рдиреАрд╣рд░реВ рдорд╛рдирдХ PostgreSQL рд╡рд┐рддрд░рдгрд╕рдБрдЧ рдЖрдкреВрд░реНрддрд┐ рдЧрд░рд┐рдПрдХреЛ рдЫреИрдиред рддрд┐рдиреАрд╣рд░реВ рдпрд╛ рдд рдХрдореНрдкрд╛рдЗрд▓ рд╡рд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдХреЛ рд░реВрдкрдорд╛ рд╕реНрдерд╛рдкрд┐рдд рд╣реБрдиреБрдкрд░реНрдЫред рдпрд╕ рдЕрдиреМрдкрдЪрд╛рд░рд┐рдХ рдпреЛрдЧрджрд╛рдирдХреЛ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛ рдХреЗ рд▓рд┐рдПрд░ рдЖрдПрдХрд╛ рдЖрдзрд╛рд░рдорд╛ рд╡рд┐рдХрд▓реНрдкрд╣рд░реВ рдзреЗрд░реИ рдлрд░рдХ рд╣реБрди рд╕рдХреНрдЫрдиреНред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдпреЛ рд╕реНрд▓рд╛рдЗрдбрд▓реЗ рддреА рд╕рдмреИ рджреГрд╢реНрдпрд╣рд░реВ (VIEWs) рд░ PostgreSQL 9.4 рдорд╛ рдЙрдкрд▓рдмреНрдз рдХреЗрд╣реА рдХрд╛рд░реНрдпрд╣рд░реВ рджреЗрдЦрд╛рдЙрдБрдЫред рд╣рд╛рдореА рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ, рддрд┐рдиреАрд╣рд░реВрдордзреНрдпреЗ рдзреЗрд░реИ рдЫрдиреНред рд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдкрд╣рд┐рд▓реЛ рдкрдЯрдХ рдпреЛ рдЕрдиреБрднрд╡ рдЧрд░реНрджреИ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ рднреНрд░рдорд┐рдд рд╣реБрди рдзреЗрд░реИ рд╕рдЬрд┐рд▓реЛ рдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдпрджреНрдпрдкрд┐, рдпрджрд┐ рд╣рд╛рдореА рдЕрдШрд┐рд▓реНрд▓реЛ рддрд╕реНрд╡реАрд░ рд▓рд┐рдиреНрдЫреМрдВ ╨Ъ╨░╨║ ╤В╤А╨░╤В╨╕╤В╤Б╤П ╨▓╤А╨╡╨╝╤П ╨╜╨░ PostgreSQL рд░ рдпреЛ рд╕реВрдЪреА рд╕рдВрдЧ рдЙрдкрдпреБрдХреНрдд, рд╣рд╛рдореА рдпреЛ рддрд╕реНрд╡реАрд░ рдкреНрд░рд╛рдкреНрддред рдкреНрд░рддреНрдпреЗрдХ рджреГрд╢реНрдп (VIEWs), рд╡рд╛ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░реНрдп, рд╣рд╛рдореАрд▓реЗ PostgreSQL рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдмреЗрд▓рд╛ рдЙрдкрдпреБрдХреНрдд рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рдПрдХ рдЙрджреНрджреЗрд╢реНрдп рд╡рд╛ рдЕрд░реНрдХреЛрдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд░ рд╣рд╛рдореА рдкрд╣рд┐рд▓реЗ рдиреИ рдЙрдкрдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╕рдЮреНрдЪрд╛рд▓рди рдмрд╛рд░реЗ рдХреЗрд╣реА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

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

рд╣рд╛рдореА рддреНрдпрд╣рд╛рдБрдмрд╛рдЯ рдХреЗ рд▓рд┐рди рд╕рдХреНрдЫреМрдВ? рд╕рдмреИ рднрдиреНрджрд╛ рд╕рд╛рдзрд╛рд░рдг рдХреБрд░рд╛рд╣рд░реБ рд╕рдВрдЧ рд╕реБрд░реБ рдЧрд░реМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

select
sum(blks_hit)*100/sum(blks_hit+blks_read) as hit_ratio
from pg_stat_database;

рд╣рд╛рдореАрд▓реЗ рд╣реЗрд░реНрди рд╕рдХреНрдиреЗ рдкрд╣рд┐рд▓реЛ рдХреБрд░рд╛ рдХреНрдпрд╛рд╕ рд╣рд┐рдЯ рдкреНрд░рддрд┐рд╢рдд рд╣реЛред рдХреНрдпрд╛рд╕ рд╣рд┐рдЯ рдкреНрд░рддрд┐рд╢рдд рдПрдХ рдЙрдкрдпреЛрдЧреА рдореЗрдЯреНрд░рд┐рдХ рд╣реЛред рдпрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рд╕рд╛рдЭрд╛ рдмрдлрд░ рдХреНрдпрд╛рд╕рдмрд╛рдЯ рдХрддрд┐ рдбрд╛рдЯрд╛ рд▓рд┐рдЗрдиреНрдЫ, рд░ рдбрд┐рд╕реНрдХрдмрд╛рдЯ рдХрддрд┐ рдкрдврд┐рдиреНрдЫ рднрдиреЗрд░ рдЕрдиреБрдорд╛рди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рднрдиреНрдиреЗ рдкреНрд░рд╖реНрдЯ рдЫ рд╣рд╛рдореАрд╕рдБрдЧ рдЬрддрд┐ рдзреЗрд░реИ рдХреНрдпрд╛рд╕ рд╣рд┐рдЯ рд╣реБрдиреНрдЫ, рддреНрдпрддрд┐ рд░рд╛рдореНрд░реЛред рд╣рд╛рдореА рдпреЛ рдореЗрдЯреНрд░рд┐рдХрд▓рд╛рдИ рдкреНрд░рддрд┐рд╢рддрдХреЛ рд░реВрдкрдорд╛ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрдЫреМрдВред рд░, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпрджрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рдпреА рдХреНрдпрд╛рд╕рд╣рд░реВрдХреЛ рдкреНрд░рддрд┐рд╢рдд 90% рднрдиреНрджрд╛ рдмрдвреА рд╣рд┐рдЯ рдЫ рднрдиреЗ, рдпреЛ рд░рд╛рдореНрд░реЛ рдЫред рдпрджрд┐ рдпреЛ 90% рднрдиреНрджрд╛ рддрд▓ рдЦрд╕реНрдпреЛ рднрдиреЗ, рд╣рд╛рдореАрд╕рдБрдЧ рдореЗрдореЛрд░реАрдорд╛ рдбрд╛рдЯрд╛рдХреЛ рддрд╛рддреЛ рд╣реЗрдб рд░рд╛рдЦреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рдЫреИрдиред рд░ рдпреЛ рдбрд╛рдЯрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐, PostgreSQL рд▓рд╛рдИ рдбрд┐рд╕реНрдХ рдкрд╣реБрдБрдЪ рдЧрд░реНрди рдмрд╛рдзреНрдп рдкрд╛рд░рд┐рдПрдХреЛ рдЫ рд░ рдпреЛ рдбрд╛рдЯрд╛ рдореЗрдореЛрд░реАрдмрд╛рдЯ рдкрдвреЗрдХреЛ рднрдиреНрджрд╛ рдврд┐рд▓реЛ рдЫред рд░ рддрдкрд╛рдИрдВрд▓реЗ рдореЗрдореЛрд░реА рдмрдврд╛рдЙрдиреЗ рдмрд╛рд░реЗ рд╕реЛрдЪреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ: рдпрд╛ рдд рд╕рд╛рдЭрд╛ рдмрдлрд░рд╣рд░реВ рдмрдврд╛рдЙрдиреБрд╣реЛрд╕реН, рд╡рд╛ рдлрд▓рд╛рдордХреЛ рдореЗрдореЛрд░реА (RAM) рдмрдврд╛рдЙрдиреБрд╣реЛрд╕реНред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

select
datname,
(xact_commit*100)/(xact_commit+xact_rollback) as c_ratio,
deadlocks, conflicts,
temp_file, pg_size_pretty(temp_bytes) as temp_size
from pg_stat_database;

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

рд╣рд╛рдореА рдпреЛ рдЕрдиреБрд░реЛрдз рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдпреЛ SQL рдзреЗрд░реИ рд╕рд░рд▓ рдЫред рд░ рд╣рд╛рдореА рдЖрдлреНрдиреЛ рд▓рд╛рдЧрд┐ рдпреЛ рдбрд╛рдЯрд╛ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

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

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

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

рдЕрд╕реНрдерд╛рдпреА рдлрд╛рдЗрд▓рд╣рд░реВ (temp_files) рдкрдирд┐ рдЦрд░рд╛рдм рдЫрдиреНред рдЬрдм рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рдЕрдиреБрд░реЛрдзрд╕рдБрдЧ рдкрд░рд┐рдЪрд╛рд▓рди, рдЕрд╕реНрдерд╛рдпреА рдбрд╛рдЯрд╛ рд╕рдорд╛рдпреЛрдЬрди рдЧрд░реНрди рдкрд░реНрдпрд╛рдкреНрдд рдореЗрдореЛрд░реА рд╣реБрдБрджреИрди, рдпрд╕рд▓реЗ рдбрд┐рд╕реНрдХрдорд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрджрдЫред рд░ рдореЗрдореЛрд░реАрдорд╛ рдЕрд╕реНрдерд╛рдпреА рдмрдлрд░рдорд╛ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рд╕рдХреНрдиреЗ рд╕рдмреИ рдХрд╛рд░реНрдпрд╣рд░реВ, рдЙрд╕рд▓реЗ рдбрд┐рд╕реНрдХрдорд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рдерд╛рд▓реНрдЫред рдпреЛ рдврд┐рд▓реЛ рдЫред рдпрд╕рд▓реЗ рдХреНрд╡реЗрд░реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп рдмрдврд╛рдЙрдБрдЫред рд░ PostgreSQL рд▓рд╛рдИ рдЕрдиреБрд░реЛрдз рдкрдард╛рдЙрдиреЗ рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдХреЗрд╣рд┐ рдкрдЫрд┐ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрдиреЗрдЫред рдпрджрд┐ рдпреА рд╕рдмреИ рдХрд╛рд░реНрдпрд╣рд░реВ рдореЗрдореЛрд░реАрдорд╛ рдЧрд░рд┐рдиреНрдЫ рднрдиреЗ, Postgres рд▓реЗ рдзреЗрд░реИ рдЫрд┐рдЯреЛ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рджрд┐рдиреЗрдЫ рд░ рдЧреНрд░рд╛рд╣рдХрд▓реЗ рдХрдо рдкрд░реНрдЦрдиреЗрдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

pg_stat_bgwriter - рдпреЛ рджреГрд╢реНрдпрд▓реЗ рджреБрдИ PostgreSQL рдкреГрд╖реНрдарднреВрдорд┐ рдЙрдкрдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рд╕рдЮреНрдЪрд╛рд▓рдирдХреЛ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫ: checkpointer ╨╕ background writer.

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рд╕реБрд░реБ рдЧрд░реНрди, рдирд┐рдпрдиреНрддреНрд░рдг рдмрд┐рдиреНрджреБрд╣рд░реВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реМрдВ, рддрдерд╛рдХрдерд┐рддред checkpointsред рдЪреЗрдХрдкреЛрд╕реНрдЯрд╣рд░реВ рдХреЗ рд╣реБрдиреН? рдЪреЗрдХрдкреЛрдЗрдиреНрдЯ рд▓реЗрдирджреЗрди рд▓рдЧ рдорд╛ рдПрдХ рд╕реНрдерд┐рддрд┐ рд╣реЛ рдХрд┐ рд▓рдЧ рдорд╛ рдкреНрд░рддрд┐рдмрджреНрдз рд╕рдмреИ рдбреЗрдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдбрд┐рд╕реНрдХ рдорд╛ рдбрд╛рдЯрд╛ рд╕рдВрдЧ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗрд░ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫред рдкреНрд░рдХреНрд░рд┐рдпрд╛, рдХрд╛рд░реНрдпрднрд╛рд░ рд░ рд╕реЗрдЯрд┐рдЩрд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджреИ, рд▓рд╛рдореЛ рд╣реБрди рд╕рдХреНрдЫ рд░ рдкреНрд░рд╛рдп: рдбрд┐рд╕реНрдХрдорд╛ рдбрд╛рдЯрд╛ рдлрд╛рдЗрд▓рд╣рд░реВрд╕рдБрдЧ рд╕рд╛рдЭрд╛ рдмрдлрд░рд╣рд░реВрдорд╛ рдлреЛрд╣реЛрд░ рдкреГрд╖реНрдард╣рд░реВ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрдиреЗ рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫред рдпреЛ рдХреЗ рдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛ? рдпрджрд┐ PostgreSQL рд▓реЗ рдбрд┐рд╕реНрдХрдорд╛ рд╕рдмреИ рд╕рдордп рдкрд╣реБрдБрдЪ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдерд┐рдпреЛ рд░ рддреНрдпрд╣рд╛рдБрдмрд╛рдЯ рдбрд╛рдЯрд╛ рд▓рд┐рдЗрд░рд╣реЗрдХреЛ рдерд┐рдпреЛ, рд░ рдкреНрд░рддреНрдпреЗрдХ рдкрд╣реБрдБрдЪрдорд╛ рдбрд╛рдЯрд╛ рд▓реЗрдЦреНрджреИ рдерд┐рдпреЛ, рдпреЛ рдврд┐рд▓реЛ рд╣реБрдиреЗрдЫред рддреНрдпрд╕реИрд▓реЗ, PostgreSQL рд╕рдБрдЧ рдореЗрдореЛрд░реА рдЦрдгреНрдб рдЫ, рдЬрд╕рдХреЛ рд╕рд╛рдЗрдЬ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рднрдПрдХрд╛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫред Postgres рд▓реЗ рдердк рдкреНрд░рд╢реЛрдзрди рд╡рд╛ рдХреНрд╡реЗрд░реАрдХреЛ рд▓рд╛рдЧрд┐ рдпрд╕ рдореЗрдореЛрд░реАрдорд╛ рдкрд░рд┐рдЪрд╛рд▓рди рдбреЗрдЯрд╛ рдЖрд╡рдВрдЯрд┐рдд рдЧрд░реНрджрдЫред рдбрд╛рдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рддрд┐рдиреАрд╣рд░реВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реБрдиреНрдЫрдиреНред рд░ рд╣рд╛рдореАрд▓реЗ рдбрд╛рдЯрд╛рдХреЛ рджреБрдИ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рдкрд╛рдЙрдБрдЫреМрдВред рдПрдЙрдЯрд╛ рдореЗрдореЛрд░реАрдорд╛ рдЫ, рдЕрд░реНрдХреЛ рдбрд┐рд╕реНрдХрдорд╛ рдЫред рд░ рдЖрд╡рдзрд┐рдХ рд░реВрдкрдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдбрд╛рдЯрд╛ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд╣рд╛рдореАрд▓рд╛рдИ рдбрд┐рд╕реНрдХрдорд╛ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрди рдореЗрдореЛрд░реАрдорд╛ рдкрд░рд┐рд╡рд░реНрддрди рднрдПрдХреЛ рдХреБрд░рд╛ рдЪрд╛рд╣рд┐рдиреНрдЫред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рдЪреЗрдХрдкреЛрдЗрдиреНрдЯрд╣рд░реВ рдЪрд╛рд╣рд┐рдиреНрдЫред

рдЪреЗрдХрдкреЛрдЗрдиреНрдЯ рд╕рд╛рдЭрд╛ рдмрдлрд░рд╣рд░реВ рдорд╛рд░реНрдлрдд рдЬрд╛рдиреНрдЫ, рдлреЛрд╣реЛрд░ рдкреГрд╖реНрдард╣рд░реВрд▓рд╛рдИ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрдБрджрдЫ рдЬреБрди рддрд┐рдиреАрд╣рд░реВ рдЪреЗрдХрдкреЛрдЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдЖрд╡рд╢реНрдпрдХ рдЫрдиреНред рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рд╕рд╛рдЭрд╛ рдмрдлрд░ рдорд╛рд░реНрдлрдд рджреЛрд╕реНрд░реЛ рдкрд╛рд╕ рд╕реБрд░реБ рд╣реБрдиреНрдЫред рд░ рдЪреЗрдХрдкреЛрдЗрдиреНрдЯрдХреЛ рд▓рд╛рдЧрд┐ рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЗрдПрдХрд╛ рдкреГрд╖реНрдард╣рд░реВ, рдЙрд╕рд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрджрдЫред рдпрд╕рд░реА, рдбрд╛рдЯрд╛ рдкрд╣рд┐рд▓реЗ рдиреИ рдбрд┐рд╕реНрдХ рд╕рдВрдЧ рд╕рд┐рдВрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░рд┐рдПрдХреЛ рдЫред

рддреНрдпрд╣рд╛рдБ рджреБрдИ рдкреНрд░рдХрд╛рд░рдХрд╛ рдирд┐рдпрдиреНрддреНрд░рдг рдмрд┐рдиреНрджреБрд╣рд░реВ рдЫрдиреНред рдПрдХ рдЪреЗрдХрдкреЛрдЗрдиреНрдЯ рдЯрд╛рдЗрдордЖрдЙрдЯрдорд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░рд┐рдПрдХреЛ рдЫред рдпреЛ рдЪреЗрдХрдкреЛрдЗрдиреНрдЯ рдЙрдкрдпреЛрдЧреА рд░ рд░рд╛рдореНрд░реЛ рдЫ - checkpoint_timedред рд░ рддреНрдпрд╣рд╛рдБ рдорд╛рдЧрдорд╛ рдЪреЗрдХрдкреЛрдЗрдиреНрдЯрд╣рд░реВ рдЫрдиреН - checkpoint requiredред рдпрд╕реНрддреЛ рдЪреЗрдХрдкреЛрдЗрдиреНрдЯ рддрдм рд╣реБрдиреНрдЫ рдЬрдм рд╣рд╛рдореАрд╕рдБрдЧ рдзреЗрд░реИ рдареВрд▓реЛ рдбрд╛рдЯрд╛ рд░реЗрдХрд░реНрдб рд╣реБрдиреНрдЫред рд╣рд╛рдореАрд▓реЗ рдзреЗрд░реИ рд▓реЗрдирджреЗрди рд▓рдЧрд╣рд░реВ рд░реЗрдХрд░реНрдб рдЧрд░реНрдпреМрдВред рд░ PostgreSQL рд╡рд┐рд╢реНрд╡рд╛рд╕ рдЧрд░реНрджрдЫ рдХрд┐ рдпреЛ рд╕рдмреИрд▓рд╛рдИ рд╕рдХреЗрд╕рдореНрдо рдЪрд╛рдБрдбреЛ рд╕рд┐рдЩреНрдХреНрд░реЛрдирд╛рдЗрдЬ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдПрдХ рдЪреЗрдХрдкреЛрдЗрдиреНрдЯ рдмрдирд╛рдЙрдиреБрд╣реЛрд╕реН рд░ рдЕрдЧрд╛рдбрд┐ рдмрдвреНрдиреБрд╣реЛрд╕реНред

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

рд░ рдЪреЗрдХрдкреЛрдЗрдиреНрдЯ рд╕рдорд╛рдпреЛрдЬрди рдЧрд░реНрди рддреАрди рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рдЫрдиреН:

  • ╤Бheckpoint_segments.

  • ╤Бheckpoint_timeout.

  • ╤Бheckpoint_competion_target.

рддрд┐рдиреАрд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдирд┐рдпрдиреНрддреНрд░рдг рдмрд┐рдиреНрджреБрд╣рд░реВрдХреЛ рд╕рдЮреНрдЪрд╛рд▓рди рдирд┐рдпрдиреНрддреНрд░рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рддрд░ рдо рддрд┐рдиреАрд╣рд░реВрдорд╛ рдмрд╕реНрдиреЗ рдЫреИрдиред рддрд┐рдиреАрд╣рд░реВрдХреЛ рдкреНрд░рднрд╛рд╡ рдПрдХ рдЕрд▓рдЧ рдореБрджреНрджрд╛ рд╣реЛред

рдЪреЗрддрд╛рд╡рдиреА: рдкреНрд░рддрд┐рд╡реЗрджрдирдорд╛ рд╡рд┐рдЪрд╛рд░ рдЧрд░рд┐рдПрдХреЛ рд╕рдВрд╕реНрдХрд░рдг 9.4 рдЕрдм рд╕рд╛рдиреНрджрд░реНрднрд┐рдХ рдЫреИрдиред PostgreSQL рдХреЛ рдЖрдзреБрдирд┐рдХ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВрдорд╛, рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ checkpoint_segments рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд min_wal_size ╨╕ max_wal_size.

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдЕрд░реНрдХреЛ рдЙрдкрдкреНрд░рдгрд╛рд▓реА рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХ рд╣реЛ - background writerред рдК рдХреЗ рдЧрд░реНрджреИ рдЫ? рдпреЛ рдЕрдирдиреНрдд рд▓реВрдкрдорд╛ рдирд┐рд░рдиреНрддрд░ рдЪрд▓реНрдЫред рдпрд╕рд▓реЗ рдкреГрд╖реНрдард╣рд░реВрд▓рд╛рдИ рд╕рд╛рдЭрд╛ рдмрдлрд░рд╣рд░реВрдорд╛ рд╕реНрдХреНрдпрд╛рди рдЧрд░реНрджрдЫ рд░ рдлреЛрд╣реЛрд░ рдкреГрд╖реНрдард╣рд░реВрд▓рд╛рдИ рдбрд┐рд╕реНрдХрдорд╛ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдЫред рдпрд╕ рддрд░рд┐рдХрд╛рд▓реЗ, рдпрд╕рд▓реЗ рдЪреЗрдХрдкреЛрдЗрдиреНрдЯрд┐рдЩрдХреЛ рд╕рдордпрдорд╛ рдХрдо рдХрд╛рдо рдЧрд░реНрди рдЪреЗрдХрдкреЛрдЗрдиреНрдЯрд░рд▓рд╛рдИ рдорджреНрджрдд рдЧрд░реНрджрдЫред

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

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

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдЪреЗрддрд╛рд╡рдиреА: _рдирд┐рдореНрди рдкрд╛рдард▓реЗ рдкреНрд░рддрд┐рдХреГрддрд┐рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рджреГрд╢реНрдпрд╣рд░реВ рд╡рд░реНрдгрди рдЧрд░реНрджрдЫред рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ 10 рдорд╛ рдЕрдзрд┐рдХрд╛рдВрд╢ рджреГрд╢реНрдп рд░ рдкреНрд░рдХрд╛рд░реНрдп рдирд╛рдорд╣рд░реВ рдкреБрди: рдирд╛рдорд╛рдХрд░рдг рдЧрд░рд┐рдПрдХреЛ рдЫред рдкреБрди: рдирд╛рдорд╛рдХрд░рдгрдХреЛ рд╕рд╛рд░ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдЧрд░реНрди рдерд┐рдпреЛред xlog рдорд╛ wal ╨╕ location рдорд╛ lsn рдкреНрд░рдХрд╛рд░реНрдп/рджреГрд╢реНрдп рдирд╛рдорд╣рд░реВ, рдЖрджрд┐рдорд╛ред рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдг, рдкреНрд░рдХрд╛рд░реНрдп pg_xlog_location_diff() рдорд╛ рдкреБрди: рдирд╛рдорд╛рдХрд░рдг рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ pg_wal_lsn_diff()._

рд╣рд╛рдореАрд╕рдБрдЧ рдпрд╣рд╛рдБ рдкрдирд┐ рдзреЗрд░реИ рдЫред рддрд░ рд╣рд╛рдореАрд▓рд╛рдИ рд╕реНрдерд╛рдирд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рд╡рд╕реНрддреБрд╣рд░реВ рдорд╛рддреНрд░ рдЪрд╛рд╣рд┐рдиреНрдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рджреЗрдЦреНрдпреМрдВ рдХрд┐ рд╕рдмреИ рдорд╛рдирд╣рд░реВ рдмрд░рд╛рдмрд░ рдЫрдиреН, рддрдм рдпреЛ рдЖрджрд░реНрд╢ рд╣реЛ рд░ рдкреНрд░рддрд┐рдХреГрддрд┐ рдорд╛рд╕реНрдЯрд░рдХреЛ рдкрдЫрд┐ рд▓рд╛рдЧреНрджреИрдиред

рдпрд╣рд╛рдБ рдпреЛ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╕реНрдерд┐рддрд┐ рд▓реЗрдирджреЗрди рд▓рдЧ рдорд╛ рд╕реНрдерд┐рддрд┐ рд╣реЛред рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рдХреЗрд╣реА рдЧрддрд┐рд╡рд┐рдзрд┐ рднрдПрдорд╛ рдпреЛ рдирд┐рд░рдиреНрддрд░ рдмрдвреНрдЫ: рдШреБрд╕рд╛рдЙрдиреЗ, рдореЗрдЯрд╛рдЙрдиреЗ, рдЗрддреНрдпрд╛рджрд┐ред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

╤Б╨║╨╛╨╗╤М╨║╨╛ ╨╖╨░╨┐╨╕╤Б╨░╨╜╨╛ xlog ╨▓ ╨▒╨░╨╣╤В╨░╤Е
$ select
pg_xlog_location_diff(pg_current_xlog_location(),'0/00000000');
╨╗╨░╨│ ╤А╨╡╨┐╨╗╨╕╨║╨░╤Ж╨╕╨╕ ╨▓ ╨▒╨░╨╣╤В╨░╤Е
$ select
client_addr,
pg_xlog_location_diff(pg_current_xlog_location(), replay_location)
from pg_stat_replication;
╨╗╨░╨│ ╤А╨╡╨┐╨╗╨╕╨║╨░╤Ж╨╕╨╕ ╨▓ ╤Б╨╡╨║╤Г╨╜╨┤╨░╤Е
$ select
extract(epoch from now() - pg_last_xact_replay_timestamp());

рдпрджрд┐ рдпреА рдЪреАрдЬрд╣рд░реВ рдлрд░рдХ рдЫрдиреН рднрдиреЗ, рддреНрдпрд╣рд╛рдБ рдПрдХ рдкреНрд░рдХрд╛рд░рдХреЛ рдврд┐рд▓рд╛рдЗ рдЫред Lag рднрдиреЗрдХреЛ рдорд╛рд╕реНрдЯрд░рдмрд╛рдЯ рдкреНрд░рддрд┐рдХреГрддрд┐рдХреЛ рдврд┐рд▓рд╛рдЗ рд╣реЛ, рдЕрд░реНрдерд╛рддреН рдбрд╛рдЯрд╛ рд╕рд░реНрднрд░рд╣рд░реВ рдмреАрдЪ рдлрд░рдХ рд╣реБрдиреНрдЫред

рдврд┐рд▓рд╛рдЗрдХреЛ рддреАрди рдХрд╛рд░рдгрд╣рд░реВ рдЫрдиреН:

  • рдпреЛ рдбрд┐рд╕реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рд╣реЛ рдЬрд╕рд▓реЗ рдлрд╛рдЗрд▓ рд╕рд┐рдВрдХ рд▓реЗрдЦрд╣рд░реВ рд╣реНрдпрд╛рдиреНрдбрд▓ рдЧрд░реНрди рд╕рдХреНрджреИрдиред
  • рдпреА рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рдЮреНрдЬрд╛рд▓ рддреНрд░реБрдЯрд┐рд╣рд░реВ, рд╡рд╛ рдиреЗрдЯрд╡рд░реНрдХ рдУрднрд░рд▓реЛрдбрд╣рд░реВ рд╣реБрдиреН, рдЬрдм рдбрд╛рдЯрд╛рд╕рдБрдЧ рдкреНрд░рддрд┐рдХреГрддрд┐рдорд╛ рдкреБрдЧреНрди рд╕рдордп рд╣реБрдБрджреИрди рд░ рдпрд╕рд▓реЗ рдпрд╕рд▓рд╛рдИ рдкреБрди: рдЙрддреНрдкрд╛рджрди рдЧрд░реНрди рд╕рдХреНрджреИрдиред
  • рд░ рдкреНрд░реЛрд╕реЗрд╕рд░ред рдкреНрд░реЛрд╕реЗрд╕рд░ рдПрдХ рдзреЗрд░реИ рджреБрд░реНрд▓рдн рдорд╛рдорд▓рд╛ рд╣реЛред рд░ рдореИрд▓реЗ рддреНрдпреЛ рджреБрдИ рд╡рд╛ рддреАрди рдкрдЯрдХ рджреЗрдЦреЗрдХреЛ рдЫреБ, рддрд░ рддреНрдпреЛ рдкрдирд┐ рд╣реБрди рд╕рдХреНрдЫред

рд░ рдпрд╣рд╛рдБ рддреАрди рдкреНрд░рд╢реНрдирд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╣рд╛рдореА рд╣рд╛рдореНрд░реЛ рд▓реЗрдирджреЗрди рд▓рдЧрдорд╛ рдХрддрд┐ рд░реЗрдХрд░реНрдб рдЧрд░рд┐рдПрдХреЛ рдЫ рднрдиреЗрд░ рдЕрдиреБрдорд╛рди рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рдпрд╕реНрддреЛ рдкреНрд░рдХрд╛рд░реНрдп рдЫ pg_xlog_location_diff рд░ рд╣рд╛рдореА рдмрд╛рдЗрдЯреНрд╕ рд░ рд╕реЗрдХреЗрдиреНрдбрдорд╛ рдкреНрд░рддрд┐рдХреГрддрд┐ рдврд┐рд▓рд╛рдЗ рдЕрдиреБрдорд╛рди рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд╣рд╛рдореА рдпрд╕рдХреЛ рд▓рд╛рдЧрд┐ рдпреЛ рджреГрд╢реНрдп (VIEWs) рдмрд╛рдЯ рдорд╛рди рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВред

рдиреЛрдЯ: pg_xlog_location рдХреЛ рд╕рдЯреНрдЯрд╛diff() рдкреНрд░рдХрд╛рд░реНрдп, рддрдкрд╛рдЗрдБ рдШрдЯрд╛рдЙрди рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдЕрд░реНрдХреЛ рд╕реНрдерд╛рдирдмрд╛рдЯ рдПрдХ рд╕реНрдерд╛рди рдШрдЯрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рдЖрд░рд╛рдорджрд╛рдпреАред

рдПрдХ рдврд┐рд▓рд╛рдЗ рд╕рдВрдЧ, рдЬреЛ рд╕реЗрдХреЗрдиреНрдб рдорд╛ рдЫ, рддреНрдпрд╣рд╛рдБ рдПрдХ рдХреНрд╖рдг рдЫред рдпрджрд┐ рдорд╛рд╕реНрдЯрд░рдорд╛ рдХреБрдиреИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЫреИрди рднрдиреЗ, рд▓реЗрдирджреЗрди рддреНрдпрд╣рд╛рдБ 15 рдорд┐рдиреЗрдЯ рдкрд╣рд┐рд▓реЗ рдерд┐рдпреЛ рд░ рддреНрдпрд╣рд╛рдБ рдХреБрдиреИ рдЧрддрд┐рд╡рд┐рдзрд┐ рдЫреИрди, рд░ рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдкреНрд░рддрд┐рдХреГрддрд┐рдорд╛ рдпреЛ рдврд┐рд▓рд╛рдЗ рд╣реЗрд░реНрдЫреМрдВ рднрдиреЗ, рд╣рд╛рдореА 15 рдорд┐рдиреЗрдЯрдХреЛ рдврд┐рд▓рд╛рдЗ рджреЗрдЦреНрдиреЗрдЫреМрдВред рдпреЛ рд╕рдореНрдЭрдирд╛ рд▓рд╛рдпрдХ рдЫред рд░ рддрдкрд╛рдИрдВрд▓реЗ рдпреЛ рдврд┐рд▓реЛ рд╣реЗрд░реНрдиреБрднрдпреЛ рднрдиреЗ рдпрд╕рд▓реЗ рдореВрд░реНрдЦрддрд╛ рдирд┐рдореНрддреНрдпрд╛рдЙрди рд╕рдХреНрдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

pg_stat_all_tables рдЕрд░реНрдХреЛ рдЙрдкрдпреЛрдЧреА рджреГрд╢реНрдп рд╣реЛред рдпрд╕рд▓реЗ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдорд╛ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рджреЗрдЦрд╛рдЙрдБрдЫред рдЬрдм рд╣рд╛рдореАрд╕рдБрдЧ рдбреЗрдЯрд╛рдмреЗрд╕рдорд╛ рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВ рд╣реБрдиреНрдЫрдиреН, рддреНрдпрд╣рд╛рдБ рдХреЗрд╣реА рдЧрддрд┐рд╡рд┐рдзрд┐рд╣рд░реВ рд╣реБрдиреНрдЫрдиреН, рдХреЗрд╣реА рдХрд╛рд░реНрдпрд╣рд░реВ, рд╣рд╛рдореА рдпреЛ рджреГрд╢реНрдпрдмрд╛рдЯ рдпреЛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

select
relname,
pg_size_pretty(pg_relation_size(relname::regclass)) as size,
seq_scan, seq_tup_read,
seq_scan / seq_tup_read as seq_tup_avg
from pg_stat_user_tables
where seq_tup_read > 0 order by 3,4 desc limit 5;

рд╣рд╛рдореАрд▓реЗ рд╣реЗрд░реНрди рд╕рдХреНрдиреЗ рдкрд╣рд┐рд▓реЛ рдХреБрд░рд╛ рдЕрдиреБрдХреНрд░рдорд┐рдХ рддрд╛рд▓рд┐рдХрд╛ рд╕реНрдХреНрдпрд╛рди рд╣реЛред рдпреА рдЦрдгреНрдбрд╣рд░реВ рдкрдЫрд┐рдХреЛ рд╕рдВрдЦреНрдпрд╛ рдЖрдлреИрдВрдорд╛ рдЦрд░рд╛рдм рдЫреИрди рд░ рд╣рд╛рдореАрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдХреЗрд╣рд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗрд░ рд╕рдВрдХреЗрдд рдЧрд░реНрджреИрдиред

рдпрджреНрдпрдкрд┐, рддреНрдпрд╣рд╛рдБ рджреЛрд╕реНрд░реЛ рдореЗрдЯреНрд░рд┐рдХ рдЫ - seq_tup_readред рдпреЛ рдХреНрд░рдорд┐рдХ рд╕реНрдХреНрдпрд╛рдирдмрд╛рдЯ рдлрд░реНрдХрд╛рдЗрдПрдХрд╛ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рд╣реЛред рдпрджрд┐ рдФрд╕рдд рд╕рдВрдЦреНрдпрд╛ 1, 000, 10, 000 рднрдиреНрджрд╛ рдмрдврд┐ рдЫ рднрдиреЗ, рдпреЛ рдкрд╣рд┐рд▓реЗ рдиреИ рдПрдХ рд╕реВрдЪрдХ рд╣реЛ рдХрд┐ рддрдкрд╛рдЗрдБрд▓реЗ рдХрддреИ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рд╣реБрди рд╕рдХреНрдЫ рддрд╛рдХрд┐ рдкрд╣реБрдБрдЪрд╣рд░реВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рд╣реЛрд╕реН, рд╡рд╛ рдпрд╕реНрддреЛ рдХреНрд░рдорд┐рдХ рд╕реНрдХреНрдпрд╛рдирд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХреНрд╡реЗрд░реАрд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рд╕рдореНрднрд╡ рдЫред рдпрд╕реНрддреЛ рд╣реБрджреИрдиред

рдПрдЙрдЯрд╛ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг - рдареВрд▓реЛ рдЕрдлрд╕реЗрдЯ рд░ рд▓рд┐рдорд┐рдЯ рднрдПрдХреЛ рдЕрдиреБрд░реЛрдзрдХреЛ рд▓рд╛рдпрдХ рдЫ рднрдиреМрдВред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрд╛рд▓рд┐рдХрд╛рдорд╛ 100 рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рд╕реНрдХреНрдпрд╛рди рдЧрд░рд┐рдиреНрдЫ рд░ рддреНрдпрд╕рдкрдЫрд┐ 000 рдЖрд╡рд╢реНрдпрдХ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рд▓рд┐рдЗрдиреНрдЫ, рд░ рдЕрдШрд┐рд▓реНрд▓реЛ рд╕реНрдХреНрдпрд╛рди рдЧрд░рд┐рдПрдХрд╛ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рдЦрд╛рд░реЗрдЬ рдЧрд░рд┐рдиреНрдЫред рдпреЛ рдкрдирд┐ рдирд░рд╛рдореНрд░реЛ рдорд╛рдорд▓рд╛ рд╣реЛред рд░ рддреНрдпрд╕реНрддрд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВрд▓рд╛рдИ рдЕрдиреБрдХреВрд▓рд┐рдд рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд░ рдпрд╣рд╛рдБ рдпрд╕реНрддреЛ рд╕рд░рд▓ SQL рдХреНрд╡реЗрд░реА рдЫ рдЬрд╕рдорд╛ рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рдкреНрд░рд╛рдкреНрдд рд╕рдВрдЦреНрдпрд╛рд╣рд░реВ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

select
relname,
pg_size_pretty(pg_total_relation_size(relname::regclass)) as
full_size,
pg_size_pretty(pg_relation_size(relname::regclass)) as
table_size,
pg_size_pretty(pg_total_relation_size(relname::regclass) -
pg_relation_size(relname::regclass)) as index_size
from pg_stat_user_tables
order by pg_total_relation_size(relname::regclass) desc limit 10;

рддрд╛рд▓рд┐рдХрд╛ рдЖрдХрд╛рд░рд╣рд░реВ рдкрдирд┐ рдпреЛ рддрд╛рд▓рд┐рдХрд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд░ рдердк рдкреНрд░рдХрд╛рд░реНрдпрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ pg_total_relation_size(), pg_relation_size().

рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛, рддреНрдпрд╣рд╛рдБ рдореЗрдЯрд╛рдХрдорд╛рдиреНрдбрд╣рд░реВ рдЫрдиреН dt ╨╕ di, рдЬреБрди рддрдкрд╛рдЗрдБ PSQL рдорд╛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рддрд╛рд▓рд┐рдХрд╛ рд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЖрдХрд╛рд░рд╣рд░реВ рдкрдирд┐ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

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

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдЧрддрд┐рд╡рд┐рдзрд┐ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реНред рд░реЗрдХрд░реНрдб рднрдиреЗрдХреЛ рдХреЗ рд╣реЛ? рд╕рдЮреНрдЪрд╛рд▓рди рд╣реЗрд░реМрдВ UPDATE - рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрдиреЗ рдХрд╛рд░реНрдпред рд╡рд╛рд╕реНрддрд╡рдорд╛, рдЕрдкрдбреЗрдЯ рджреБрдИ рдЕрдкрд░реЗрд╢рдирд╣рд░реВ (рд╡рд╛ рдЕрдЭ рдмрдвреА) рд╣реЛред рдпрд╕рд▓реЗ рдирдпрд╛рдБ рдкрдЩреНрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдг рдШреБрд╕рд╛рдЙрдБрджреИ рд░ рдкреБрд░рд╛рдиреЛ рдкрдЩреНрдХреНрддрд┐ рд╕рдВрд╕реНрдХрд░рдгрд▓рд╛рдИ рдЕрдкреНрд░рдЪрд▓рд┐рдд рднрдиреА рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрдБрджреИрдЫред рдкрдЫрд┐, autovacuum рдЖрдЙрдиреЗрдЫ рд░ рд░реЗрдЦрд╛рд╣рд░реВрдХреЛ рдпреА рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рд╕рдлрд╛ рдЧрд░реНрдиреЗрдЫ, рдпреЛ рдард╛рдЙрдБрд▓рд╛рдИ рдкреБрди: рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрд▓рдмреНрдз рднрдиреА рдЪрд┐рдиреНрд╣ рд▓рдЧрд╛рдЙрдиреБрд╣реЛрд╕реНред

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

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

select
s.relname,
pg_size_pretty(pg_relation_size(relid)),
coalesce(n_tup_ins,0) + 2 * coalesce(n_tup_upd,0) -
coalesce(n_tup_hot_upd,0) + coalesce(n_tup_del,0) AS total_writes,
(coalesce(n_tup_hot_upd,0)::float * 100 / (case when n_tup_upd > 0
then n_tup_upd else 1 end)::float)::numeric(10,2) AS hot_rate,
(select v[1] FROM regexp_matches(reloptions::text,E'fillfactor=(\d+)') as
r(v) limit 1) AS fillfactor
from pg_stat_all_tables s
join pg_class c ON c.oid=relid
order by total_writes desc limit 50;

рд░ рдпрд╕рдХреЛ рдбрд┐рдЬрд╛рдЗрдирдХреЛ рдХрд╛рд░рдг, UPDATE рдПрдХ рд╣реЗрд╡реАрд╡реЗрдЯ рдЕрдкрд░реЗрд╢рди рд╣реЛред рддрд░ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрди рд╕рдХрд┐рдиреНрдЫред рдЦрд╛рдиреБрд╣реЛрд╕реН hot updatesред рддрд┐рдиреАрд╣рд░реВ PostgreSQL рд╕рдВрд╕реНрдХрд░рдг 8.3 рдорд╛ рджреЗрдЦрд╛ рдкрд░реНтАНрдпреЛред рд░ рдпреЛ рдХреЗ рд╣реЛ? рдпреЛ рдПрдХ рд╣рд▓реНрдХрд╛ рдЕрдкрдбреЗрдЯ рд╣реЛ рдЬрд╕рд▓реЗ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВрд▓рд╛рдИ рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рджрд┐рдБрджреИрдиред рддреНрдпреЛ рд╣реЛ, рд╣рд╛рдореАрд▓реЗ рд░реЗрдХрд░реНрдб рдЕрдкрдбреЗрдЯ рдЧрд░реНтАНрдпреМрдВ, рддрд░ рдкреГрд╖реНрдардорд╛ рд░рд╣реЗрдХреЛ рд░реЗрдХрд░реНрдб рдорд╛рддреНрд░ (рдЬреБрди рддрд╛рд▓рд┐рдХрд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ) рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рд░ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВрд▓реЗ рдЕрдЭреИ рдкрдирд┐ рдкреГрд╖реНрдардорд╛ рдЙрд╣реА рд░реЗрдХрд░реНрдбрд▓рд╛рдИ рд╕рдВрдХреЗрдд рдЧрд░реНрджрдЫред рдХрд╛рдордХреЛ рдпрд╕реНрддреЛ рдЪрд╛рдЦрд▓рд╛рдЧреНрджреЛ рддрд░реНрдХ рдЫ, рдЬрдм рд╢реВрдиреНрдпрддрд╛ рдЖрдЙрдБрдЫ, рддрдм рддреНрдпрд╕рдорд╛ рдпреА рдЪреЗрдирд╣рд░реВ рд╣реБрдиреНрдЫрдиреН hot рдкреБрди: рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджрдЫ рд░ рд╕рдмреИ рдЪреАрдЬрд╣рд░реВ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдирдЧрд░реА рдХрд╛рдо рдЧрд░реНрди рдЬрд╛рд░реА рд░рд╛рдЦреНрдЫрдиреН, рд░ рд╕рдмреИ рдХреБрд░рд╛ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рдХрдо рдЕрдкрд╢рд┐рд╖реНрдЯрдХреЛ рд╕рд╛рде рд╣реБрдиреНрдЫред

рд░ рдЬрдм рддрдкрд╛рдИрдВрд╕рдБрдЧ рдЫ n_tup_hot_upd рдареВрд▓реЛ, рдпреЛ рдзреЗрд░реИ рд░рд╛рдореНрд░реЛ рдЫред рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рд╣реЛ рдХрд┐ рд╣рд▓реНрдХрд╛ рдЕрдкрдбреЗрдЯрд╣рд░реВ рдкреНрд░рдмрд▓ рд╣реБрдиреНрдЫрдиреН рд░ рдпреЛ рд╣рд╛рдореНрд░реЛ рд▓рд╛рдЧрд┐ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд╣рд┐рд╕рд╛рдмрд▓реЗ рд╕рд╕реНрддреЛ рдЫ рд░ рд╕рдмреИ рдХреБрд░рд╛ рдареАрдХ рдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

ALTER TABLE table_name SET (fillfactor = 70);

рднреЛрд▓реНрдпреБрдо рдХрд╕рд░реА рдмрдврд╛рдЙрдиреЗ hot updateov? рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ fillfactorред INSERTs рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдкреГрд╖реНрда рднрд░реНрджрд╛ рдпрд╕рд▓реЗ рдЖрд░рдХреНрд╖рд┐рдд рдЦрд╛рд▓реА рдард╛рдЙрдБрдХреЛ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдЫред рдЬрдм рд╕рдореНрдорд┐рд▓рд┐рддрд╣рд░реВ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдЬрд╛рдиреНрдЫрдиреН, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдкреГрд╖реНрда рднрд░реНрдЫрдиреН, рдпрд╕рдорд╛ рдЦрд╛рд▓реА рдард╛рдЙрдБ рдирдЫреЛрдбреНрдиреБрд╣реЛрд╕реНред рддреНрдпрд╕рдкрдЫрд┐ рдирдпрд╛рдБ рдкреГрд╖реНрда рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдЧрд░рд┐рдПрдХреЛ рдЫред рдбрд╛рдЯрд╛ рдлреЗрд░рд┐ рднрд░рд┐рдПрдХреЛ рдЫред рд░ рдпреЛ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛ, fillfactor = 100%ред

рд╣рд╛рдореА рдлрд┐рд▓рдлреНрдпрд╛рдХреНрдЯрд░ 70% рдорд╛ рд╕реЗрдЯ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рддреНрдпреЛ рд╣реЛ, рд╕рдореНрдорд┐рд▓рд┐рдд рд╕рдВрдЧ, рдирдпрд╛рдБ рдкреГрд╖реНрда рдЖрд╡рдВрдЯрд┐рдд рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рддрд░ рдкреГрд╖реНрдардХреЛ 70% рдорд╛рддреНрд░ рднрд░рд┐рдПрдХреЛ рдерд┐рдпреЛред рд░ рд╣рд╛рдореАрд╕рдБрдЧ 30% рд░рд┐рдЬрд░реНрдн рдмрд╛рдБрдХреА рдЫред рдЬрдм рддрдкрд╛рдЗрдБ рдПрдХ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, рдпреЛ рд╕рдореНрднрд╡рддрдГ рдЙрд╣реА рдкреГрд╖реНрдардорд╛ рд╣реБрдиреЗрдЫ, рд░ рдкрдЩреНрдХреНрддрд┐рдХреЛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рдЙрд╣реА рдкреГрд╖реНрдардорд╛ рдлрд┐рдЯ рд╣реБрдиреЗрдЫред рд░ hot_update рдЧрд░рд┐рдиреЗрдЫред рдпрд╕рд▓реЗ рдЯреЗрдмреБрд▓рдорд╛ рд▓реЗрдЦреНрди рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдБрдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

select c.relname,
current_setting('autovacuum_vacuum_threshold') as av_base_thresh,
current_setting('autovacuum_vacuum_scale_factor') as av_scale_factor,
(current_setting('autovacuum_vacuum_threshold')::int +
(current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples))
as av_thresh,
s.n_dead_tup
from pg_stat_user_tables s join pg_class c ON s.relname = c.relname
where s.n_dead_tup > (current_setting('autovacuum_vacuum_threshold')::int
+ (current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples));

Autovacuum рд▓рд╛рдоред Autovacuum рдпрд╕реНрддреЛ рдЙрдкрдкреНрд░рдгрд╛рд▓реА рд╣реЛ рдЬрд╕рдХреЛ рд▓рд╛рдЧрд┐ PostgreSQL рдорд╛ рдзреЗрд░реИ рдереЛрд░реИ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдЫрдиреНред рд╣рд╛рдореА pg_stat_activity рдХреЛ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдорд╛рддреНрд░ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рдЕрд╣рд┐рд▓реЗ рдХрддрд┐рд╡рдЯрд╛ рднреНрдпрд╛рдХреБрдорд╣рд░реВ рдЫрдиреНред рддрд░, рдпреЛ рдЪрд╛рд▓рдорд╛ рд▓рд╛рдордорд╛ рдХрддрд┐ рдЯреЗрдмрд▓рд╣рд░реВ рдЫрдиреН рднрдиреЗрд░ рдмреБрдЭреНрди рдзреЗрд░реИ рдЧрд╛рд╣реНрд░реЛ рдЫред

рдиреЛрдЯ: _ Postgres 10 рджреЗрдЦрд┐, рднреНрдпрд╛рдХреБрдо рднреНрдпрд╛рдХреБрдо рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрдиреЗ рд╕реНрдерд┐рддрд┐рдорд╛ рдзреЗрд░реИ рд╕реБрдзрд╛рд░ рднрдПрдХреЛ рдЫ - pg_stat_progress рджреГрд╢реНрдп рджреЗрдЦрд╛ рдкрд░реНтАНрдпреЛрд╡реИрдХреНрдпреВрдо, рдЬрд╕рд▓реЗ рдЕрдЯреЛрднреНрдпрд╛рдХреНрдпреВрдо рдирд┐рдЧрд░рд╛рдиреАрдХреЛ рдореБрджреНрджрд╛рд▓рд╛рдИ рдзреЗрд░реИ рд╕рд░рд▓ рдмрдирд╛рдЙрдБрдЫред

рд╣рд╛рдореА рдпреЛ рд╕рд░рд▓ рдкреНрд░рд╢реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд░ рд╣рд╛рдореА рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ рдХрд┐ рднреНрдпрд╛рдХреБрдо рдХрд╣рд┐рд▓реЗ рдмрдирд╛рдЙрдиреБрдкрд░реНрдЫред рддрд░, рднреНрдпрд╛рдХреБрдо рдХрд╕рд░реА рд░ рдХрд╣рд┐рд▓реЗ рд╕реБрд░реБ рдЧрд░реНрдиреБрдкрд░реНрдЫ? рдпреА рд╕реНрдЯреНрд░рд┐рдЩрдХрд╛ рдкреБрд░рд╛рдирд╛ рд╕рдВрд╕реНрдХрд░рдгрд╣рд░реВ рд╣реБрдиреН рдЬреБрди рдореИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдХреБрд░рд╛ рдЧрд░реЗрдХреЛ рдерд┐рдПрдБред рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рднрдПрдХреЛ рдЫ, рдкрдЩреНрдХреНрддрд┐рдХреЛ рдирдпрд╛рдБ рд╕рдВрд╕реНрдХрд░рдг рд╕рдореНрдорд┐рд▓рд┐рдд рдЧрд░рд┐рдПрдХреЛ рдЫред рд╕реНрдЯреНрд░рд┐рдЩрдХреЛ рдЕрдкреНрд░рдЪрд▓рд┐рдд рд╕рдВрд╕реНрдХрд░рдг рджреЗрдЦрд╛ рдкрд░реЗрдХреЛ рдЫред рддрд╛рд▓рд┐рдХрд╛ pg_stat_user_tables рдпрд╕реНрддреЛ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдЫ n_dead_tupред рдпрд╕рд▓реЗ "рдореГрдд" рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рджреЗрдЦрд╛рдЙрдБрдЫред рд░ рдЪрд╛рдБрдбреИ рдореГрдд рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рднрдиреНрджрд╛ рдмрдврд┐ рднрдПрдХреЛ рдЫ, рдПрдХ autovacuum рдЯреЗрдмрд▓рдорд╛ рдЖрдЙрдиреЗрдЫред

рд░ рдпреЛ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдХрд╕рд░реА рдЧрдгрдирд╛ рдЧрд░рд┐рдиреНрдЫ? рдпреЛ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ рдХреБрд▓ рд╕рдВрдЦреНрдпрд╛рдХреЛ рдзреЗрд░реИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд░рддрд┐рд╢рдд рд╣реЛред рддреНрдпрд╣рд╛рдБ рдПрдХ рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░ рдЫ autovacuum_vacuum_scale_factorред рдпрд╕рд▓реЗ рдкреНрд░рддрд┐рд╢рдд рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрджрдЫред рдорд╛рдиреМрдВ резреж% + рддреНрдпрд╣рд╛рдБ релреж рд░реЗрдЦрд╛рд╣рд░реВрдХреЛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЖрдзрд╛рд░ рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдЫред рдЕрдирд┐ рдХреЗ рд╣реБрдиреНрдЫ? рдЬрдм рд╣рд╛рдореАрд╕рдБрдЧ рддрд╛рд▓рд┐рдХрд╛рдорд╛ рд╕рдмреИ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдХреЛ "10% + 50" рднрдиреНрджрд╛ рдзреЗрд░реИ рдореГрдд рдкрдЩреНрдХреНрддрд┐рд╣рд░реВ рд╣реБрдиреНрдЫрдиреН, рд╣рд╛рдореА рддрд╛рд▓рд┐рдХрд╛рд▓рд╛рдИ autovacuum рдорд╛ рд░рд╛рдЦреНрдЫреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

select c.relname,
current_setting('autovacuum_vacuum_threshold') as av_base_thresh,
current_setting('autovacuum_vacuum_scale_factor') as av_scale_factor,
(current_setting('autovacuum_vacuum_threshold')::int +
(current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples))
as av_thresh,
s.n_dead_tup
from pg_stat_user_tables s join pg_class c ON s.relname = c.relname
where s.n_dead_tup > (current_setting('autovacuum_vacuum_threshold')::int
+ (current_setting('autovacuum_vacuum_scale_factor')::float * c.reltuples));

рдпрджреНрдпрдкрд┐, рддреНрдпрд╣рд╛рдБ рдПрдЙрдЯрд╛ рдмрд┐рдиреНрджреБ рдЫред рдкреНрдпрд╛рд░рд╛рдорд┐рдЯрд░рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЖрдзрд╛рд░рднреВрдд рдереНрд░реЗрд╕рд╣реЛрд▓реНрдбрд╣рд░реВ av_base_thresh ╨╕ av_scale_factor рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдкрдорд╛ рдирд┐рдпреБрдХреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рд░, рддрджрдиреБрд╕рд╛рд░, рдереНрд░реЗрд╕рд╣реЛрд▓реНрдб рдЧреНрд▓реЛрдмрд▓ рд╣реБрдиреЗрдЫреИрди, рддрд░ рддрд╛рд▓рд┐рдХрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╡реНрдпрдХреНрддрд┐рдЧрддред рддреНрдпрд╕рдХрд╛рд░рдг, рдЧрдгрдирд╛ рдЧрд░реНрди, рддреНрдпрд╣рд╛рдБ рддрдкрд╛рдИрдВрд▓реЗ рдЪрд╛рд▓ рд░ рдЪрд╛рд▓рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдЗрдЪреНрдЫреБрдХ рд╣реБрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ Avito рдмрд╛рдЯ рд╣рд╛рдореНрд░рд╛ рд╕рд╣рдХрд░реНрдореАрд╣рд░реВрдХреЛ рдЕрдиреБрднрд╡ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ (рд╕реНрд▓рд╛рдЗрдбрдорд╛ рд▓рд┐рдЩреНрдХ рдЕрдорд╛рдиреНрдп рдЫ рд░ рдкрд╛рдардорд╛ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░рд┐рдПрдХреЛ рдЫ)ред

рд▓рд╛рдЧрд┐ рд▓реЗрдЦреЗ munin рдкреНрд▓рдЧрдЗрдирдЬрд╕рд▓реЗ рдпреА рдХреБрд░рд╛рд╣рд░реВрд▓рд╛рдИ рдзреНрдпрд╛рдирдорд╛ рд░рд╛рдЦреНрдЫред рджреБрдИрд╡рдЯрд╛ рдкрд╛рдирд╛рд╣рд░реВрдорд╛ рдЦреБрдЯреНрдЯрд╛рдХреЛ рдХрдкрдбрд╛ рдЫред рддрд░ рдЙрд╣рд╛рдБрд▓реЗ рд╕рд╣реА рд░реВрдкрдорд╛ рд╡рд┐рдЪрд╛рд░ рдЧрд░реНрдиреБрд╣реБрдиреНрдЫ рд░ рдзреЗрд░реИ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд░реВрдкрдорд╛ рд╣рд╛рдореАрд▓рд╛рдИ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ рдЬрд╣рд╛рдБ рд╣рд╛рдореАрд▓рд╛рдИ рдЯреЗрдмрд▓рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдзреЗрд░реИ рдЦрд╛рд▓реА рдард╛рдЙрдБ рдЪрд╛рд╣рд┐рдиреНрдЫ, рдЬрд╣рд╛рдБ рдереЛрд░реИ рдЫред

рд╣рд╛рдореА рдпрд╕рдХреЛ рдмрд╛рд░реЗрдорд╛ рдХреЗ рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ? рдпрджрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рд▓рд╛рдореЛ рд▓рд╛рдо рдЫ рд░ рдЕрдЯреЛрднреНрдпрд╛рдХреБрдорд▓реЗ рд╕рд╛рдордирд╛ рдЧрд░реНрди рд╕рдХреНрджреИрди рднрдиреЗ, рд╣рд╛рдореА рднреНрдпрд╛рдХреБрдо рдХрд╛рд░реНрдпрдХрд░реНрддрд╛рд╣рд░реВрдХреЛ рд╕рдВрдЦреНрдпрд╛ рдмрдврд╛рдЙрди рд╕рдХреНрдЫреМрдВ, рд╡рд╛ рдХреЗрд╡рд▓ рднреНрдпрд╛рдХреБрдорд▓рд╛рдИ рдердк рдЖрдХреНрд░рд╛рдордХ рдмрдирд╛рдЙрди рд╕рдХреНрдЫреМрдВредрддрд╛рдХрд┐ рдпреЛ рдкрд╣рд┐рд▓реЗ рдЯреНрд░рд┐рдЧрд░ рд╣реБрдиреНрдЫ, рдЯреЗрдмрд▓рд▓рд╛рдИ рд╕рд╛рдиреЛ рдЯреБрдХреНрд░рд╛рдорд╛ рдкреНрд░рд╢реЛрдзрди рдЧрд░реНрджрдЫред рд░ рдпрд╕рд░реА рд▓рд╛рдЗрди рдХрдо рд╣реБрдиреЗрдЫред - рдпрд╣рд╛рдБ рдореБрдЦреНрдп рдХреБрд░рд╛ рдбрд┐рд╕реНрдХ рдорд╛ рд▓реЛрдб рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдЫ, рдХрд┐рдирднрдиреЗред рднреНрдпрд╛рдХреБрдо рдХреБрд░рд╛ рдирд┐: рд╢реБрд▓реНрдХ рдЫреИрди, рдпрджреНрдпрдкрд┐ SSD / NVMe рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдЖрдЧрдордирдХреЛ рд╕рд╛рде, рд╕рдорд╕реНрдпрд╛ рдХрдо рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рднрдПрдХреЛ рдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

pg_stat_all_indexes рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдорд╛ рддрдереНрдпрд╛рдЩреНрдХ рд╣реЛред рдЙрдиреА рдареВрд▓реА рд╣реЛрдЗрдирдиреНред рд░ рд╣рд╛рдореА рдпрд╕рдмрд╛рдЯ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рдХреЛ рдкреНрд░рдпреЛрдЧрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд░ рдЙрджрд╛рд╣рд░рдг рдХреЛ рд▓рд╛рдЧреА, рд╣рд╛рдореА рдХреБрди рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдЫ рднрдиреЗрд░ рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

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

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

рджреБрдИ рд▓рд┐рдЩреНрдХрд╣рд░реВ:

https://github.com/dataegret/pg-utils/blob/master/sql/low_used_indexes.sql

http://www.databasesoup.com/2014/05/new-finding-unused-indexes-query.html

рдпреА рдЕрдкреНрд░рдпреБрдХреНрдд рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рдХрд╕рд░реА рд╣реЗрд░реНрдиреЗ рднрдиреЗрд░ рдердк рдЙрдиреНрдирдд рдХреНрд╡реЗрд░реА рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ рд╣реБрдиреНред

рджреЛрд╕реНрд░реЛ рд▓рд┐рдЩреНрдХ рдПрдХ рдмрд░реБ рд░реЛрдЪрдХ рдкреНрд░рд╢реНрди рд╣реЛред рддреНрдпрд╣рд╛рдБ рдПрдХ рдзреЗрд░реИ рдЧреИрд░-рддреБрдЪреНрдЫ рддрд░реНрдХ рдЫред рдо рдпрд╕рд▓рд╛рдИ рд╕рдореАрдХреНрд╖рд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд┐рдлрд╛рд░рд┐рд╕ рдЧрд░реНрджрдЫреБред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рдЕрд░реВ рдХреЗ рд╕рдВрдХреНрд╖реЗрдк рдЧрд░реНрдиреБрдкрд░реНрдЫ?

  • рдкреНрд░рдпреЛрдЧ рдирдЧрд░рд┐рдПрдХрд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рдЦрд░рд╛рдм рдЫрдиреНред

  • рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдард╛рдЙрдБ рд▓рд┐рдиреНрдЫрдиреНред

  • рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдХрд╛рд░реНрдпрд╣рд░реВ рд╕реБрд╕реНрдд рдЧрд░реНрдиреБрд╣реЛрд╕реНред

  • рд╡реИрдХреНрдпреВрдордХреЛ рд▓рд╛рдЧрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рдоред

рдпрджрд┐ рд╣рд╛рдореАрд▓реЗ рдкреНрд░рдпреЛрдЧ рдирдЧрд░рд┐рдПрдХрд╛ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛рд╣рд░реВ рд╣рдЯрд╛рдпреМрдВ рднрдиреЗ, рд╣рд╛рдореА рдХреЗрд╡рд▓ рдбрд╛рдЯрд╛рдмреЗрд╕рд▓рд╛рдИ рдЕрдЭ рд░рд╛рдореНрд░реЛ рдмрдирд╛рдЙрдиреЗрдЫреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдЕрд░реНрдХреЛ рджреГрд╢реНрдп рд╣реЛ pg_stat_activityред рдпреЛ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХреЛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдЫ ps, PostgreSQL рдорд╛ рдорд╛рддреНрд░ред рдпрджрд┐ ps'рдУрдо рддрдкрд╛рдИрд▓реЗ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдордорд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рд╣реЗрд░реНрдиреБрд╣реБрдиреНрдЫ, рддреНрдпрд╕рдкрдЫрд┐ pg_stat_activity рддрдкрд╛рдИрдВрд▓рд╛рдИ PostgreSQL рднрд┐рддреНрд░рдХреЛ рдЧрддрд┐рд╡рд┐рдзрд┐ рджреЗрдЦрд╛рдЙрдиреЗрдЫред

рд╣рд╛рдореА рддреНрдпрд╣рд╛рдБрдмрд╛рдЯ рдХреЗ рд▓рд┐рди рд╕рдХреНрдЫреМрдВ?

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

select
count(*)*100/(select current_setting('max_connections')::int)
from pg_stat_activity;

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

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

select
client_addr, usename, datname, count(*)
from pg_stat_activity group by 1,2,3 order by 4 desc;

рд╣рд╛рдореА рдпрд╕ рдкреНрд░рдХрд╛рд░рдХреЛ рдХреНрд╡реЗрд░реА рдЪрд▓рд╛рдЙрди рд╕рдХреНрдЫреМрдВ рд░ рдЕрдзрд┐рдХрддрдо рдЬрдбрд╛рди рд╕реАрдорд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЬрдбрд╛рдирд╣рд░реВрдХреЛ рдХреБрд▓ рдкреНрд░рддрд┐рд╢рдд рд╣реЗрд░реНрди рд╕рдХреНрдЫреМрдВ рд░ рд╣рд╛рдореАрд╕рдБрдЧ рд╕рдмреИрднрдиреНрджрд╛ рдмрдвреА рдЬрдбрд╛рдирд╣рд░реВ рдХреЛрд╕рдБрдЧ рдЫрдиреН рднрдиреЗрд░ рд╣реЗрд░реНрди рд╕рдХреНрдЫреМрдВред рд░ рдпреЛ рджрд┐рдЗрдПрдХреЛ рдЕрд╡рд╕реНрдерд╛рдорд╛, рд╣рд╛рдореА рддреНрдпреЛ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рджреЗрдЦреНрдЫреМрдВ cron_role 508 рдЬрдбрд╛рди рдЦреЛрд▓рд┐рдпреЛред рд░ рдЙрд╕рд▓рд╛рдИ рдХреЗрд╣рд┐ рднрдпреЛред рддрдкрд╛рдИрдВрд▓реЗ рдпрд╕рд▓рд╛рдИ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрди рд░ рд╣реЗрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рд░ рдпреЛ рдзреЗрд░реИ рд╕рдореНрднрд╡ рдЫ рдХрд┐ рдпреЛ рдЬрдбрд╛рди рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреЛ рдЕрд╕рд╛рдорд╛рдиреНрдп рд╕рдВрдЦреНрдпрд╛ рд╣реЛред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

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

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

select
client_addr, usename, datname,
clock_timestamp() - xact_start as xact_age,
clock_timestamp() - query_start as query_age,
query
from pg_stat_activity order by xact_start, query_start;

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджрд┐рдиреБрд╣реЛрд╕реН: рдпрд╕реНрддреЛ рдЕрдиреБрд░реЛрдзрдХреЛ рд╕рд╛рде, рд╣рд╛рдореА рд▓рд╛рдореЛ рдЕрдиреБрд░реЛрдз рд░ рд▓реЗрдирджреЗрди рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрди рд╕рдХреНрдЫреМрдВред рд╣рд╛рдореА рдкреНрд░рдХрд╛рд░реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ clock_timestamp() рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрдиред рд╣рд╛рдореАрд▓реЗ рдлреЗрд▓рд╛ рдкрд╛рд░реЗрдХрд╛ рд▓рд╛рдореЛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ, рд╣рд╛рдореА рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рд╕рдореНрдЭрди рд╕рдХреНрдЫреМрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрди рд╕рдХреНрдЫреМрдВ explain, рдпреЛрдЬрдирд╛рд╣рд░реВ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рд░ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╣рд╛рдореА рд╣рд╛рд▓рдХреЛ рд▓рд╛рдореЛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рд╢реВрдЯ рдЧрд░реНрдЫреМрдВ рд░ рд▓рд╛рдЗрдн рдЧрд░реНрдЫреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

select * from pg_stat_activity where state in
('idle in transaction', 'idle in transaction (aborted)';

рдЦрд░рд╛рдм рд▓реЗрдирджреЗрдирд╣рд░реВ рд▓реЗрдирджреЗрдирдорд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░ рд▓реЗрдирджреЗрдирдорд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп (рд░рджреНрдж рдЧрд░рд┐рдПрдХреЛ) рд▓реЗрдирджреЗрдирд╣рд░реВ рдЫрдиреНред

рдпрд╕рдХреЛ рдорддрд▓рдм рдХреЗ рд╣реЛ? рд▓реЗрдирджреЗрдирдХреЛ рдзреЗрд░реИ рд░рд╛рдЬреНрдпрд╣рд░реВ рдЫрдиреНред рд░ рдпреА рдордзреНрдпреЗ рдПрдХ рд░рд╛рдЬреНрдпрд▓реЗ рдХреБрдиреИ рдкрдирд┐ рд╕рдордпрдорд╛ рд▓рд┐рди рд╕рдХреНрдЫред рд░рд╛рдЬреНрдпрд╣рд░реВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЧрд░реНрдиреЗ рдХреНрд╖реЗрддреНрд░ рдЫ state рдпрд╕ рджреГрд╢реНрдпрдорд╛ред рд░ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рд░рд╛рдЬреНрдп рдирд┐рд░реНрдзрд╛рд░рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

select * from pg_stat_activity where state in
('idle in transaction', 'idle in transaction (aborted)';

рд░, рдореИрд▓реЗ рдорд╛рдерд┐ рднрдиреЗрдЭреИрдВ, рдпреА рджреБрдИ рд░рд╛рдЬреНрдпрд╣рд░реВ рд▓реЗрдирджреЗрдирдорд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд░ рд▓реЗрдирджреЗрдирдорд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп (рд░рджреНрдж рдЧрд░рд┐рдПрдХреЛ) рдЦрд░рд╛рдм рд╣реЛред рдпреЛ рдХреЗ рд╣реЛ? рдпреЛ рддрдм рд╣реБрдиреНрдЫ рдЬрдм рдПрдкреНрд▓рд┐рдХреЗрд╕рдирд▓реЗ рд▓реЗрдирджреЗрди рдЦреЛрд▓реНрдпреЛ, рдХреЗрд╣реА рдХрд╛рд░реНрдпрд╣рд░реВ рдЧрд░реНрдпреЛ рд░ рдпрд╕рдХреЛ рд╡реНрдпрд╛рдкрд╛рд░рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЬрд╛рдиреНрдЫред рдХрд╛рд░реЛрдмрд╛рд░ рдЦреБрд▓рд╛ рд░рд╣рдиреНрдЫред рдпреЛ рд╣реНрдпрд╛рдЩреНрдЧ рд╣реБрдиреНрдЫ, рдпрд╕рдорд╛ рдХреЗрд╣рд┐ рд╣реБрдБрджреИрди, рдпрд╕рд▓реЗ рдЬрдбрд╛рди рд▓рд┐рдиреНрдЫ, рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░рд┐рдПрдХрд╛ рдкрдЩреНрдХреНрддрд┐рд╣рд░реВрдорд╛ рд▓рдХ рдЧрд░реНрджрдЫ рд░ рд╕рдореНрднрд╛рд╡рд┐рдд рд░реВрдкрдорд╛ рдЕрдЭреИ рдкрдирд┐ рдЕрдиреНрдп рддрд╛рд▓рд┐рдХрд╛рд╣рд░реВрдХреЛ рдмреНрд▓реЛрдЯ рдмрдврд╛рдЙрдБрдЫ, рдкреЛрд╕реНрдЯрд░реНрдЬреЗрд╕ рд▓реЗрдирджреЗрди рдЗрдиреНрдЬрд┐рдирдХреЛ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛рдХреЛ рдХрд╛рд░рдгред рд░ рддреНрдпрд╕реНрддрд╛ рд▓реЗрдирджреЗрдирд╣рд░реВрд▓рд╛рдИ рдкрдирд┐ рдЧреЛрд▓реА рд╣рд╛рдиреНрдиреБ рдкрд░реНрдЫ, рдХрд┐рдирдХрд┐ рддрд┐рдиреАрд╣рд░реВ рдХреБрдиреИ рдкрдирд┐ рдЕрд╡рд╕реНрдерд╛рдорд╛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдкрдорд╛ рд╣рд╛рдирд┐рдХрд╛рд░рдХ рдЫрдиреНред

рдпрджрд┐ рддрдкрд╛рдЗрдБ рддрдкрд╛рдЗрдБрдХреЛ рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рддреА рдордзреНрдпреЗ 5-10-20 рднрдиреНрджрд╛ рдмрдвреА рджреЗрдЦреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдЪрд┐рдиреНрддрд┐рдд рд╣реБрди рдЖрд╡рд╢реНрдпрдХ рдЫ рд░ рддрд┐рдиреАрд╣рд░реВрд╕рдБрдЧ рдХреЗрд╣рд┐ рдЧрд░реНрди рд╕реБрд░реБ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рдпрд╣рд╛рдБ рд╣рд╛рдореА рдЧрдгрдирд╛ рд╕рдордпрдХреЛ рд▓рд╛рдЧрд┐ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ clock_timestamp()ред рд╣рд╛рдореА рд▓реЗрдирджреЗрди рд╢реВрдЯ рдЧрд░реНрдЫреМрдВ, рд╣рд╛рдореА рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрдЫреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдореИрд▓реЗ рдорд╛рдерд┐ рднрдиреЗрдЭреИрдВ, рд▓рдХрд╣рд░реВ рдЬрдм рджреБрдИ рд╡рд╛ рдмрдвреА рд▓реЗрдирджреЗрдирд╣рд░реВ рдПрдХ рд╡рд╛ рд╕реНрд░реЛрддрд╣рд░реВрдХреЛ рд╕рдореВрд╣рдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рддрд┐рд╕реНрдкрд░реНрдзрд╛ рдЧрд░реНрдЫрдиреНред рдпрд╕рдХрд╛ рд▓рд╛рдЧрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рдлрд┐рд▓реНрдб рдЫ waiting рдмреБрд▓рд┐рдпрди рдореВрд▓реНрдп рд╕рдВрдЧ true рд╡рд╛ false.

рд╕рд╛рдБрдЪреЛ - рдпрд╕рдХреЛ рдорддрд▓рдм рдпреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░реНрдЦрд┐рд░рд╣реЗрдХреЛ рдЫ, рдХреЗрд╣рд┐ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдЬрдм рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд░реНрдЦрд┐рд░рд╣реЗрдХреЛ рдЫ, рддрдм рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реБрд░реБ рдЧрд░реНрдиреЗ рдЧреНрд░рд╛рд╣рдХ рдкрдирд┐ рдкрд░реНрдЦрд┐рд░рд╣реЗрдХреЛ рдЫред рдмреНрд░рд╛рдЙрдЬрд░рдорд╛ рдЧреНрд░рд╛рд╣рдХ рдмрд╕реНрдЫ рд░ рдкрд░реНрдЦрдиреНрдЫред

рдЪреЗрддрд╛рд╡рдиреА: _ Postgres 9.6 рдмрд╛рдЯ рд╕реБрд░реБ рдЧрд░реНрджреИ, рдХреНрд╖реЗрддреНрд░ waiting рд╣рдЯрд╛рдЗрдпреЛ рд░ рджреБрдИ рдердк рдЬрд╛рдирдХрд╛рд░реАрдореВрд▓рдХ рдХреНрд╖реЗрддреНрд░рд╣рд░реБ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд wait_event_type ╨╕ wait_event._

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

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

рд░ рдПрдХ рдЪрд░рдо, рддрд░ рд╕рдореНрднрд╛рд╡рд┐рдд рдШрд╛рддрдХ рдорд╛рдорд▓рд╛ рд╣реЛрдЗрди рдЧрддрд┐рд░реЛрдз рдХреЛ рдШрдЯрдирд╛ред рджреБрдИ рд▓реЗрдирджреЗрдирд╣рд░реВрд▓реЗ рджреБрдИ рд╕реНрд░реЛрддрд╣рд░реВ рдЕрджреНрдпрд╛рд╡рдзрд┐рдХ рдЧрд░реЗрдХрд╛ рдЫрдиреН, рддреНрдпрд╕рдкрдЫрд┐ рддрд┐рдиреАрд╣рд░реВрд▓реЗ рддрд┐рдиреАрд╣рд░реВрд▓рд╛рдИ рдлреЗрд░рд┐ рдкрд╣реБрдБрдЪ рдЧрд░реНрдЫрдиреН, рдкрд╣рд┐рд▓реЗ рдиреИ рд╡рд┐рдкрд░реАрдд рд╕реНрд░реЛрддрд╣рд░реВрдорд╛ред рдпрд╕ рдЕрд╡рд╕реНрдерд╛рдорд╛ PostgreSQL рд▓реЗ рд▓реЗрдирджреЗрди рдЖрдлреИрд▓рд╛рдИ рдмрдиреНрдж рдЧрд░реНрдЫ рд░ рдЕрд░реНрдХреЛрд▓реЗ рдХрд╛рдо рдЬрд╛рд░реА рд░рд╛рдЦреНрди рд╕рдХреНрдЫред рдпреЛ рдЕрдиреНрддрд┐рдо рдЕрд╡рд╕реНрдерд╛ рд╣реЛ рд░ рдЙрд╕рд▓реЗ рдЖрдлреИрд▓рд╛рдИ рдмреБрдЭреНрджреИрдиред рддреНрдпрд╕реИрд▓реЗ, PostgreSQL рдЪрд░рдо рдЙрдкрд╛рдпрд╣рд░реВ рд▓рд┐рди рдмрд╛рдзреНрдп рдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

https://github.com/lesovsky/uber-scripts/blob/master/postgresql/sql/c4_06_show_locked_queries.sql

https://github.com/lesovsky/uber-scripts/blob/master/postgresql/sql/show_locked_queries_95.sql

https://github.com/lesovsky/uber-scripts/blob/master/postgresql/sql/show_locked_queries_96.sql

http://big-elephants.com/2013-09/exploring-query-locks-in-postgres/

рд░ рдпрд╣рд╛рдБ рджреБрдИ рдкреНрд░рд╢реНрдирд╣рд░реВ рдЫрдиреН рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд▓рдХрд╣рд░реВ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд╣рд╛рдореА рджреГрд╢реНрдп рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдЫреМрдВ pg_locks, рдЬрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рднрд╛рд░реА рддрд╛рд▓рд╛рд╣рд░реВ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рд░ рдкрд╣рд┐рд▓реЛ рд▓рд┐рдЩреНрдХ рдЕрдиреБрд░реЛрдз рдкрд╛рда рд╣реЛред рдпреЛ рдзреЗрд░реИ рд▓рд╛рдореЛ рдЫред

рд░ рджреЛрд╕реНрд░реЛ рд▓рд┐рдЩреНрдХ рд▓рдХрд╣рд░реВрдорд╛ рд▓реЗрдЦ рд╣реЛред рдпреЛ рдкрдвреНрди рдЙрдкрдпреЛрдЧреА рдЫ, рдпреЛ рдзреЗрд░реИ рд░реЛрдЪрдХ рдЫред

рддреНрдпрд╕реЛрднрдП рд╣рд╛рдореА рдХреЗ рджреЗрдЦреНрдЫреМрдВ? рд╣рд╛рдореА рджреБрдИрд╡рдЯрд╛ рдЕрдиреБрд░реЛрдзрд╣рд░реВ рджреЗрдЦреНрдЫреМрдВред рд╕рдВрдЧ рд▓реЗрдирджреЗрди ALTER TABLE рдЕрд╡рд░реБрджреНрдз рд▓реЗрдирджреЗрди рд╣реЛред рдпреЛ рд╕реБрд░реБ рднрдпреЛ, рддрд░ рдЕрдиреНрддреНрдп рднрдПрди, рд░ рдпреЛ рд▓реЗрдирджреЗрди рдкреЛрд╕реНрдЯ рдЧрд░реНрдиреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧрд▓реЗ рдХрддреИ рдЕрдиреНрдп рдЪреАрдЬрд╣рд░реВ рдЧрд░рд┐рд░рд╣реЗрдХреЛ рдЫред рд░ рджреЛрд╕реНрд░реЛ рдЕрдиреБрд░реЛрдз рдЕрдкрдбреЗрдЯ рд╣реЛред рдпрд╕рд▓реЗ рдЖрдлреНрдиреЛ рдХрд╛рдо рдЬрд╛рд░реА рд░рд╛рдЦреНрдиреБ рдЕрдШрд┐ рдкрд░рд┐рд╡рд░реНрддрди рддрд╛рд▓рд┐рдХрд╛ рд╕рдорд╛рдкреНрдд рд╣реБрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд░реНрдЦрдиреНрдЫред

рдпрд╕рд░реА рд╣рд╛рдореА рдХрд╕рд▓реЗ рдХрд╕рд▓рд╛рдИ рддрд╛рд▓рд╛рдмрдиреНрджреА рдЧрд░реЗрдХреЛ рдЫ, рдХрд╕рд▓реЗ рдХрд╕рд▓рд╛рдИ рд╕рдорд╛рддреЗрдХреЛ рдЫ рднрдиреЗрд░ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдЫреМрдВ рд░ рд╣рд╛рдореА рдпрд╕рд▓рд╛рдИ рдЕрдЧрд╛рдбрд┐ рдмрдврд╛рдЙрди рд╕рдХреНрдЫреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдЕрд░реНрдХреЛ рдореЛрдбреНрдпреБрд▓ рд╣реЛ pg_stat_statementsред рдореИрд▓реЗ рднрдиреЗ рдЬрд╕реНрддреИ, рдпреЛ рдПрдХ рдореЛрдбреНрдпреБрд▓ рд╣реЛред рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди, рддрдкрд╛рдИрдВрд▓реЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рдирдорд╛ рдпрд╕рдХреЛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓реЛрдб рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ, PostgreSQL рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдореЛрдбреНрдпреБрд▓ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН (рдПрдЙрдЯрд╛ рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде), рд░ рддреНрдпрд╕рдкрдЫрд┐ рд╣рд╛рдореАрд╕рдБрдЧ рдирдпрд╛рдБ рджреГрд╢реНрдп рд╣реБрдиреЗрдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

C╤А╨╡╨┤╨╜╨╡╨╡ ╨▓╤А╨╡╨╝╤П ╨╖╨░╨┐╤А╨╛╤Б╨░ ╨▓ ╨╝╨╕╨╗╨╕╤Б╨╡╨║╤Г╨╜╨┤╨░╤Е
$ select (sum(total_time) / sum(calls))::numeric(6,3)
from pg_stat_statements;

╨б╨░╨╝╤Л╨╡ ╨░╨║╤В╨╕╨▓╨╜╨╛ ╨┐╨╕╤И╤Г╤Й╨╕╨╡ (╨▓ shared_buffers) ╨╖╨░╨┐╤А╨╛╤Б╤Л
$ select query, shared_blks_dirtied
from pg_stat_statements
where shared_blks_dirtied > 0 order by 2 desc;

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

рд╣рд╛рдореА рдбрд╛рдЯрд╛рдмреЗрд╕рдорд╛ рд╕рдмреИрднрдиреНрджрд╛ рд╕рдХреНрд░рд┐рдп рд▓реЗрдЦрди рд▓реЗрдирджреЗрдирд╣рд░реВ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ рдЬрд╕рд▓реЗ рд╕рд╛рдЭрд╛ рдмрдлрд░рд╣рд░реВрдорд╛ рдбрд╛рдЯрд╛ рдкрд░рд┐рд╡рд░реНрддрди рдЧрд░реНрджрдЫред рддреНрдпрд╣рд╛рдБ рдХрд╕рд▓реЗ рдбрд╛рдЯрд╛ рдЕрдкрдбреЗрдЯ рдЧрд░реНрдЫ рд╡рд╛ рдореЗрдЯрд╛рдЙрдБрдЫ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реНред

рд░ рд╣рд╛рдореА рдпреА рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рднрд┐рдиреНрди рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рд╣реЗрд░реНрди рд╕рдХреНрдЫреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

https://github.com/dataegret/pg-utils/blob/master/sql/global_reports/query_stat_total.sql

рд╣рд╛рдореА pg_stat_statements рд░рд┐рдкреЛрд░реНрдЯрд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрди рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рд╣рд╛рдореА рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рджрд┐рдирдорд╛ рдПрдХ рдкрдЯрдХ рд░рд┐рд╕реЗрдЯ рдЧрд░реНрдЫреМрдВред рдпрд╕рд▓рд╛рдИ рдЬрдореНрдорд╛ рдЧрд░реМрдВред рдЕрд░реНрдХреЛ рдкрдЯрдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рд░рд┐рд╕реЗрдЯ рдЧрд░реНрдиреБ рдЕрдШрд┐, рд╣рд╛рдореА рдПрдЙрдЯрд╛ рд░рд┐рдкреЛрд░реНрдЯ рдмрдирд╛рдЙрдБрдЫреМрдВред рдпрд╣рд╛рдБ рд░рд┐рдкреЛрд░реНрдЯрдХреЛ рд▓рд┐рдЩреНрдХ рдЫред рддрдкрд╛рдИрдВ рдпрд╕рд▓рд╛рдИ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рд╣рд╛рдореА рдХреЗ рдЧрд░реНрджреИ рдЫреМ? рд╣рд╛рдореА рд╕рдмреИ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рд╕рдордЧреНрд░ рддрдереНрдпрд╛рдЩреНрдХ рдЧрдгрдирд╛ рдЧрд░реНрдЫреМрдВред рддреНрдпрд╕рдкрдЫрд┐, рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рд╢реНрдирдХреЛ рд▓рд╛рдЧрд┐, рд╣рд╛рдореА рдпрд╕ рд╕рдордЧреНрд░ рддрдереНрдпрд╛рдЩреНрдХрдорд╛ рдпрд╕рдХреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдпреЛрдЧрджрд╛рди рдЧрдгрдирд╛ рдЧрд░реНрдЫреМрдВред

рд░ рд╣рд╛рдореА рдХреЗ рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВ? рд╣рд╛рдореА рдЕрдиреНрдп рд╕рдмреИ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдкреГрд╖реНрдарднреВрдорд┐рдорд╛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕рдмреИ рдЕрдиреБрд░реЛрдзрд╣рд░реВрдХреЛ рдХреБрд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдордп рджреЗрдЦреНрди рд╕рдХреНрдЫреМрдВред рд╣рд╛рдореА рд╕рдордЧреНрд░ рддрд╕реНрд╡реАрд░рдХреЛ рд╕рдореНрдмрдиреНрдзрдорд╛ CPU рд░ I/O рдкреНрд░рдпреЛрдЧ рд╣реЗрд░реНрди рд╕рдХреНрдЫреМрдВред рд░ рдкрд╣рд┐рд▓реЗ рдиреИ рдпреА рдЕрдиреБрд░реЛрдзрд╣рд░реВ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрдиред рд╣рд╛рдореА рдпрд╕ рд░рд┐рдкреЛрд░реНрдЯрдХреЛ рдЖрдзрд╛рд░рдорд╛ рд╢реАрд░реНрд╖ рдкреНрд░рд╢реНрдирд╣рд░реВ рдирд┐рд░реНрдорд╛рдг рдЧрд░реНрджреИрдЫреМрдВ рд░ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрдиреЗ рднрдиреЗрд░ рд╕реЛрдЪреНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкрд╣рд┐рд▓реЗ рдиреИ рдЦрд╛рдирд╛ рдкрд╛рдЙрдБрджреИрдЫреМрдВред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

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

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

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдЕрд░реНрдХреЛ рдпреЛрдЧрджрд╛рди рд╣реЛ pg_buffercacheред рдпрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рд╕рд╛рдЭрд╛ рдмрдлрд░рд╣рд░реВ рдирд┐рд░реАрдХреНрд╖рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ: рдХрд╕рд░реА рдЧрд╣рди рд░реВрдкрдорд╛ рд░ рдХреБрди рдЯреЗрдмрд▓ рдмрдлрд░ рдкреГрд╖реНрдард╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫред рд░ рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕рд╛рдЭрд╛ рдмрдлрд░рд╣рд░реВ рд╣реЗрд░реНрди рд░ рддреНрдпрд╣рд╛рдБ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗрд░ рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рдЕрд░реНрдХреЛ рдореЛрдбреНрдпреБрд▓ рд╣реЛ pgfincoreред рдпрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдорд╛рд░реНрдлрдд рдирд┐рдореНрди-рд╕реНрддрд░рдХреЛ рддрд╛рд▓рд┐рдХрд╛ рд╕рдЮреНрдЪрд╛рд▓рди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ mincore(), рдЕрд░реНрдерд╛рддреН рдпрд╕рд▓реЗ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рд╕рд╛рдЭрд╛ рдмрдлрд░рд╣рд░реВрдорд╛ рддрд╛рд▓рд┐рдХрд╛ рд▓реЛрдб рдЧрд░реНрди рд╡рд╛ рдЕрдирд▓реЛрдб рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред рд░ рдпрд╕рд▓реЗ, рдЕрдиреНрдп рдЪреАрдЬрд╣рд░реВ рдмреАрдЪ, рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдордХреЛ рдкреГрд╖реНрда рдХреНрдпрд╛рд╕ рдирд┐рд░реАрдХреНрд╖рдг рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рддреНрдпреЛ рд╣реЛ, рдкреГрд╖реНрда рдХреНрдпрд╛рд╕рдорд╛ рддрд╛рд▓рд┐рдХрд╛рд▓реЗ рдХрддрд┐ рдУрдЧрдЯреЗрдХреЛ рдЫ, рд╕рд╛рдЭрд╛ рдмрдлрд░рд╣рд░реВрдорд╛, рд░ рдХреЗрд╡рд▓ рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдЯреЗрдмрд▓рдорд╛ рд▓реЛрдб рдореВрд▓реНрдпрд╛рдЩреНрдХрди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫред

рдЕрд░реНрдХреЛ рдореЛрдбреНрдпреБрд▓ рд╣реЛ pg_stat_kcacheред рдпрд╕рд▓реЗ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдкрдирд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫ getrusage()ред рд░ рдЕрдиреБрд░реЛрдз рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реБрдиреБ рдЕрдШрд┐ рд░ рдкрдЫрд┐ рдпрд╕рд▓рд╛рдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрджрдЫред рд░ рдкреНрд░рд╛рдкреНрдд рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛, рдпрд╕рд▓реЗ рд╣рд╛рдореАрд▓рд╛рдИ рд╣рд╛рдореНрд░реЛ рдЕрдиреБрд░реЛрдзрд▓реЗ рдбрд┐рд╕реНрдХ I / O рдорд╛ рдЦрд░реНрдЪ рдЧрд░реЗрдХреЛ рдЕрдиреБрдорд╛рди рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рджрд┐рдиреНрдЫ, рдЕрд░реНрдерд╛рддреН, рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реАрд╕рдБрдЧ рд╕рдЮреНрдЪрд╛рд▓рди рд░ рдкреНрд░реЛрд╕реЗрд╕рд░рдХреЛ рдкреНрд░рдпреЛрдЧрд▓рд╛рдИ рд╣реЗрд░реНрдЫред рдпрджреНрдпрдкрд┐, рдореЛрдбреНрдпреБрд▓ рдЬрд╡рд╛рди рдЫ (рдЦреЗ-рдЦреЗ) рд░ рдпрд╕рдХреЛ рдХрд╛рдордХреЛ рд▓рд╛рдЧрд┐ рдпрд╕рд▓рд╛рдИ PostgreSQL 9.4 рд░ pg_stat_statements рдЪрд╛рд╣рд┐рдиреНрдЫ, рдЬреБрди рдореИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдЙрд▓реНрд▓реЗрдЦ рдЧрд░реЗрдХреЛ рдЫреБред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

  • рддрдереНрдпрд╛рдЩреНрдХ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ рдХреНрд╖рдорддрд╛ рдЙрдкрдпреЛрдЧреА рдЫред рддрдкрд╛рдИрдВрд▓рд╛рдИ рддреЗрд╕реНрд░реЛ рдкрдХреНрд╖ рд╕рдлреНрдЯрд╡реЗрдпрд░рдХреЛ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрд░реНрджреИрдиред рддрдкрд╛рдИрдВ рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рд╣реЗрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдХреЗрд╣рд┐ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ, рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

  • рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдЫ, рдпреЛ рд╕рд╛рджрд╛ SQL рд╣реЛред рддрдкрд╛рдИрдВрд▓реЗ рдЕрдиреБрд░реЛрдз рд╕рдЩреНрдХрд▓рди рдЧрд░реНрдиреБрднрдпреЛ, рдпрд╕рд▓рд╛рдИ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрдиреБрднрдпреЛ, рдкрдард╛рдЙрдиреБрднрдпреЛ, рдпрд╕рд▓рд╛рдИ рд╣реЗрд░реНрдиреБрднрдпреЛред

  • рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрд▓реЗ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рди рдорджреНрджрдд рдЧрд░реНрдЫред рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рдкреНрд░рд╢реНрдирд╣рд░реВ рдЫрдиреН рднрдиреЗ, рддрдкрд╛рдЗрдБ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдлрд░реНрдХрдиреБрд╣реЛрд╕реН - рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН, рдирд┐рд╖реНрдХрд░реНрд╖рд╣рд░реВ рдХреЛрд░реНрдиреБрд╣реЛрд╕реН, рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрдиреБрд╣реЛрд╕реНред

  • рд░ рдкреНрд░рдпреЛрдЧред рдзреЗрд░реИ рдЕрдиреБрд░реЛрдз, рдзреЗрд░реИ рдбрд╛рдЯрд╛ред рддрдкрд╛рдЗрдБ рдЬрд╣рд┐рд▓реЗ рдкрдирд┐ рдХреЗрд╣рд┐ рдЕрд╡рд╕реНрдерд┐рдд рдХреНрд╡реЗрд░реАрд▓рд╛рдИ рдЕрдиреБрдХреВрд▓рди рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рддрдкрд╛рдИрд▓реЗ рдЕрдиреБрд░реЛрдзрдХреЛ рдЖрдлреНрдиреИ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рдЬреБрди рддрдкрд╛рдИрд▓рд╛рдИ рдореВрд▓ рднрдиреНрджрд╛ рд░рд╛рдореНрд░реЛ рд╕реБрд╣рд╛рдЙрдБрдЫ рд░ рдпрд╕рд▓рд╛рдИ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

PostgreSQL рдЖрдиреНрддрд░рд┐рдХ рддрдереНрдпрд╛рдЩреНрдХрд╣рд░реВрдорд╛ рдЧрд╣рд┐рд░реЛ рдбреБрдмреНрдиреБрд╣реЛрд╕реНред рдПрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рд╕рдиреНрджрд░реНрдн

рд▓реЗрдЦрдорд╛ рдлреЗрд▓рд╛ рдкрд░реЗрдХрд╛ рдорд╛рдиреНрдп рд▓рд┐рдЩреНрдХрд╣рд░реВ, рдЬрд╕рдХреЛ рдЖрдзрд╛рд░рдорд╛, рд░рд┐рдкреЛрд░реНрдЯрдорд╛ рдерд┐рдПред

рд▓реЗрдЦрдХ рдердк рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН
https://dataegret.com/news-blog (eng)

рддрдереНрдпрд╛рдЩреНрдХ рд╕рдВрдХрд▓рдирдХрд░реНрддрд╛
https://www.postgresql.org/docs/current/monitoring-stats.html

рдкреНрд░рдгрд╛рд▓реА рдкреНрд░рд╢рд╛рд╕рди рдХрд╛рд░реНрдпрд╣рд░реВ
https://www.postgresql.org/docs/current/functions-admin.html

рдпреЛрдЧрджрд╛рди рдореЛрдбреНрдпреБрд▓рд╣рд░реВ
https://www.postgresql.org/docs/current/pgstatstatements.html
https://www.postgresql.org/docs/current/pgstattuple.html
https://www.postgresql.org/docs/current/pgbuffercache.html
https://github.com/klando/pgfincore
https://github.com/dalibo/pg_stat_kcache

SQL рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╣рд░реВ рд░ sql рдХреЛрдб рдЙрджрд╛рд╣рд░рдгрд╣рд░реВ
https://github.com/dataegret/pg-utils

рддрдкрд╛рдИрдВрдХреЛ рдзреНрдпрд╛рдирдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИрд▓рд╛рдИ рдзрдиреНрдпрд╡рд╛рдж!

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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди