PostgreSQL рдЕрдВрддрд░реНрдЧрдд рдЖрдХрдбреЗрд╡рд╛рд░реАрдордзреНрдпреЗ рдЦреЛрд▓рд╡рд░ рдЬрд╛. рдЕрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдЕреЕрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА рджреНрд╡рд╛рд░реЗ 2015 рдЕрд╣рд╡рд╛рд▓рд╛рдЪреЗ рдкреНрд░рддрд┐рд▓реЗрдЦрди "рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рдЕрдВрддрд░реНрдЧрдд рдЖрдХрдбреЗрд╡рд╛рд░реАрдордзреНрдпреЗ рдЦреЛрд▓рд╡рд░ рдЬрд╛"

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

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


рд╢реБрдн рджреБрдкрд╛рд░ рдорд╛рдЭреЗ рдирд╛рд╡ рдЕреЕрд▓реЗрдХреНрд╕реА рдЖрд╣реЗ. рдЗрд▓реНрдпрд╛ рдореНрд╣рдЯрд▓реНрдпрд╛рдкреНрд░рдорд╛рдгреЗ, рдореА 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 рдЕрдВрддрд░реНрдЧрдд рдЖрдХрдбреЗрд╡рд╛рд░реАрдордзреНрдпреЗ рдЦреЛрд▓рд╡рд░ рдЬрд╛. рдЕрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдЖрдХрдбреЗрд╡рд╛рд░реА рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдЕрдиреЗрдХ рдЧреЛрд╖реНрдЯреА рд╕рд╛рдВрдЧрддреЗ. рддреЗ рд╢реНрд░реЗрдгреАрдВрдордзреНрдпреЗ рд╡рд┐рднрд╛рдЧрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд.

  • рдкрд╣рд┐рд▓реА рд╢реНрд░реЗрдгреА рдореНрд╣рдгрдЬреЗ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдШрдбрдгрд╛рд▒реНрдпрд╛ рдШрдЯрдирд╛. рдЬреЗрд╡реНрд╣рд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреНрдпреЗ рдХрд╛рд╣реА рдШрдЯрдирд╛ рдШрдбрддрд╛рдд рддреЗрд╡реНрд╣рд╛ рдЕрд╕реЗ рд╣реЛрддреЗ: рдПрдХ рдХреНрд╡реЗрд░реА, рдЯреЗрдмрд▓ рдНрдХреНрд╕реЗрд╕, рдСрдЯреЛрд╡реНрд╣реЕрдХреНрдпреВрдо, рдХрдорд┐рдЯ, рдирдВрддрд░ рд╣реЗ рд╕рд░реНрд╡ рдЗрд╡реНрд╣реЗрдВрдЯ рдЖрд╣реЗрдд. рдпрд╛ рдШрдЯрдирд╛рдВрд╢реА рд╕рдВрдмрдВрдзрд┐рдд рдХрд╛рдЙрдВрдЯрд░ рд╡рд╛рдврд╡рд▓реЗ тАЛтАЛрдЖрд╣реЗрдд. рдЖрдгрд┐ рдЖрдкрдг рдпрд╛ рдШрдЯрдирд╛рдВрдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдШреЗрдК рд╢рдХрддреЛ.
  • рджреБрд╕рд░реА рд╢реНрд░реЗрдгреА рдореНрд╣рдгрдЬреЗ рдЯреЗрдмрд▓, рдбреЗрдЯрд╛рдмреЗрд╕ рдпрд╛рдВрд╕рд╛рд░рдЦреНрдпрд╛ рд╡рд╕реНрддреВрдВрдЪреЗ рдЧреБрдгрдзрд░реНрдо. рддреНрдпрд╛рдВрдЪреНрдпрд╛рдХрдбреЗ рдЧреБрдгрдзрд░реНрдо рдЖрд╣реЗрдд. рд╣рд╛ рдЯреЗрдмрд▓рд╛рдВрдЪрд╛ рдЖрдХрд╛рд░ рдЖрд╣реЗ. рдЖрдореНрд╣реА рдЯреЗрдмрд▓реНрд╕рдЪреНрдпрд╛ рд╡рд╛рдвреАрдЪрд╛, рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХрд╛рдВрдЪреНрдпрд╛ рд╡рд╛рдвреАрдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдШреЗрдК рд╢рдХрддреЛ. рдЖрдкрдг рдЧрддрд┐рд╢реАрд▓рддреЗрддреАрд▓ рдмрджрд▓ рдкрд╛рд╣реВ рд╢рдХрддреЛ.
  • рдЖрдгрд┐ рддрд┐рд╕рд░реА рд╢реНрд░реЗрдгреА рдореНрд╣рдгрдЬреЗ рдХрд╛рд░реНрдпрдХреНрд░рдорд╛рдд рдШрд╛рд▓рд╡рд▓реЗрд▓рд╛ рд╡реЗрд│. рд╡рд┐рдирдВрддреА рдПрдХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрд╣реЗ. рддреНрдпрд╛рдЪреА рд╕реНрд╡рддрдГрдЪреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд▓рд╛рд╡рдзреА рдЖрд╣реЗ. рдЗрдереВрди рд╕реБрд░реБрд╡рд╛рдд рдЭрд╛рд▓реА, рдЗрдереЗрдЪ рд╕рдВрдкрд▓реА. рдЖрдореНрд╣реА рддреНрдпрд╛рдЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдШреЗрдК рд╢рдХрддреЛ. рдПрдХрддрд░ рдбрд┐рд╕реНрдХрд╡рд░реВрди рдмреНрд▓реЙрдХ рд╡рд╛рдЪрдгреНрдпрд╛рдЪреА рдХрд┐рдВрд╡рд╛ рд▓рд┐рд╣рд┐рдгреНрдпрд╛рдЪреА рд╡реЗрд│. рдпрд╛ рдЧреЛрд╖реНрдЯреАрдВрдЪрд╛ рдорд╛рдЧреЛрд╡рд╛рд╣реА рдШреЗрддрд▓рд╛ рдЬрд╛рддреЛ.

PostgreSQL рдЕрдВрддрд░реНрдЧрдд рдЖрдХрдбреЗрд╡рд╛рд░реАрдордзреНрдпреЗ рдЦреЛрд▓рд╡рд░ рдЬрд╛. рдЕрд▓реЗрдХреНрд╕реА рд▓реЗрд╕реЛрд╡реНрд╕реНрдХреА

рдЖрдХрдбреЗрд╡рд╛рд░реАрдЪреЗ рд╕реНрддреНрд░реЛрдд рдЦрд╛рд▓реАрд▓рдкреНрд░рдорд╛рдгреЗ рд╕рд╛рджрд░ рдХреЗрд▓реЗ рдЖрд╣реЗрдд:

  • рд╕рд╛рдорд╛рдпрд┐рдХ рдореЗрдорд░реА (рд╕рд╛рдорд╛рдпрд┐рдХ рдмрдлрд░) рдордзреНрдпреЗ рд╕реНрдерд┐рд░ рдбреЗрдЯрд╛ рдареЗрд╡рдгреНрдпрд╛рд╕рд╛рдареА рдПрдХ рд╡рд┐рднрд╛рдЧ рдЖрд╣реЗ, рддреЗрдереЗ рдХрд╛рд╣реА рдХрд╛рдЙрдВрдЯрд░ рджреЗрдЦреАрд▓ рдЖрд╣реЗрдд рдЬреЗ рдХрд╛рд╣реА рдШрдЯрдирд╛ рдШрдбрддрд╛рдд рдХрд┐рдВрд╡рд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдЪреНрдпрд╛ рдСрдкрд░реЗрд╢рдирдордзреНрдпреЗ рдХрд╛рд╣реА рдХреНрд╖рдг рдЙрджреНрднрд╡рддрд╛рдд рддреЗрд╡реНрд╣рд╛ рд╕рддрдд рд╡рд╛рдврддрд╛рдд.
  • рд╣реЗ рд╕рд░реНрд╡ рдХрд╛рдЙрдВрдЯрд░ рд╡рд╛рдкрд░рдХрд░реНрддреНрдпрд╛рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдирд╛рд╣реАрдд рдЖрдгрд┐ рдкреНрд░рд╢рд╛рд╕рдХрд╛рд╕рд╛рдареА рджреЗрдЦреАрд▓ рдЙрдкрд▓рдмреНрдз рдирд╛рд╣реАрдд. рдпрд╛ рдЦрд╛рд▓рдЪреНрдпрд╛ рдкрд╛рддрд│реАрдЪреНрдпрд╛ рдЧреЛрд╖реНрдЯреА рдЖрд╣реЗрдд. рддреНрдпрд╛рдВрдЪреНрдпрд╛рдд рдкреНрд░рд╡реЗрд╢ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, PostgreSQL SQL рдлрдВрдХреНрд╢рдиреНрд╕рдЪреНрдпрд╛ рд╕реНрд╡рд░реВрдкрд╛рдд рдПрдХ рдЗрдВрдЯрд░рдлреЗрд╕ рдкреНрд░рджрд╛рди рдХрд░рддреЗ. рдЖрдореНрд╣реА рдпрд╛ рдлрдВрдХреНрд╢рдиреНрд╕рдЪрд╛ рд╡рд╛рдкрд░ рдХрд░реВрди рдирд┐рд╡рдбрдХ рдирд┐рд╡рдбреА рдХрд░реВ рд╢рдХрддреЛ рдЖрдгрд┐ рдХрд╛рд╣реА рдкреНрд░рдХрд╛рд░рдЪреЗ рдореЗрдЯреНрд░рд┐рдХ (рдХрд┐рдВрд╡рд╛ рдореЗрдЯреНрд░рд┐рдХреНрд╕рдЪрд╛ рд╕рдВрдЪ) рдорд┐рд│рд╡реВ рд╢рдХрддреЛ.
  • рддрдерд╛рдкрд┐, рд╣реА рдлрдВрдХреНрд╢рдиреНрд╕ рд╡рд╛рдкрд░рдгреЗ рдиреЗрд╣рдореАрдЪ рд╕реЛрдпреАрдЪреЗ рдирд╕рддреЗ, рдореНрд╣рдгреВрди рдлрдВрдХреНрд╢рдиреНрд╕ рджреГрд╢реНрдпрд╛рдВрд╕рд╛рдареА (VIEWs) рдЖрдзрд╛рд░ рдЕрд╕рддрд╛рдд. рд╣реА рд╡реНрд╣рд░реНрдЪреНрдпреБрдЕрд▓ рдЯреЗрдмрд▓реНрд╕ рдЖрд╣реЗрдд рдЬреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдмрд╕рд┐рд╕реНрдЯрдорд╡рд░ рдХрд┐рдВрд╡рд╛ рдбреЗрдЯрд╛рдмреЗрд╕рдордзреАрд▓ рдХрд╛рд╣реА рдЗрд╡реНрд╣реЗрдВрдЯреНрд╕рд╡рд░ рдЖрдХрдбреЗрд╡рд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛рдд.
  • рд╣реА рдЕрдВрдЧрднреВрдд рджреГрд╢реНрдпреЗ (VIEW) рдЖрдХрдбреЗрд╡рд╛рд░реАрд╕рд╣ рдХрд╛рд░реНрдп рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рдореБрдЦреНрдп рд╡рд╛рдкрд░рдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ рдЖрд╣реЗрдд. рддреЗ рдХреЛрдгрддреНрдпрд╛рд╣реА рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрдЯрд┐рдВрдЧреНрдЬрд╢рд┐рд╡рд╛рдп рдбреАрдлреЙрд▓реНрдЯрдиреБрд╕рд╛рд░ рдЙрдкрд▓рдмреНрдз рдЖрд╣реЗрдд, рддреБрдореНрд╣реА рддреЗ рддреНрд╡рд░рд┐рдд рд╡рд╛рдкрд░реВ рд╢рдХрддрд╛, рдкрд╛рд╣реВ рд╢рдХрддрд╛, рддреЗрдереВрди рдорд╛рд╣рд┐рддреА рдШреЗрдК рд╢рдХрддрд╛. рдЖрдгрд┐ рдпреЛрдЧрджрд╛рди рджреЗрдЦреАрд▓ рдЖрд╣реЗрдд. рдпреЛрдЧрджрд╛рди рдЕрдзрд┐рдХреГрдд рдЖрд╣реЗрдд. рддреБрдореНрд╣реА 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 рд▓рд╛ рд╡рд┐рдирдВрддреА рдкрд╛рдард╡рд▓реЗрд▓реНрдпрд╛ рдХреНрд▓рд╛рдпрдВрдЯрд▓рд╛ рдереЛрдбреНрдпрд╛ рд╡реЗрд│рд╛рдиреЗ рдкреНрд░рддрд┐рд╕рд╛рдж рдорд┐рд│реЗрд▓. рдЬрд░ рд╣реА рд╕рд░реНрд╡ рдСрдкрд░реЗрд╢рдиреНрд╕ рдореЗрдорд░реАрдордзреНрдпреЗ рдХреЗрд▓реА рдЧреЗрд▓реА, рддрд░ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ рдЦреВрдк рдЬрд▓рдж рдкреНрд░рддрд┐рд╕рд╛рдж рджреЗрдИрд▓ рдЖрдгрд┐ рдХреНрд▓рд╛рдпрдВрдЯ рдХрдореА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрд▓.

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 рд╕рд╛рдареА рдЙрдкрдпреБрдХреНрдд рдЖрд╣реЗ. рдЖрдгрд┐ рдЪреЗрдХрдкреЙрдИрдВрдЯ рджрд░рдореНрдпрд╛рди рдЕрдВрдорд▓рд╛рдд рдЖрдгрд▓реНрдпрд╛ рдЬрд╛рдгрд╛рд░реНтАНрдпрд╛ рд╡рд┐рдирдВрддреНрдпрд╛рдВрдирд╛ рдбрд┐рд╕реНрдХ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рд╡реНрдпрд╕реНрдд рдЕрд╕рд▓реНрдпрд╛рдЪреНрдпрд╛ рддрдгрд╛рд╡рд╛рдЪрд╛ рдЕрдиреБрднрд╡ рдпреЗрдгрд╛рд░ рдирд╛рд╣реА.

рдЖрдгрд┐ рдЪреЗрдХрдкреЙрдИрдВрдЯ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА рддреАрди рдкреЕрд░рд╛рдореАрдЯрд░реНрд╕ рдЖрд╣реЗрдд:

  • ╤Б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 рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдЕрд╕реЗрд▓, рддрд░ рд╣реЗ рдЖрдзреАрдЪ рдПрдХ рд╕реВрдЪрдХ рдЖрд╣реЗ рдХреА рддреБрдореНрд╣рд╛рд▓рд╛ рдХреБрдареЗрддрд░реА рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рддрдпрд╛рд░ рдХрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЕрд╕реВ рд╢рдХрддреЗ рдЬреЗрдгреЗрдХрд░реВрди рдкреНрд░рд╡реЗрд╢ рдЕрдиреБрдХреНрд░рдордгрд┐рдХреЗрдиреБрд╕рд╛рд░ рдЕрд╕рддреАрд▓ рдХрд┐рдВрд╡рд╛ рдЕрд╢рд╛ рдЕрдиреБрдХреНрд░рдорд┐рдХ рд╕реНрдХреЕрдирдЪрд╛ рд╡рд╛рдкрд░ рдХрд░рдгрд╛рд░реНтАНрдпрд╛ рдХреНрд╡реЗрд░реА рдСрдкреНрдЯрд┐рдорд╛рдЗрдЭ рдХрд░рдгреЗ рд╢рдХреНрдп рд╣реЛрдИрд▓ рдЬреЗрдгреЗрдХрд░реВрди рдЕрд╕реЗ рд╣реЛрдд рдирд╛рд╣реА. рд╣реЛрддреЗ.

рдПрдХ рд╕рд╛рдзреЗ рдЙрджрд╛рд╣рд░рдг - рдореЛрдареНрдпрд╛ OFFSET рдЖрдгрд┐ LIMIT рдЪреА рд╡рд┐рдирдВрддреА рдпреЛрдЧреНрдп рдЖрд╣реЗ рдЕрд╕реЗ рд╕рдордЬрд╛. рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде, рдЯреЗрдмрд▓рдордзреАрд▓ 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 - рдЯреЗрдмрд▓рдордзреАрд▓ рдкрдВрдХреНрддреА рдЕрдкрдбреЗрдЯ рдХрд░рдгреНрдпрд╛рдЪреЗ рдСрдкрд░реЗрд╢рди. рдЦрд░рдВ рддрд░, рдЕрджреНрдпрддрди рджреЛрди рдСрдкрд░реЗрд╢рдиреНрд╕ (рдХрд┐рдВрд╡рд╛ рддреНрдпрд╛рд╣реВрдирд╣реА рдЕрдзрд┐рдХ) рдЖрд╣реЗ. рд╣реЗ рдирд╡реАрди рдкрдВрдХреНрддреА рдЖрд╡реГрддреНрддреА рдШрд╛рд▓рдд рдЖрд╣реЗ рдЖрдгрд┐ рдЬреБрдиреА рдкрдВрдХреНрддреА рдЖрд╡реГрддреНрддреА рдЕрдкреНрд░рдЪрд▓рд┐рдд рдореНрд╣рдгреВрди рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХрд░рдд рдЖрд╣реЗ. рдирдВрддрд░, рдСрдЯреЛрд╡реНрд╣реЕрдХреНрдпреВрдо рдпреЗрдИрд▓ рдЖрдгрд┐ рдУрд│реАрдВрдЪреНрдпрд╛ рдпрд╛ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЖрд╡реГрддреНрддреНрдпрд╛ рд╕рд╛рдл рдХрд░реЗрд▓, рд╣реЗ рдард┐рдХрд╛рдг рдкреБрдиреНрд╣рд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рд╕рд╛рдареА рдЙрдкрд▓рдмреНрдз рдореНрд╣рдгреВрди рдЪрд┐рдиреНрд╣рд╛рдВрдХрд┐рдд рдХрд░рд╛.

рддрд╕реЗрдЪ, рдЕрдкрдбреЗрдЯ рдореНрд╣рдгрдЬреЗ рдХреЗрд╡рд│ рдЯреЗрдмрд▓ рдЕрдкрдбреЗрдЯ рдХрд░рдгреЗ рдирд╡реНрд╣реЗ. рд╣реЗ рдЕрджреНрдпрд╛рдк рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЕрджреНрдпрддрди рдЖрд╣реЗ. рдЬрд░ рддреБрдордЪреНрдпрд╛рдХрдбреЗ рдЯреЗрдмрд▓рд╡рд░ рдмрд░реАрдЪ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдЕрд╕рддреАрд▓, рддрд░ рдЕрджреНрдпрддрдирд╛рд╕рд╣, рдХреНрд╡реЗрд░реАрдордзреНрдпреЗ рдЕрджреНрдпрддрдирд┐рдд рдХреЗрд▓реЗрд▓реНрдпрд╛ рдлреАрд▓реНрдбрд╕рд╣ рд╕рд░реНрд╡ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рджреЗрдЦреАрд▓ рдЕрджреНрдпрддрдирд┐рдд рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ. рдпрд╛ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХрд╛рдВрдордзреНрдпреЗ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдкрдВрдХреНрддреА рдЖрд╡реГрддреНрддреНрдпрд╛ рджреЗрдЦреАрд▓ рдЕрд╕рддреАрд▓ рдЬреНрдпрд╛ рд╕рд╛рдл рдХрд░рдгреЗ рдЖрд╡рд╢реНрдпрдХ рдЖрд╣реЗ.

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;

рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдбрд┐рдЭрд╛рдИрдирдореБрд│реЗ, рдЕрдкрдбреЗрдЯ рд╣реЗ рд╣реЗрд╡реАрд╡реЗрдЯ рдСрдкрд░реЗрд╢рди рдЖрд╣реЗ. рдкрд░рдВрддреБ рддреЗ рд╕реЛрдкреЗ рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддрд╛рдд. рдЦрд╛ 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));

рдСрдЯреЛрд╡реНрд╣реЕрдХреНрдпреВрдо рд░рд╛рдВрдЧ. рдСрдЯреЛрд╡реНрд╣реЕрдХреНрдпреВрдо рд╣реА рдЕрд╢реА рдЙрдкрдкреНрд░рдгрд╛рд▓реА рдЖрд╣реЗ рдЬреНрдпрд╛рд╕рд╛рдареА PostgreSQL рдордзреНрдпреЗ рдлрд╛рд░рдЪ рдХрдореА рдЖрдХрдбреЗрд╡рд╛рд░реА рдЖрд╣реЗ. рдЖрдореНрд╣реА рдлрдХреНрдд pg_stat_activity рдордзреАрд▓ рдЯреЗрдмрд▓рдордзреНрдпреЗ рдкрд╛рд╣реВ рд╢рдХрддреЛ рдХреА рдпрд╛ рдХреНрд╖рдгреА рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдХрд┐рддреА рд╡реНрд╣реЕрдХреНрдпреВрдо рдЖрд╣реЗрдд. рдорд╛рддреНрд░, рдЬрд╛рддрд╛рдирд╛ рд░рд╛рдВрдЧреЗрдд рдХрд┐рддреА рдЯреЗрдмрд▓ рдЖрд╣реЗрдд рд╣реЗ рд╕рдордЬрдгреЗ рдлрд╛рд░ рдХрдареАрдг рдЖрд╣реЗ.

рдЯреАрдк: _рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ 10 рдкрд╛рд╕реВрди, рд╡реНрд╣реЕрдХреНрдпреВрдо рд╡реНрд╣реЕрдХреНрдпреВрдордЪрд╛ рдорд╛рдЧреЛрд╡рд╛ рдШреЗрдгреНрдпрд╛рдЪреА рдкрд░рд┐рд╕реНрдерд┐рддреА рдЦреВрдк рд╕реБрдзрд╛рд░рд▓реА рдЖрд╣реЗ - pg_stat_progress рджреГрд╢реНрдп рджрд┐рд╕реВ рд▓рд╛рдЧрд▓реЗ рдЖрд╣реЗрд╡реНрд╣реЕрдХреНрдпреВрдо, рдЬреЗ рдСрдЯреЛрд╡реНрд╣реЕрдХреНрдпреВрдо рдореЙрдирд┐рдЯрд░рд┐рдВрдЧрдЪреА рд╕рдорд╕реНрдпрд╛ рдореЛрдареНрдпрд╛ рдкреНрд░рдорд╛рдгрд╛рдд рд╕реБрд▓рдн рдХрд░рддреЗ.

рдЖрдкрдг рд╣реА рд╕рд░рд▓реАрдХреГрдд рдХреНрд╡реЗрд░реА рд╡рд╛рдкрд░реВ рд╢рдХрддреЛ. рдЖрдгрд┐ рд╡реНрд╣реЕрдХреНрдпреВрдо рдХрдзреА рдмрдирд╡рд╛рдпрдЪрд╛ рддреЗ рдЖрдкрдг рдкрд╛рд╣реВ рд╢рдХрддреЛ. рдкрдг, рд╡реНрд╣реЕрдХреНрдпреВрдо рдХрд╕реЗ рдЖрдгрд┐ рдХреЗрд╡реНрд╣рд╛ рд╕реБрд░реВ рдХрд░рд╛рд╡реЗ? рдореА рдЖрдзреА рдмреЛрд▓рд▓реЗрд▓реНрдпрд╛ рд╕реНрдЯреНрд░рд┐рдВрдЧрдЪреНрдпрд╛ рдпрд╛ рдЬреБрдиреНрдпрд╛ рдЖрд╡реГрддреНрддреНрдпрд╛ рдЖрд╣реЗрдд. рдЕрджреНрдпрддрди рдЖрд▓реЗ рдЖрд╣реЗ, рдкрдВрдХреНрддреАрдЪреА рдирд╡реАрди рдЖрд╡реГрддреНрддреА рдШрд╛рддрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ. рд╕реНрдЯреНрд░рд┐рдВрдЧрдЪреА рдПрдХ рдЕрдкреНрд░рдЪрд▓рд┐рдд рдЖрд╡реГрддреНрддреА рдЖрд▓реА рдЖрд╣реЗ. рдЯреЗрдмрд▓ pg_stat_user_tables рдЕрд╕рд╛ рдПрдХ рдкреЕрд░рд╛рдореАрдЯрд░ рдЖрд╣реЗ n_dead_tup. рд╣реЗ "рдореГрдд" рдкрдВрдХреНрддреАрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рджрд░реНрд╢рд╡рддреЗ. рдЖрдгрд┐ рдореГрдд рдкрдВрдХреНрддреАрдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рдПрдХрд╛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдереНрд░реЗрд╢реЛрд▓реНрдбрдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рд╣реЛрддрд╛рдЪ, рдПрдХ рдСрдЯреЛрд╡реНрд╣реЕрдХреНрдпреВрдо рдЯреЗрдмрд▓рд╡рд░ рдпреЗрдИрд▓.

рдЖрдгрд┐ рд╣рд╛ рдереНрд░реЗрд╢реЛрд▓реНрдб рдХрд╕рд╛ рдореЛрдЬрд▓рд╛ рдЬрд╛рддреЛ? рд╕рд╛рд░рдгреАрддреАрд▓ рдПрдХреВрдг рдкрдВрдХреНрддреАрдВрдЪреА рд╣реА рдПрдХ рдЕрддрд┐рд╢рдп рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЯрдХреНрдХреЗрд╡рд╛рд░реА рдЖрд╣реЗ. рдПрдХ рдкреЕрд░рд╛рдореАрдЯрд░ рдЖрд╣реЗ autovacuum_vacuum_scale_factor. рд╣реЗ рдЯрдХреНрдХреЗрд╡рд╛рд░реА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ. рд╕рдордЬрд╛ 10% + 50 рдУрд│реАрдВрдЪрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдмреЗрд╕ рдереНрд░реЗрд╢реЛрд▓реНрдб рдЖрд╣реЗ. рдЖрдгрд┐ рдХрд╛рдп рд╣реЛрддреЗ? рдЬреЗрд╡реНрд╣рд╛ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рдЯреЗрдмрд▓рдордзреАрд▓ рд╕рд░реНрд╡ рдУрд│реАрдВрдкреИрдХреА "10% + 50" рдкреЗрдХреНрд╖рд╛ рдЬрд╛рд╕реНрдд рдореГрдд рдкрдВрдХреНрддреА рдЕрд╕рддрд╛рдд, рддреЗрд╡реНрд╣рд╛ рдЖрдореНрд╣реА рдЯреЗрдмрд▓ рдСрдЯреЛрд╡реНрд╣реЕрдХреНрдпреВрдорд╡рд░ рдареЗрд╡рддреЛ.

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 рд╡реИрдпрдХреНрддрд┐рдХрд░рд┐рддреНрдпрд╛ рдирд┐рдпреБрдХреНрдд рдХреЗрд▓реЗ рдЬрд╛рдК рд╢рдХрддреЗ. рдЖрдгрд┐, рддреНрдпрд╛рдиреБрд╕рд╛рд░, рдереНрд░реЗрд╢реЛрд▓реНрдб рдЬрд╛рдЧрддрд┐рдХ рдирд╕реЗрд▓, рдкрд░рдВрддреБ рдЯреЗрдмрд▓рд╕рд╛рдареА рд╡реИрдпрдХреНрддрд┐рдХ рдЕрд╕реЗрд▓. рдореНрд╣рдгреВрди, рдЧрдгрдирд╛ рдХрд░рдгреНрдпрд╛рд╕рд╛рдареА, рддреЗрдереЗ рдЖрдкрд▓реНрдпрд╛рд▓рд╛ рдпреБрдХреНрддреНрдпрд╛ рдЖрдгрд┐ рдпреБрдХреНрддреНрдпрд╛ рд╡рд╛рдкрд░рдгреНрдпрд╛рдЪреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдЖрд╣реЗ. рдЖрдгрд┐ рдЬрд░ рддреБрдореНрд╣рд╛рд▓рд╛ рд╕реНрд╡рд╛рд░рд╕реНрдп рдЕрд╕реЗрд▓, рддрд░ рддреБрдореНрд╣реА рдЖрдордЪреНрдпрд╛ рд╕рд╣рдХрд╛рд▒реНрдпрд╛рдВрдЪреЗ рдЕрд╡рд┐рдЯреЛрдЪреЗ рдЕрдиреБрднрд╡ рдкрд╛рд╣реВ рд╢рдХрддрд╛ (рд╕реНрд▓рд╛рдЗрдбрд╡рд░реАрд▓ рд▓рд┐рдВрдХ рдЕрд╡реИрдз рдЖрд╣реЗ рдЖрдгрд┐ рдордЬрдХреВрд░рд╛рдд рдЕрдкрдбреЗрдЯ рдХреЗрд▓реА рдЧреЗрд▓реА рдЖрд╣реЗ).

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

рддреНрдпрд╛рдмрджреНрджрд▓ рдЖрдкрдг рдХрд╛рдп рдХрд░реВ рд╢рдХрддреЛ? рдЬрд░ рдЖрдордЪреНрдпрд╛рдХрдбреЗ рд▓рд╛рдВрдм рд░рд╛рдВрдЧ рдЕрд╕реЗрд▓ рдЖрдгрд┐ рдСрдЯреЛрд╡реНрд╣реЕрдХреНрдпреВрдо рд╕рд╛рдордирд╛ рдХрд░реВ рд╢рдХрдд рдирд╕реЗрд▓, рддрд░ рдЖрдореНрд╣реА рд╡реНрд╣реЕрдХреНрдпреВрдо рдХрд╛рдордЧрд╛рд░рд╛рдВрдЪреА рд╕рдВрдЦреНрдпрд╛ рд╡рд╛рдврд╡реВ рд╢рдХрддреЛ рдХрд┐рдВрд╡рд╛ рд╡реНрд╣реЕрдХреНрдпреВрдо рдЕрдзрд┐рдХ рдЖрдХреНрд░рдордХ рдмрдирд╡реВ рд╢рдХрддреЛ.рдЬреЗрдгреЗрдХрд░реВрди рддреЗ рдЖрдзреА рдЯреНрд░рд┐рдЧрд░ рд╣реЛрдИрд▓, рдЯреЗрдмрд▓рд╡рд░ рд▓рд╣рд╛рди рддреБрдХрдбреНрдпрд╛рдВрдордзреНрдпреЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрд▓. рдЖрдгрд┐ рддреНрдпрд╛рдореБрд│реЗ рд░рд╛рдВрдЧ рдХрдореА рд╣реЛрдИрд▓. - рдпреЗрдереЗ рдореБрдЦреНрдп рдЧреЛрд╖реНрдЯ рдореНрд╣рдгрдЬреЗ рдбрд┐рд╕реНрдХрд╡рд░реАрд▓ рд▓реЛрдбрдЪреЗ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░рдгреЗ, рдХрд╛рд░рдг. рд╡реНрд╣реЕрдХреНрдпреВрдо рдЧреЛрд╖реНрдЯ рд╡рд┐рдирд╛рдореВрд▓реНрдп рдирд╛рд╣реА, рдЬрд░реА 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.

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

рдЪреЗрддрд╛рд╡рдгреА: рдкреЛрд╕реНрдЯрдЧреНрд░реЗрд╕ 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, рдЬреЗ рддреБрдореНрд╣рд╛рд▓рд╛ рд╣реЗрд╡реА рд▓реЙрдХ рдЯреНрд░реЕрдХ рдХрд░рдгреНрдпрд╛рд╕ рдЕрдиреБрдорддреА рджреЗрддреЗ.

рдЖрдгрд┐ рдкрд╣рд┐рд▓реА рд▓рд┐рдВрдХ рд╡рд┐рдирдВрддреА рдордЬрдХреВрд░ рдЖрд╣реЗ. рддреЗ рдЦреВрдкрдЪ рд▓рд╛рдВрдм рдЖрд╣реЗ.

рдЖрдгрд┐ рджреБрд╕рд░реА рд▓рд┐рдВрдХ 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 рд╡рд░ рдХрд┐рддреА рдЦрд░реНрдЪ рдХреЗрд▓рд╛, рдореНрд╣рдгрдЬреЗрдЪ рдлрд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдорд╕рд╣ рдСрдкрд░реЗрд╢рдиреНрд╕ рдЖрдгрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░рдЪрд╛ рд╡рд╛рдкрд░ рдХрд┐рддреА рдЖрд╣реЗ рдпрд╛рдЪрд╛ рдЕрдВрджрд╛рдЬ рд▓рд╛рд╡рдгреНрдпрд╛рдЪреА рдкрд░рд╡рд╛рдирдЧреА рджреЗрддреЗ. рддрдерд╛рдкрд┐, рдореЙрдбреНрдпреВрд▓ рддрд░реБрдг (рдЦреЗ-рдЦреЗ) рдЖрд╣реЗ рдЖрдгрд┐ рддреНрдпрд╛рдЪреНрдпрд╛ рдХрд╛рд░реНрдпрд╛рд╕рд╛рдареА рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ 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

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╛