PostgreSQL рд╕рдХреНрд░рд┐рдп рд╕рддреНрд░ рдЗрддрд┐рд╣рд╛рд╕ - рдирдпрд╛ pgsentinel рдПрдХреНрд╕рдЯреЗрдВрд╢рди

рдХрдВрдкрдиреА pgsentinel рдЗрд╕реА рдирд╛рдо рдХрд╛ pgsentinel рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдЬрд╛рд░реА рдХрд┐рдпрд╛ рдЧрдпрд╛ (рдЬреАрдердм рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА), рдЬреЛ PostgreSQL рдореЗрдВ pg_active_session_history рджреГрд╢реНрдп рдЬреЛрдбрд╝рддрд╛ рд╣реИ - рд╕рдХреНрд░рд┐рдп рд╕рддреНрд░реЛрдВ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕ (Oracle рдХреЗ v$active_session_history рдХреЗ рд╕рдорд╛рди)ред

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ pg_stat_activity рдХреЗ рд╣рд░ рджреВрд╕рд░реЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИрдВ:

  1. рд╕рднреА рд╕рдВрдЪрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗрд╡рд▓ рд░реИрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЦрдкрдд рдХреА рдЧрдИ рдореЗрдореЛрд░реА рдХреА рдорд╛рддреНрд░рд╛ рдЕрдВрддрд┐рдо рд╕рдВрдЧреНрд░рд╣реАрдд рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддреА рд╣реИред
  2. рдХреНрд╡реЗрд░реАрдЖрдИрдбреА тАЛтАЛрдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ - pg_stat_statements рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ рд╡рд╣реА рдХреНрд╡реЗрд░реАрдЖрдИрдбреА тАЛтАЛ(рдкреВрд░реНрд╡-рдЗрдВрд╕реНрдЯреЙрд▓реЗрд╢рди рдЖрд╡рд╢реНрдпрдХ)ред
  3. Top_level_query рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рд╣реИ - рдХреНрд╡реЗрд░реА рдХрд╛ рдкрд╛рда рдЬрд┐рд╕рд╕реЗ рд╡рд░реНрддрдорд╛рди рдХреНрд╡реЗрд░реА рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (pl/pgsql рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ)


pg_active_session_history рдлрд╝реАрд▓реНрдб рдХреА рдкреВрд░реА рд╕реВрдЪреА:

      рдХреЙрд▓рдо | рдкреНрд░рдХрд╛рд░ ------------------+-------------------------------- ash_time | рджрд┐рдирд╛рдВрдХрд┐рдд рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк | рдУрдЖрдИрдбреА рдбреЗрдЯрд╛рдирд╛рдо | рдЯреЗрдХреНрд╕реНрдЯ рдкреАрдЖрдИрдбреА тАЛтАЛ| рдкреВрд░реНрдгрд╛рдВрдХ рдЙрдкрдпреЛрдЧрд╕рд┐рд╕рд┐рдб | рдУрдЖрдИрдбреА рдЙрдкрдпреЛрдЧ рдирд╛рдо | рдЯреЗрдХреНрд╕реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди_рдирд╛рдо | рдЯреЗрдХреНрд╕реНрдЯ client_addr | рдЯреЗрдХреНрд╕реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ_рд╣реЛрд╕реНрдЯрдирд╛рдо | рдЯреЗрдХреНрд╕реНрдЯ рдХреНрд▓рд╛рдЗрдВрдЯ_рдкреЛрд░реНрдЯ | рдкреВрд░реНрдгрд╛рдВрдХ рдмреИрдХрдПрдВрдб_рд╕реНрдЯрд╛рд░реНрдЯ | рд╕рдордп рдХреНрд╖реЗрддреНрд░ xact_start рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк | рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреНрд╡реЗрд░реА_рд╕реНрдЯрд╛рд░реНрдЯ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк | рд╕рдордп рдХреНрд╖реЗрддреНрд░ рд░рд╛рдЬреНрдп_рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк | рд╕рдордп рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк wait_event_type | рдЯреЗрдХреНрд╕реНрдЯ wait_event | рдкрд╛рда рд╕реНрдерд┐рддрд┐ | рдЯреЗрдХреНрд╕реНрдЯ рдмреИрдХрдПрдВрдб_рдПрдХреНрд╕рдЖрдИрдбреА | xid рдмреИрдХрдПрдВрдб_xmin | xid рдЯреЙрдк_рд▓реЗрд╡рд▓_рдХреНрд╡реЗрд░реА | рдкрд╛рда рдХреНрд╡реЗрд░реА | рдЯреЗрдХреНрд╕реНрдЯ рдХреНрд╡реЗрд░реА рдЖрдИрдбреА | рдмрд┐рдЧрд┐рдВрдЯ рдмреИрдХрдПрдВрдб_рдЯрд╛рдЗрдк | рдореВрд▓рдкрд╛рда                     

рдЗрдВрд╕реНрдЯрд╛рд▓реЗрд╢рди рдХреЗ рд▓рд┐рдП рдЕрднреА рддрдХ рдХреЛрдИ рддреИрдпрд╛рд░ рдкреИрдХреЗрдЬ рдирд╣реАрдВ рд╣реИ. рд╕реНрд░реЛрдд рдХреЛрдб рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдФрд░ рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрд╡рдпрдВ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП "рдбреЗрд╡реЗрд▓" рдкреИрдХреЗрдЬ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ PATH рд╡реЗрд░рд┐рдПрдмрд▓ рдореЗрдВ pg_config рдХрд╛ рдкрде рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд╣рдо рдПрдХрддреНрд░ рдХрд░рддреЗ рд╣реИрдВ:

рд╕реАрдбреА рдкреАрдЬреАрд╕реЗрдВрдЯрд┐рдирд▓/рдПрд╕рдЖрд░рд╕реА
рдмрдирд╛рдирд╛
рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛

Postgres.conf рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝реЗрдВ:

рд╕рд╛рдЭрд╛_рдкреНрд░реАрд▓реЛрдб_рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ = 'pg_stat_statements,pgsentinel'
рдЯреНрд░реИрдХ_рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА_рдХреНрд╡реЗрд░реА_рд╕рд╛рдЗрдЬрд╝ = 2048
pg_stat_statements.track = рд╕рднреА

# рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рдЦреЗ рдЧрдП рд╣рд╛рд▓ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛
pgsentinel_ash.max_entries = 10000

PostgreSQL рдкреБрдирдГ рд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдПрдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдПрдВ:

рдПрдХреНрд╕рдЯреЗрдВрд╢рди pgsentinel рдмрдирд╛рдПрдБ;

рд╕рдВрдЪрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╣рдореЗрдВ рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЙрддреНрддрд░ рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдЬреИрд╕реЗ:

  • рд╕рддреНрд░реЛрдВ рдиреЗ рдХрд┐рди рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдкрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдордп рдмрд┐рддрд╛рдпрд╛?
  • рдХреМрди рд╕реЗ рд╕рддреНрд░ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рдереЗ?
  • рдХреМрди рд╕реЗ рдЕрдиреБрд░реЛрдз рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдХреНрд░рд┐рдп рдереЗ?

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

рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░, PASH-рд╡реНрдпреВрдЕрд░ (рд╕рдВрд╕реНрдХрд░рдг 0.4.0 рд╕реЗ рд╢реБрд░реВ) pg_active_session_history рджреГрд╢реНрдп рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдпрджрд┐ рдпрд╣ рдореМрдЬреВрдж рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕рд╕реЗ рд╕рдВрдкреВрд░реНрдг рд╕рдВрдЪрд┐рдд рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд▓реЛрдб рдХрд░рддрд╛ рд╣реИ рдФрд░ рдирдП рдЖрдиреЗ рд╡рд╛рд▓реЗ рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦрддрд╛ рд╣реИ, рд╣рд░ 15 рд╕реЗрдХрдВрдб рдореЗрдВ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рддрд╛ рд╣реИред

PostgreSQL рд╕рдХреНрд░рд┐рдп рд╕рддреНрд░ рдЗрддрд┐рд╣рд╛рд╕ - рдирдпрд╛ pgsentinel рдПрдХреНрд╕рдЯреЗрдВрд╢рди

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

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