PostgreSQL рдХреЗ рд▓рд┐рдП ASH рдПрдирд╛рд▓реЙрдЧ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдмрдпрд╛рди


PostgreSQL рдкреНрд░рд╢реНрдиреЛрдВ рдХрд╛ рдЕрдиреБрдХреВрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ - рдЕрдкреЗрдХреНрд╖рд╛рдПрдВ, рддрд╛рд▓реЗ, рдЯреЗрдмрд▓ рдЖрдБрдХрдбрд╝реЗред

рдЙрдкрд▓рдмреНрдз рд╡рд┐рдХрд▓реНрдк


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

Pgsentinel рдПрдХреНрд╕рдЯреЗрдВрд╢рди :
" рд╕рднреА рд╕рдВрдЪрд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЗрд╡рд▓ рд░реИрдо рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдореЗрдореЛрд░реА рдХреА рдЦрдкрдд рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдкрд┐рдЫрд▓реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рд░рд┐рдХреЙрд░реНрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдХреНрд╡реЗрд░реА рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ - pg_stat_statements рдПрдХреНрд╕рдЯреЗрдВрд╢рди рд╕реЗ рдПрдХ рд╣реА рдХреНрд╡реЗрд░реАрдб (рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд╛рдкрдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ)ред "

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

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

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


рд╕рдорд╛рдзрд╛рди рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреА рд░реВрдкрд░реЗрдЦрд╛


рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ:

Pg_stat_activity рдЗрддрд┐рд╣рд╛рд╕ рджреЗрдЦреЗрдВ
Pg_locks рджреГрд╢реНрдп рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рддреНрд░ рд▓реЙрдХ рдЗрддрд┐рд╣рд╛рд╕

рдирд┐рд░реНрдгрдп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд▓рдХреНрд╖реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдкрд░ рдкреНрд░рднрд╛рд╡ рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

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

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЪрд░рдгреЛрдВ


1. рд╕реЗрд╡рд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ


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

DROP SCHEMA IF EXISTS activity_hist ; CREATE SCHEMA activity_hist AUTHORIZATION monitor ; 

рдорд╣рддреНрд╡рдкреВрд░реНрдг: рдпреЛрдЬрдирд╛ рд▓рдХреНрд╖реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдирд┐рдЧрд░рд╛рдиреА рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╣реИред

Pg_stat_activity рдЗрддрд┐рд╣рд╛рд╕ рджреЗрдЦреЗрдВ


Pg_stat_activity рджреГрд╢реНрдп рдХреЗ рд╡рд░реНрддрдорд╛рди рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

activity_hist.history_pg_stat_activity:
 --ACTIVITY_HIST.HISTORY_PG_STAT_ACTIVITY DROP TABLE IF EXISTS activity_hist.history_pg_stat_activity; CREATE TABLE activity_hist.history_pg_stat_activity ( timepoint timestamp without time zone , datid oid , datname name , pid integer, usesysid oid , usename name , application_name text , client_addr inet , client_hostname text , client_port integer, backend_start timestamp with time zone , xact_start timestamp with time zone , query_start timestamp with time zone , state_change timestamp with time zone , wait_event_type text , wait_event text , state text , backend_xid xid , backend_xmin xid , query text , backend_type text , queryid bigint ); 

рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП - рдХреЛрдИ рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдпрд╛ рдкреНрд░рддрд┐рдмрдВрдз рдирд╣реАрдВред

рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕реАрдзреЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рднрд╛рдЬрди рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

activity_hist.archive_pg_stat_activity:
 DROP TABLE IF EXISTS activity_hist.archive_pg_stat_activity; CREATE TABLE activity_hist.archive_pg_stat_activity ( timepoint timestamp without time zone , datid oid , datname name , pid integer, usesysid oid , usename name , application_name text , client_addr inet , client_hostname text , client_port integer, backend_start timestamp with time zone , xact_start timestamp with time zone , query_start timestamp with time zone , state_change timestamp with time zone , wait_event_type text , wait_event text , state text , backend_xid xid , backend_xmin xid , query text , backend_type text , queryid bigint ) PARTITION BY RANGE (timepoint); 

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

рд╕рддреНрд░ рд▓реЙрдХ рдЗрддрд┐рд╣рд╛рд╕


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

activity_hist.history_locking:
 --ACTIVITY_HIST.HISTORY_LOCKING DROP TABLE IF EXISTS activity_hist.history_locking; CREATE TABLE activity_hist.history_locking ( timepoint timestamp without time zone , locktype text , relation oid , mode text , tid xid , vtid text , pid integer , blocking_pids integer[] , granted boolean ); 

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

рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕реАрдзреЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рднрд╛рдЬрди рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

activity_hist.archive_locking:
 DROP TABLE IF EXISTS activity_hist.archive_locking; CREATE TABLE activity_hist.archive_locking ( timepoint timestamp without time zone , locktype text , relation oid , mode text , tid xid , vtid text , pid integer , blocking_pids integer[] , granted boolean ) PARTITION BY RANGE (timepoint); 

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

2. рд╡рд░реНрддрдорд╛рди рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рднрд░рдирд╛


рдХрд┐рд╕реА рджреГрд╢реНрдп рдХреЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдХреЛ рд╕реАрдзреЗ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ bash рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ plpgsql рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЪрд▓рд╛рддрд╛ рд╣реИред

get_current_activity.sh
 #!/bin/bash ######################################################### #get_current_activity.sh ERROR_FILE='/home/demon/get_current_activity'$(date +%Y%m%d-)'T'$(date +%H)$(date +%M)$(date +%S) host=$1 s_name=$2 s_pass=$3 psql -A -t -q -v ON_ERROR_STOP=1 -c "SELECT activity_hist.get_current_activity( '$host' , '$s_name' , '$s_pass' )" >/dev/null 2>$ERROR_FILE line_count=`cat $ERROR_FILE | wc -l` if [[ $line_count != '0' ]]; then rm -f /home/demon/*.err >/dev/null 2>/dev/null cp $ERROR_FILE $ERROR_FILE'.err' >/dev/null 2>/dev/null fi rm $ERROR_FILE >/dev/null 2>/dev/null exit 0 

Plpgsql dblink рдлрд╝рдВрдХреНрд╢рди рд▓рдХреНрд╖реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рджреГрд╢реНрдп рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ рдФрд░ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рд╕реЗрд╡рд╛ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдореЗрдВ рдкрдВрдХреНрддрд┐рдпрд╛рдБ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддрд╛ рд╣реИред

get_current_activity.sql
 CREATE OR REPLACE FUNCTION activity_hist.get_current_activity( current_host text , current_s_name text , current_s_pass text ) RETURNS BOOLEAN AS $$ DECLARE database_rec record; dblink_str text ; BEGIN EXECUTE 'SELECT dblink_connect(''LINK1'',''host='||current_host||' port=5432 dbname=postgres'|| ' user='||current_s_name||' password='||current_s_pass|| ' '')'; -------------------------------------------------------------------- --GET pg_stat_activity stats INSERT INTO activity_hist.history_pg_stat_activity ( SELECT * FROM dblink('LINK1', 'SELECT now() , datid , datname , pid , usesysid , usename , application_name , client_addr , client_hostname , client_port , backend_start , xact_start , query_start , state_change , wait_event_type , wait_event , state , backend_xid , backend_xmin , query , backend_type FROM pg_stat_activity ') AS t ( timepoint timestamp without time zone , datid oid , datname name , pid integer, usesysid oid , usename name , application_name text , client_addr inet , client_hostname text , client_port integer, backend_start timestamp with time zone , xact_start timestamp with time zone , query_start timestamp with time zone , state_change timestamp with time zone , wait_event_type text , wait_event text , state text , backend_xid xid , backend_xmin xid , query text , backend_type text ) ); --------------------------------------- --ACTIVITY_HIST.HISTORY_LOCKING INSERT INTO activity_hist.history_locking ( SELECT * FROM dblink('LINK1', 'SELECT now() , lock.locktype, lock.relation, lock.mode, lock.transactionid as tid, lock.virtualtransaction as vtid, lock.pid, pg_blocking_pids(lock.pid), lock.granted FROM pg_catalog.pg_locks lock LEFT JOIN pg_catalog.pg_database db ON db.oid = lock.database WHERE NOT lock.pid = pg_backend_pid() ') AS t ( timepoint timestamp without time zone , locktype text , relation oid , mode text , tid xid , vtid text , pid integer , blocking_pids integer[] , granted boolean ) ); PERFORM dblink_disconnect('LINK1'); RETURN TRUE ; END $$ LANGUAGE plpgsql; 

рджреГрд╢реНрдп рдХреЗ рд╕реНрдиреИрдкрд╢реЙрдЯ рдПрдХрддреНрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, systemd рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ:

pg_current_activity.service
 # /etc/systemd/system/pg_current_activity.service [Unit] Description=Collect history of pg_stat_activity , pg_locks Wants=pg_current_activity.timer [Service] Type=forking StartLimitIntervalSec=0 ExecStart=/home/postgres/pgutils/demon/get_current_activity.sh XXXX postgres postgres [Install] WantedBy=multi-user.target 

pg_current_activity.timer
 # /etc/systemd/system/pg_current_activity.timer [Unit] Description=Run pg_current_activity.sh every 1 second Requires=pg_current_activity.service [Timer] Unit=pg_current_activity.service OnCalendar=*:*:0/1 AccuracySec=1 [Install] WantedBy=timers.target 


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рд╕реМрдВрдкреЗрдВ:
# chmod 755 pg_current_activity.timer
# chmod 755 pg_current_activity.service

рд╣рдо рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ:
# systemctl рдбреЗрдорди-рд░реАрд▓реЛрдб
# systemctl рдкреНрд░рд╛рд░рдВрдн pg_current_activity.service

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

рдбреЗрдЯрд╛ рд╕рдВрдЧреНрд░рд╣ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред

3. рд░рдЪрдирд╛рддреНрдордХ рдЗрддрд┐рд╣рд╛рд╕


рд╕рдВрдЧреНрд░рд╣ рдХреЗ рд▓рд┐рдП, рд╡рд┐рднрд╛рдЬрди рддрд╛рд▓рд┐рдХрд╛рдПрдБ * рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

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

рдирдП рдЕрдиреБрднрд╛рдЧреЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг plpgsql function activity_hist.archive_current_activity рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдСрдкрд░реЗрд╢рди рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ (рд╕рдВрдЧреНрд░рд╣_pg_stat_activity рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдЕрдиреБрднрд╛рдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред

рдПрдХ рдирдпрд╛ рдЕрдиреБрднрд╛рдЧ рдмрдирд╛рдПрдВ рдФрд░ рднрд░реЗрдВ
 EXECUTE format( 'CREATE TABLE ' || partition_name || ' PARTITION OF activity_hist.archive_pg_stat_activity FOR VALUES FROM ( %L ) TO ( %L ) ' , to_char(date_trunc('year', partition_min_range ),'YYYY')||'-'|| to_char(date_trunc('month', partition_min_range ),'MM')||'-'|| to_char(date_trunc('day', partition_min_range ),'DD')||' '|| to_char(date_trunc('hour', partition_min_range ),'HH24')||':00', to_char(date_trunc('year', partition_max_range ),'YYYY')||'-'|| to_char(date_trunc('month', partition_max_range ),'MM')||'-'|| to_char(date_trunc('day', partition_max_range ),'DD')||' '|| to_char(date_trunc('hour', partition_max_range ),'HH24')||':00' ); INSERT INTO activity_hist.archive_pg_stat_activity ( SELECT * FROM activity_hist.history_pg_stat_activity WHERE timepoint BETWEEN partition_min_range AND partition_max_range ); 

рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдмрдирд╛рдПрдБ
 EXECUTE format ( 'CREATE INDEX '||index_name|| ' ON '||partition_name||' ( wait_event_type , backend_type , timepoint )' ); EXECUTE format ('CREATE INDEX '||index_name|| ' ON '||partition_name||' ( wait_event_type , backend_type , timepoint , queryid )' ); 

рдкреБрд░рд╛рдиреЗ рдбреЗрдЯрд╛ рдХреЛ рд╣рд┐рд╕реНрдЯреНрд░реА_рд╕реНрдХреНрд░рд┐рдкреНрдЯ_рд╕реНрдЯреИрдЯ_рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА рдЯреЗрдмрд▓ рд╕реЗ рд╣рдЯрд╛ рджреЗрдВ
 DELETE FROM activity_hist.history_pg_stat_activity WHERE timepoint < partition_max_range; 

рдмреЗрд╢рдХ, рд╕рдордп-рд╕рдордп рдкрд░, рдкреБрд░рд╛рдиреЗ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдмреБрдирд┐рдпрд╛рджреА рд░рд┐рдкреЛрд░реНрдЯ


рджрд░рдЕрд╕рд▓, рдпрд╣ рд╕рдм рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред рдмрд╣реБрдд рджреВрд░ рд╕реЗ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд▓рдЧрднрдЧ Oracle AWR рдХреА рдпрд╛рдж рддрд╛рдЬрд╛ рдХрд░рддреА рд╣реИред
рдпрд╣ рдЬреЛрдбрд╝рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП pg_stat_activity рдФрд░ pg_stat_statements рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЯреЗрдмрд▓реНрд╕ рдХреЛ 'queryid' рдХреЙрд▓рдо рдХреЛ рдЯреЗрдмрд▓реНрд╕ 'history_pg_stat_activity', 'ark_pg_stat_activity' рд╕реЗ рдЬреЛрдбрд╝рдХрд░ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕реНрддрдВрдн рдорд╛рди рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рджрд╛рдпрд░реЗ рд╕реЗ рдкрд░реЗ рд╣реИ рдФрд░ рдпрд╣рд╛рдБ рд╡рд░реНрдгрд┐рдд рд╣реИ - pg_stat_statements + pg_stat_activity + loq_query = pg_ash? ред

рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдХреБрд▓ CPU рд╕рдордп


рдкреНрд░рд╢реНрди:
 WITH hist AS ( SELECT aa.query ,aa.queryid , count(*) * interval '1 second' AS duration FROM activity_hist.archive_pg_stat_activity aa WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ( aa.wait_event_type IS NULL ) ANDaa.state = 'active' GROUP BY aa.wait_event_type , aa.wait_event , aa.query ,aa.queryid UNION SELECT ha.query ,ha.queryid, count(*) * interval '1 second' AS duration FROM activity_hist.history_pg_stat_activity_for_reports ha WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ( ha.wait_event_type IS NULL )AND ha.state = 'active' GROUP BY ha.wait_event_type , ha.wait_event , ha.query ,ha.queryid ) SELECT query , queryid , SUM( duration ) as duration FROM hist GROUP BY query , queryid ORDER BY 3 DESC рдЕрдВрддрд░рд╛рд▓ ' WITH hist AS ( SELECT aa.query ,aa.queryid , count(*) * interval '1 second' AS duration FROM activity_hist.archive_pg_stat_activity aa WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ( aa.wait_event_type IS NULL ) ANDaa.state = 'active' GROUP BY aa.wait_event_type , aa.wait_event , aa.query ,aa.queryid UNION SELECT ha.query ,ha.queryid, count(*) * interval '1 second' AS duration FROM activity_hist.history_pg_stat_activity_for_reports ha WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ( ha.wait_event_type IS NULL )AND ha.state = 'active' GROUP BY ha.wait_event_type , ha.wait_event , ha.query ,ha.queryid ) SELECT query , queryid , SUM( duration ) as duration FROM hist GROUP BY query , queryid ORDER BY 3 DESC * рдЕрдВрддрд░рд╛рд▓ ' WITH hist AS ( SELECT aa.query ,aa.queryid , count(*) * interval '1 second' AS duration FROM activity_hist.archive_pg_stat_activity aa WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ( aa.wait_event_type IS NULL ) ANDaa.state = 'active' GROUP BY aa.wait_event_type , aa.wait_event , aa.query ,aa.queryid UNION SELECT ha.query ,ha.queryid, count(*) * interval '1 second' AS duration FROM activity_hist.history_pg_stat_activity_for_reports ha WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ( ha.wait_event_type IS NULL )AND ha.state = 'active' GROUP BY ha.wait_event_type , ha.wait_event , ha.query ,ha.queryid ) SELECT query , queryid , SUM( duration ) as duration FROM hist GROUP BY query , queryid ORDER BY 3 DESC рдмреИрдХрдПрдВрдб' рдФрд░ datname! = 'Postgres' рдФрд░ (aa.wait_event_type рд╣реИ рд╢реВрдиреНрдп) ANDaa.state = WITH hist AS ( SELECT aa.query ,aa.queryid , count(*) * interval '1 second' AS duration FROM activity_hist.archive_pg_stat_activity aa WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ( aa.wait_event_type IS NULL ) ANDaa.state = 'active' GROUP BY aa.wait_event_type , aa.wait_event , aa.query ,aa.queryid UNION SELECT ha.query ,ha.queryid, count(*) * interval '1 second' AS duration FROM activity_hist.history_pg_stat_activity_for_reports ha WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ( ha.wait_event_type IS NULL )AND ha.state = 'active' GROUP BY ha.wait_event_type , ha.wait_event , ha.query ,ha.queryid ) SELECT query , queryid , SUM( duration ) as duration FROM hist GROUP BY query , queryid ORDER BY 3 DESC 

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 ------------------------------------------------------------------- | TOTAL CPU TIME FOR QUERIES : 07:47:36 +----+----------------------------------------+-------------------- | #| queryid| duration +----+----------------------------------------+-------------------- | 1| 389015618226997618| 04:28:58 | 2| | 01:07:29 | 3| 1237430309438971376| 00:59:38 | 4| 4710212362688288619| 00:50:48 | 5| 28942442626229688| 00:15:50 | 6| 9150846928388977274| 00:04:46 | 7| -6572922443698419129| 00:00:06 | 8| | 00:00:01 +----+----------------------------------------+-------------------- 


рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп


рдкреНрд░рд╢реНрди:
 WITH hist AS ( SELECT aa.query ,aa.queryid , count(*) * interval '1 second' AS duration FROM activity_hist.archive_pg_stat_activity aa WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ( aa.wait_event_type IS NOT NULL ) GROUP BY aa.wait_event_type , aa.wait_event , aa.query ,aa.queryid UNION SELECT ha.query ,ha.queryid, count(*) * interval '1 second' AS duration FROM activity_hist.history_pg_stat_activity_for_reports ha WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ( ha.wait_event_type IS NOT NULL ) GROUP BY ha.wait_event_type , ha.wait_event , ha.query ,ha.queryid ) SELECT query , queryid , SUM( duration ) as duration FROM hist GROUP BY query , queryid ORDER BY 3 DESC 

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 ------------------------------------------------------------------- | TOTAL WAITINGS TIME FOR QUERIES : 21:55:04 +----+----------------------------------------+-------------------- | #| queryid| duration +----+----------------------------------------+-------------------- | 1| 389015618226997618| 16:19:05 | 2| | 03:47:04 | 3| 8085340880788646241| 00:40:20 | 4| 4710212362688288619| 00:13:35 | 5| 9150846928388977274| 00:12:25 | 6| 28942442626229688| 00:11:32 | 7| 1237430309438971376| 00:09:45 | 8| 2649515222348904837| 00:09:37 | 9| | 00:03:45 | 10| 3167065002719415275| 00:02:20 | 11| 5731212217001535134| 00:02:13 | 12| 8304755792398128062| 00:01:31 | 13| 2649515222348904837| 00:00:59 | 14| 2649515222348904837| 00:00:22 | 15| | 00:00:12 | 16| 3422818749220588372| 00:00:08 | 17| -5730801771815999400| 00:00:03 | 18| -1473395109729441239| 00:00:02 | 19| 2404820632950544954| 00:00:02 | 20| -6572922443698419129| 00:00:02 | 21| 2369289265278398647| 00:00:01 | 22| 180077086776069052| 00:00:01 +----+----------------------------------------+-------------------- 

рдЦрджрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛


рд╕рдВрдмрдВрдзрд┐рдд рдЦреЛрдЬ:
 WITH hist AS ( SELECT aa.wait_event_type , aa.wait_event FROM activity_hist.archive_pg_stat_activity aa WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND aa.wait_event IS NOT NULL GROUP BY aa.wait_event_type , aa.wait_event UNION SELECT ha.wait_event_type , ha.wait_event FROM activity_hist.history_pg_stat_activity_for_reports ha WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ha.wait_event IS NOT NULL GROUP BY ha.wait_event_type , ha.wait_event ) SELECT wait_event_type , wait_event FROM hist GROUP BY wait_event_type , wait_event ORDER BY 1 ASC,2 ASC ---------------------------------------------------------------------- WITH hist AS ( SELECT aa.wait_event_type , aa.wait_event , aa.query ,aa.queryid , count(*) * interval '1 second' AS duration FROM activity_hist.archive_pg_stat_activity aa WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ( aa.wait_event_type = waitings_stat_rec.wait_event_type AND aa.wait_event = waitings_stat_rec.wait_event ) GROUP BY aa.wait_event_type , aa.wait_event , aa.query ,aa.queryid UNION SELECT ha.wait_event_type , ha.wait_event , ha.query ,ha.queryid, count(*) * interval '1 second' AS duration FROM activity_hist.history_pg_stat_activity_for_reports ha WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND backend_type = 'client backend' AND datname != 'postgres' AND ( ha.wait_event_type = waitings_stat_rec.wait_event_type AND ha.wait_event = waitings_stat_rec.wait_event ) GROUP BY ha.wait_event_type , ha.wait_event , ha.query ,ha.queryid ) SELECT query , queryid , SUM( duration ) as duration FROM hist GROUP BY query , queryid ORDER BY 3 DESC 

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 ------------------------------------------------ | WAITINGS FOR QUERIES +----------------------------------------------- | wait_event_type = Client| | wait_event = ClientRead| | Total time = 00:46:56| ------------------------------------------------ | #| queryid| duration +-----+--------------------+-------------------- | 1| 8085340880788646241| 00:40:20 | 2| | 00:03:45 | 3| 5731212217001535134| 00:01:53 | 4| | 00:00:12 | 5| 9150846928388977274| 00:00:09 | 6| 3422818749220588372| 00:00:08 | 7| 1237430309438971376| 00:00:06 | 8| 28942442626229688| 00:00:05 | 9| 4710212362688288619| 00:00:05 | 10|-5730801771815999400| 00:00:03 | 11| 8304755792398128062| 00:00:02 | 12|-6572922443698419129| 00:00:02 | 13|-1473395109729441239| 00:00:02 | 14| 2404820632950544954| 00:00:02 | 15| 180077086776069052| 00:00:01 | 16| 2369289265278398647| 00:00:01 +----------------------------------------------- | wait_event_type = IO| | wait_event = BufFileRead| | Total time = 00:00:38| ------------------------------------------------ | #| queryid| duration +-----+--------------------+-------------------- | 1| 28942442626229688| 00:00:38 +----------------------------------------------- 

рдмрдВрдж рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕


рдкреНрд░рд╢реНрди:
 SELECT MIN(date_trunc('second',timepoint)) AS started , count(*) * interval '1 second' as duration , pid , blocking_pids , relation , mode , locktype FROM activity_hist.archive_locking al WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND NOT granted AND locktype = 'relation' GROUP BY pid , blocking_pids , relation , mode , locktype UNION SELECT MIN(date_trunc('second',timepoint)) AS started , count(*) * interval '1 second' as duration , pid , blocking_pids , relation , mode , locktype FROM activity_hist.history_locking WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND NOT granted AND locktype = 'relation' GROUP BY pid , blocking_pids , relation , mode , locktype ORDER BY 1 

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
  -------------------------------------------------- -------------------------------------------------- ---------------------------------
 |  рдмрдВрдж рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЗрддрд┐рд╣рд╛рд╕
 + ----- + ---------- + -------------------- + ---------- + -------------------- + -------------------- + -------- ------------ + --------------------
 |  # #  рдкрд┐рдб |  рд╢реБрд░реВ рдХрд┐рдпрд╛ |  рдЕрд╡рдзрд┐ |  block_pids |  рд░рд┐рд╢реНрддрд╛ |  рдореЛрдб |  locktype
 + ----- + ---------- + -------------------- + ---------- + -------------------- + -------------------- + -------- ------------ + --------------------
 |  1 |  26224 |  2019-09-02 19: 32: 16 |  00: 01: 45 |  {26211} |  16541 |  AccessShareLock |  рд╕рдВрдмрдВрдз
 |  2 |  26390 |  2019-09-02 19: 34: 03 |  00: 00: 53 |  {26211} |  16541 |  AccessShareLock |  рд╕рдВрдмрдВрдз
 |  3 |  26391 |  2019-09-02 19: 34: 03 |  00: 00: 53 |  {26211} |  16541 |  AccessShareLock |  рд╕рдВрдмрдВрдз
 |  4 |  26531 |  2019-09-02 19: 35: 27 |  00: 00: 12 |  {26211} |  16541 |  AccessShareLock |  рд╕рдВрдмрдВрдз
 |  5 |  27284 |  2019-09-02 19: 44: 02 |  00: 00: 19 |  {27276} |  16541 |  AccessShareLock |  рд╕рдВрдмрдВрдз
 |  6 |  27283 |  2019-09-02 19: 44: 02 |  00: 00: 19 |  {27276} |  16541 |  AccessShareLock |  рд╕рдВрдмрдВрдз
 |  7 |  27286 |  2019-09-02 19: 44: 02 |  00: 00: 19 |  {27276} |  16541 |  AccessShareLock |  рд╕рдВрдмрдВрдз
 |  8 |  27423 |  2019-09-02 19:45:24 |  00: 00: 12 |  {27394} |  16541 |  AccessShareLock |  рд╕рдВрдмрдВрдз
 |  9 |  27648 |  2019-09-02 19: 48: 06 |  00: 00: 20 |  {27647} |  16541 |  AccessShareLock |  рд╕рдВрдмрдВрдз
 |  10 |  27650 |  2019-09-02 19: 48: 06 |  00: 00: 20 |  {27647} |  16541 |  AccessShareLock |  рд╕рдВрдмрдВрдз
 |  11 |  27735 |  2019-09-02 19: 49: 08 |  00: 00: 06 |  {27650} |  16541 |  AccessExclusiveLock |  рд╕рдВрдмрдВрдз
 |  12 |  28380 |  2019-09-02 19: 56: 03 |  00: 01: 56 |  {28379} |  16541 |  AccessShareLock |  рд╕рдВрдмрдВрдз
 |  13 |  28379 |  2019-09-02 19: 56: 03 |  00: 00: 01 |  28377 |  16541 |  AccessExclusiveLock |  рд╕рдВрдмрдВрдз
 |  |  |  |  |  28376 |  | 

рдмреНрд▓реЙрдХрд┐рдВрдЧ рд╕реВрдЪреА рдЗрддрд┐рд╣рд╛рд╕


рд╕рдВрдмрдВрдзрд┐рдд рдЦреЛрдЬ:
 SELECT blocking_pids FROM activity_hist.archive_locking al WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND NOT granted AND locktype = 'relation' GROUP BY blocking_pids UNION SELECT blocking_pids FROM activity_hist.history_locking WHERE timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') AND NOT granted AND locktype = 'relation' GROUP BY blocking_pids ORDER BY 1 --------------------------------------------------------------- SELECT pid , usename , application_name , datname , MIN(date_trunc('second',timepoint)) as started , count(*) * interval '1 second' as duration , state , query FROM activity_hist.archive_pg_stat_activity WHERE pid= current_pid AND timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') GROUP BY pid , usename , application_name , datname , state_change, state , query UNION SELECT pid , usename , application_name , datname , MIN(date_trunc('second',timepoint)) as started , count(*) * interval '1 second' as duration , state , query FROM activity_hist.history_pg_stat_activity_for_reports WHERE pid= current_pid AND timepoint BETWEEN pg_stat_history_begin+(current_hour_diff * interval '1 hour') AND pg_stat_history_end+(current_hour_diff * interval '1 hour') GROUP BY pid , usename , application_name , datname , state_change, state , query ORDER BY 5 , 1 

рдПрдХ рдЙрджрд╛рд╣рд░рдг:
  -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -----------------------
 рдмреНрд▓реЙрдХрд┐рдВрдЧ рд╕реВрдЪреА рдЗрддрд┐рд╣рд╛рд╕
 + ---- + ---------- + ---------- + -------------------- + - --------- + -------------------- + ------------------- - + ------------------------------ + ----------------- -----------------------
 |  # #  рдкрд┐рдб |  usename |  application_name |  рдбрд╛рдЯрдирд╛рдо |  рд╢реБрд░реВ рдХрд┐рдпрд╛ |  рдЕрд╡рдзрд┐ |  рд░рд╛рдЬреНрдп |  рд╕рд╡рд╛рд▓
 + ---- + ---------- + ---------- + -------------------- + - --------- + -------------------- + ------------------- - + ------------------------------ + ----------------- -----------------------
 |  1 |  26211 |  рдЯрд╕рд░ |  psql |  tdb1 |  2019-09-02 19: 31: 54 |  00: 00: 04 |  рдмреЗрдХрд╛рд░ |
 |  2 |  26211 |  рдЯрд╕рд░ |  psql |  tdb1 |  2019-09-02 19: 31: 58 |  00: 00: 06 |  рд▓реЗрди-рджреЗрди рдореЗрдВ рдирд┐рд╖реНрдХреНрд░рд┐рдп |  рд╢реБрд░реВ;
 |  3 |  26211 |  рдЯрд╕рд░ |  psql |  tdb1 |  2019-09-02 19: 32: 16 |  00: 01: 45 |  рд▓реЗрди-рджреЗрди рдореЗрдВ рдирд┐рд╖реНрдХреНрд░рд┐рдп |  рддрд╛рд▓рд╛ рддрд╛рд▓рд┐рдХрд╛ wafer_data;
 |  4 |  26211 |  рдЯрд╕рд░ |  psql |  tdb1 |  2019-09-02 19: 35: 54 |  00: 01: 23 |  рдмреЗрдХрд╛рд░ |  рдкреНрд░рддрд┐рдмрджреНрдз;
 |  5 |  26211 |  рдЯрд╕рд░ |  psql |  tdb1 |  2019-09-02 19: 38: 46 |  00: 00: 02 |  рд▓реЗрди-рджреЗрди рдореЗрдВ рдирд┐рд╖реНрдХреНрд░рд┐рдп |  рд╢реБрд░реВ;
 |  6 |  26211 |  рдЯрд╕рд░ |  psql |  tdb1 |  2019-09-02 19: 38: 54 |  00: 00: 08 |  рд▓реЗрди-рджреЗрди рдореЗрдВ рдирд┐рд╖реНрдХреНрд░рд┐рдп |  рддрд╛рд▓рд╛ рддрд╛рд▓рд┐рдХрд╛ wafer_data;
 |  7 |  26211 |  рдЯрд╕рд░ |  psql |  tdb1 |  2019-09-02 19: 39: 08 |  00: 42: 42 |  рдмреЗрдХрд╛рд░ |  рдкреНрд░рддрд┐рдмрджреНрдз;
 |  8 |  26211 |  рдЯрд╕рд░ |  psql |  tdb1 |  2019-09-03 07: 12: 07 |  00: 00: 52 |  рд╕рдХреНрд░рд┐рдп |  test_del () рдЪреБрдиреЗрдВ;


рд╡рд┐рдХрд╛рд╕ред


рджрд┐рдЦрд╛рдП рдЧрдП рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рд╢реНрдиреЛрдВ рдФрд░ рдкреНрд░рд╛рдкреНрдд рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдХреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддреЗ рд╕рдордп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреАрд╡рди рдХреЛ рдмрд╣реБрдд рд╕рд░рд▓ рдмрдирд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдмреБрдирд┐рдпрд╛рджреА рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЖрдк рджреВрд░рд╕реНрде рд░реВрдк рд╕реЗ Oracle AWR рдХреА рдпрд╛рдж рджрд┐рд▓рд╛рдиреЗ рд╡рд╛рд▓реА рд░рд┐рдкреЛрд░реНрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдирдореВрдирд╛ рд╕рд╛рд░рд╛рдВрд╢ рд░рд┐рдкреЛрд░реНрдЯ
  + ------------------------------------------------- -----------------------------------
 |  рдЧрддрд┐рд╡рд┐рдзрд┐ рдФрд░ рдЖрд╡рд╛рд╕ рдХреЗ рд▓рд┐рдП рд╕рдореЗрдХрд┐рдд рд░рд┐рдкреЛрд░реНрдЯред  DATETIME: 09/03/2019 14:08
 | ------------------------------------------------- -----------------------------------
 |  HOST: XXXX
 |  BEGIN_SNAPSHOT: 09/02/2019 14:08 END_SNAPSHOT: 09/03/2019 14:00
 | ------------------------------------------------- -----------------------------------
 |  рд╡рд░реНрддрдорд╛рди DATABASES рдЖрдХрд╛рд░:
 |  DATABASE: рдореЙрдирд┐рдЯрд░
 |  рдЖрдХрд╛рд░ (рдПрдордмреА): 1370.00
 | ------------------------------------------------- -----------------------------------
 |  рдЧреНрд░рд╛рд╣рдХ CPU рд╕рдордп: 19:44:22
 |  рдХрд╕реНрдЯрдорд░ рдЯрд╛рдЗрдорд┐рдВрдЧ: 78:49:16
 |
 |  SQL DBTIME: 65:53:09
 |  SQL CPU рд╕рдордп: 19:05:21
 |  рдПрд╕рдХреНрдпреВрдПрд▓ рд╕рдВрд╕реНрдХрд░рдг рд╕рдордп: 21:50:46
 |  SQL IOTIME: 20:53:00
 |  SQL READ TIME: 20:52:55
 |  SQL рд░рд╛рдЗрдЯ рдЯрд╛рдЗрдо: 00:00:05
 |
 |  SQL рдХреЙрд▓: 311293
 -------------------------------------------------- -----------
 |  SQL рд╕рд╛рдЭрд╛ рдХрд┐рдП рдЧрдП рдмреНрд▓реЙрдЧ рдкрдврд╝реЗрдВ: 13351563334
 |  SQL рд╢реЗрдпрд░ рдХрд┐рдП рдЧрдП рдмреНрд▓реЙрдХ рдЕрдВрдХ: 2775427045
 |  SQL рд╢реЗрдпрд░ рдХрд┐рдП рдЧрдП рдмреНрд▓реЙрдХ рд╣рд┐рдЯреНрд╕ / READS%: 20.79
 |  SQL рд╢реЗрдпрд░ рдХрд┐рдП рдЧрдП рдмреНрд▓реЙрдХ рдХрд┐рдП рдЧрдП рджрд┐рдирд╛рдВрдХ: 21105
 |  SQL рд╕рд╛рдЭрд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдмреНрд▓реЙрдЧ: 3656
 |
 |  SQL рдЯреЗрдореНрдкрд░рд░реА рдмреНрд▓рд╛рдХ READS: 7464932
 |  рдПрд╕рдХреНрдпреВрдПрд▓ рдЯреЗрдореНрдкрд░рд░реА рдмреНрд▓реЙрдХреНрд╕ рд╕рд╛рдЗрдЯ: 10176024
 -------------------------------------------------- -----------
 |
 |  WAITINGS рд╕рд╛рдВрдЦреНрдпрд┐рдХреА
 |
 + ------------------------------------------------- -----------------------------------
 |  рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рд╕рдордп рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рд╢реАрд░реНрд╖ 10 рдЕрднрд┐рдпреЛрдЧ
 + ----- + ------------------------------ + ------------ -------- + --------------------
 |  # #  Wait_event_type |  Wait_event |  рдЕрд╡рдзрд┐
 + ----- + ------------------------------ + ------------ -------- + --------------------
 |  1 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  LogicalLauncherMain |  11:21:01
 |  2 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  рдЪреЗрдХрдкреЙрдЗрдВрдЯрдореИрди |  11:20:35
 |  3 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  AutoVacuumMain |  11:20:31
 |  4 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  WalWriterMain |  11:19:35
 |  5 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  BgWriterMain |  10:14:19
 |  6 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  BgWriterHibernate |  01:06:04
 |  7 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  WalSenderMain |  00:04:05
 |  8 |  рдЧреНрд░рд╛рд╣рдХ |  рдЧреНрд░рд╛рд╣рдХ рд╕реЗрд╡рд╛ |  00:04:00
 |  9 |  IO |  BufFileWrite |  00:02:45
 |  10 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00:02:14
 + ----- + ------------------------------ + ------------ -------- + --------------------
 |  рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╢реАрд░реНрд╖ 10 рд╕рдВрд╕реНрдХрд░рдг
 + ----- + ------------------------------ + ------------ -------- + -------------------- + ----------
 |  # #  Wait_event_type |  Wait_event |  рдЕрд╡рдзрд┐ |  % dbtime
 + ----- + ------------------------------ + ------------ -------- + -------------------- + ----------
 |  1 |  рддрд╛рд▓рд╛ |  рд▓реЗрди-рджреЗрди |  11: 55: 37 |  18.1
 |  2 |  IO |  DataFileRead |  07: 19: 43 |  11.12
 |  3 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 46: 54 |  1.19
 |  4 |  рддрд╛рд▓рд╛ |  рд░рд┐рд╢реНрддрд╛ |  00: 40: 37 |  1.03
 |  5 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 31: 08 |  0.79
 |  6 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00: 22: 12 |  0.56
 |  7 |  рдЯрд╛рдЗрдордЖрдЙрдЯ |  PgSleep |  00: 10: 58 |  0.28
 |  8 |  рддрд╛рд▓рд╛ |  рдЯрдкрд▓ |  00: 01: 30 |  0.04
 |  9 |  IO |  BufFileWrite |  00: 01: 16 |  0.03
 |  10 |  IO |  BufFileRead |  00: 00: 37 |  0.02
 + ----- + ------------------------------ + ------------ -------- + -------------------- + ----------
 |  рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рд╡реЙрдЗрдЯ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЫреВрдЯ
 + ----- + ------------------------------ + ------------ --------
 |  # #  Wait_event_type |  рдЕрд╡рдзрд┐
 + ----- + ------------------------------ + ------------ --------
 |  1 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  56:46:10
 |  2 |  IO |  00:05:13
 |  3 |  рдЧреНрд░рд╛рд╣рдХ |  00:04:00
 |  4 |  LWLock |  00:03:07
 + ----- + ------------------------------ + ------------ --------
 |  рдХреБрд▓рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдордп рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдПрдБ, рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП
 + ----- + ------------------------------ + ------------ -------- + --------------------
 |  # #  Wait_event_type |  рдЕрд╡рдзрд┐ |  % dbtime
 + ----- + ------------------------------ + ------------ -------- + --------------------
 |  1 |  рддрд╛рд▓рд╛ |  12: 37: 44 |  19.17
 |  2 |  IO |  07: 21: 40 |  11.17
 |  3 |  LWLock |  00: 53: 26 |  1.35
 |  4 |  рдЧреНрд░рд╛рд╣рдХ |  00: 46: 54 |  1.19
 |  5 |  рдЯрд╛рдЗрдордЖрдЙрдЯ |  00: 10: 58 |  0.28
 |  6 |  рдЖрдИрдкреАрд╕реА |  00: 00: 04 |  0
 + ----- + ------------------------------ + ------------ -------- + --------------------
 |  рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛
 + ----- + ----------------------------- + ---------- + - ------------------ + ---------------------- + -------- ------------
 |  # #  backend_type |  dbname |  Wait_event_type |  Wait_event |  рдЕрд╡рдзрд┐
 + ----- + ----------------------------- + ---------- + - ------------------ + ---------------------- + -------- ------------
 |  1 |  рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рд▓рд╛рдВрдЪрд░ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  LogicalLauncherMain |  11:21:01
 |  2 |  рдЪреЗрдХрдкреЙрдЗрдВрдЯ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  рдЪреЗрдХрдкреЙрдЗрдВрдЯрдореИрди |  11:20:35
 |  3 |  рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рд▓рд╛рдВрдЪрд░ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  AutoVacuumMain |  11:20:31
 |  4 |  рд▓реЗрдЦрдХ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  WalWriterMain |  11:19:35
 |  5 |  рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  BgWriterMain |  10:14:19
 |  6 |  рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  BgWriterHibernate |  01:06:04
 |  7 |  рд╡рд╛рд▓реНрд╕реЗрдВрдбрд░ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  WalSenderMain |  00:04:05
 |  8 |  рд╡рд╛рд▓реНрд╕реЗрдВрдбрд░ |  |  рдЧреНрд░рд╛рд╣рдХ |  рдЧреНрд░рд╛рд╣рдХ рд╕реЗрд╡рд╛ |  00:04:00
 |  9 |  рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  IO |  BufFileWrite |  00:02:45
 |  10 |  рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00:02:05
 |  11 |  рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  IO |  DataFileRead |  00:01:10
 |  12 |  рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  IO |  BufFileRead |  00:01:05
 |  13 |  рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00:00:45
 |  14 |  рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00:00:09
 |  15 |  рд▓реЗрдЦрдХ |  |  IO |  рд╡реЙрдХ рд╡рд╛рдЗрдЯ |  00:00:08
 |  16 |  рд▓реЗрдЦрдХ |  |  LWLock |  рд╡реЙрд▓реНрд░рд╛рдЗрдЯрд▓рд╛рдЗрдЯ |  00:00:04
 |  17 |  рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХ |  |  LWLock |  рд╡реЙрд▓реНрд░рд╛рдЗрдЯрд▓рд╛рдЗрдЯ |  00:00:03
 |  18 |  рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХ |  |  IO |  рд╡реЙрдХ рд╡рд╛рдЗрдЯ |  00:00:02
 |  19 |  рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХ |  |  IO |  DataFileWrite |  00:00:02
 |  20 |  рдЪреЗрдХрдкреЙрдЗрдВрдЯ |  |  IO |  ControlFileSyncUpdate |  00:00:01
 |  21 |  рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00:00:01
 + ----- + ----------------------------- + ---------- + - ------------------ + ---------------------- + -------- ------------
 |  SQL рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ
 + ----- + ------------------------- + ---------- + ------ -------------- + -------------------- + -------------- ------ + ----------
 |  # #  рдХреНрд╡реЗрд░реА |  dbname |  Wait_event_type |  Wait_event |  рдЕрд╡рдзрд┐ |  % dbtime
 + ----- + ------------------------- + ---------- + ------ -------------- + -------------------- + -------------- ------ + ----------
 |  1 |  389015618226997618 |  tdb1 |  рддрд╛рд▓рд╛ |  рд▓реЗрди-рджреЗрди |  09: 47: 43 |  14.87
 |  2 |  389015618226997618 |  tdb1 |  IO |  DataFileRead |  05: 47: 07 |  8.78
 |  3 |  |  tdb1 |  рддрд╛рд▓рд╛ |  рд▓реЗрди-рджреЗрди |  02: 07: 54 |  3.24
 |  4 |  |  tdb1 |  IO |  DataFileRead |  01: 30: 24 |  2.29
 |  5 |  8085340880788646241 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 40: 20 |  1.02
 |  6 |  389015618226997618 |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 20: 41 |  0.52
 |  7 |  389015618226997618 |  tdb1 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00: 17: 30 |  0.44
 |  8 |  2649515222348904837 |  tdb1 |  рдЯрд╛рдЗрдордЖрдЙрдЯ |  PgSleep |  00: 10: 58 |  0.28
 |  9 |  4710212362688288619 |  tdb1 |  рддрд╛рд▓рд╛ |  рд░рд┐рд╢реНрддрд╛ |  00: 10: 44 |  0.27
 |  10 |  9150846928388977274 |  tdb1 |  рддрд╛рд▓рд╛ |  рд░рд┐рд╢реНрддрд╛ |  00: 10: 24 |  0.26
 |  11 |  28942442626229688 |  tdb1 |  рддрд╛рд▓рд╛ |  рд░рд┐рд╢реНрддрд╛ |  00: 07: 48 |  0.2
 |  12 |  1237430309438971376 |  tdb1 |  рддрд╛рд▓рд╛ |  рд░рд┐рд╢реНрддрд╛ |  00: 07: 32 |  0.19
 |  13 |  |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 04: 32 |  0.11
 |  14 |  |  tdb1 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00: 04: 13 |  0.11
 |  15 |  |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 03: 57 |  0.1
 |  16 |  4710212362688288619 |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 02: 26 |  0.06
 |  17 |  3167065002719415275 |  tdb1 |  рддрд╛рд▓рд╛ |  рд░рд┐рд╢реНрддрд╛ |  00: 02: 20 |  0.06
 |  18 |  5731212217001535134 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 01: 53 |  0.05
 |  19 |  1237430309438971376 |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 01: 42 |  0.04
 |  20 |  389015618226997618 |  tdb1 |  рддрд╛рд▓рд╛ |  рдЯрдкрд▓ |  00: 01: 30 |  0.04
 |  21 |  8304755792398128062 |  tdb1 |  рддрд╛рд▓рд╛ |  рд░рд┐рд╢реНрддрд╛ |  00: 01: 29 |  0.04
 |  22 |  28942442626229688 |  tdb1 |  IO |  BufFileWrite |  00: 01: 16 |  0.03
 |  23 |  9150846928388977274 |  tdb1 |  IO |  DataFileRead |  00: 01: 07 |  0.03
 |  24 |  28942442626229688 |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 01: 03 |  0.03
 |  25 |  9150846928388977274 |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 00: 44 |  0.02
 |  26 |  28942442626229688 |  tdb1 |  IO |  BufFileRead |  00: 00: 37 |  0.02
 |  27 |  28942442626229688 |  tdb1 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00: 00: 25 |  0.01
 |  28 |  1237430309438971376 |  tdb1 |  IO |  DataFileRead |  00: 00: 24 |  0.01
 |  29 |  28942442626229688 |  tdb1 |  IO |  DataFileRead |  00: 00: 22 |  0.01
 |  30 |  5731212217001535134 |  tdb1 |  рддрд╛рд▓рд╛ |  рд░рд┐рд╢реНрддрд╛ |  00: 00: 20 |  0.01
 |  31 |  4710212362688288619 |  tdb1 |  IO |  DataFileRead |  00: 00: 19 |  0.01
 |  32 |  9150846928388977274 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 09 |  0
 |  33 |  3422818749220588372 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 08 |  0
 |  34 |  1237430309438971376 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 06 |  0
 |  35 |  389015618226997618 |  tdb1 |  LWLock |  рдмрдлрд░_ рдХреЙрдиреНрдЯреЗрдВрдЯ |  00: 00: 05 |  0
 |  36 |  4710212362688288619 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 05 |  0
 |  37 |  4710212362688288619 |  tdb1 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00: 00: 04 |  0
 |  38 |  28942442626229688 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 04 |  0
 |  39 |  28942442626229688 |  tdb1 |  рдЖрдИрдкреАрд╕реА |  рдкреИрд░реЗрд▓рд▓рдлрд┐рдирд┐рд╢ |  00: 00: 03 |  0
 |  40 |  389015618226997618 |  tdb1 |  IO |  DataFileWrite |  00: 00: 02 |  0
 |  41 |  -573080177181515999400  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 02 |  0
 |  42 |  2404820632950544954 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 02 |  0
 |  43 |  -6572922443698419129 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 02 |  0
 |  44 |  8304755792398128062 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 02 |  0
 |  45 |  -147339510972929441239 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 02 |  0
 |  46 |  |  tdb1 |  LWLock |  рдмрдлрд░_ рдХреЙрдиреНрдЯреЗрдВрдЯ |  00: 00: 01 |  0
 |  47 |  180077086776069052 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 01 |  0
 |  48 |  |  tdb1 |  IO |  DataFileWrite |  00: 00: 01 |  0
 |  49 |  28942442626229688 |  tdb1 |  рдЖрдИрдкреАрд╕реА |  MessageQueueReceive |  00: 00: 01 |  0
 |  50 |  2369289265278398647 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 01 |  0
 |  51 |  9150846928388977274 |  tdb1 |  IO |  DataFileWrite |  00: 00: 01 |  0
 + ----- + ------------------------- + ---------- + ------ -------------- + -------------------- + -------------- ------ + ----------
 |
 |  рдЧреНрд░рд╛рд╣рдХ SQL рд╕рд╛рдВрдЦреНрдпрд┐рдХреА
 |
 + ------------------------------------------------- -----------------------------------
 |  CLIENT SQL рджреНрд╡рд╛рд░рд╛ рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + --------------------
 |  рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп |  рдХреЙрд▓ |  % dbtime |  % CPU |  % IO |  dbname |  queryid
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + --------------------
 |  06: 43: 19 |  36 |  10.2 |  85 рд╕рд┐рддрдВрдмрд░ |  17.38 |  tdb1 |  389015618226997618
 |  02: 06: 53 |  715 |  3.21 |  0.85 |  0.06 |  tdb1 |  1237430309438971376
 |  01: 52: 07 |  720 |  2.84 |  1.19 |  0.08 |  tdb1 |  4710212362688288619
 |  00: 39: 03 |  357 |  0.99 |  1.02 |  0.33 |  tdb1 |  28942442626229688
 |  00: 22: 00 |  8 |  0.56 |  0.96 |  0 |  tdb1 |  2649515222348904837
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + --------------------
 |  рд╕реАрдкреАрдпреВ рдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рдСрд░реНрдбрд░ рдХреА рдЧрдИ SQL SQL
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  cpu рд╕рдордп |  рдХреЙрд▓ |  % dbtime | Total_time |  % CPU |  % IO |  dbname |  queryid
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  16: 14: 38 |  36 |  10.2 |  06: 43: 19 |  85 рд╕рд┐рддрдВрдмрд░ |  17.38 |  tdb1 |  389015618226997618
 |  00: 13: 38 |  720 |  2.84 |  01: 52: 07 |  1.19 |  0.08 |  tdb1 |  4710212362688288619
 |  00: 11: 39 |  357 |  0.99 |  00: 39: 03 |  1.02 |  0.33 |  tdb1 |  28942442626229688
 |  00: 10: 58 |  8 |  0.56 |  00: 22: 00 |  0.96 |  0 |  tdb1 |  2649515222348904837
 |  00: 09: 44 |  715 |  3.21 |  02: 06: 53 |  0.85 |  0.06 |  tdb1 |  1237430309438971376
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ I / O рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рджреНрд╡рд╛рд░рд╛ рдЖрджреЗрд╢рд┐рдд SQL SQL
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  io_wait рд╕рдордп |  рдХреЙрд▓ |  % dbtime | Total_time |  % CPU |  % IO |  dbname |  queryid
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  05: 47: 09 |  36 |  10.2 |  06: 43: 19 |  85 рд╕рд┐рддрдВрдмрд░ |  17.38 |  tdb1 |  389015618226997618
 |  00: 02: 15 |  357 |  0.99 |  00: 39: 03 |  1.02 |  0.33 |  tdb1 |  28942442626229688
 |  00: 00: 24 |  715 |  3.21 |  02: 06: 53 |  0.85 |  0.06 |  tdb1 |  1237430309438971376
 |  00: 00: 19 |  720 |  2.84 |  01: 52: 07 |  1.19 |  0.08 |  tdb1 |  4710212362688288619
 |  00: 00: 00 |  8 |  0.56 |  00: 22: 00 |  0.96 |  0 |  tdb1 |  2649515222348904837
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  рд╕рд╛рдЭрд╛ рдмрдлрд╝рд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд SQL рдСрд░реНрдбрд░
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  рдмрдлрд╝рд░реНрд╕ рдкрдврд╝рддрд╛ рд╣реИ |  рдХреЙрд▓ |  % dbtime | Total_time |  % CPU |  % IO |  dbname |  queryid
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  2562353244 |  36 |  10.2 |  06: 43: 19 |  85 рд╕рд┐рддрдВрдмрд░ |  17.38 |  tdb1 |  389015618226997618
 |  11041689 |  357 |  0.99 |  00: 39: 03 |  1.02 |  0.33 |  tdb1 |  28942442626229688
 |  3303551 |  715 |  3.21 |  02: 06: 53 |  0.85 |  0.06 |  tdb1 |  1237430309438971376
 |  3242892 |  720 |  2.84 |  01: 52: 07 |  1.19 |  0.08 |  tdb1 |  4710212362688288619
 |  0 |  8 |  0.56 |  00: 22: 00 |  0.96 |  0 |  tdb1 |  2649515222348904837
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  CLIENT SQL рдХреЛ рдбрд┐рд╕реНрдХ рд░реАрдбрд░реНрд╕ рдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  рдкрдврд╝рдиреЗ рдХрд╛ рд╕рдордп |  рдХреЙрд▓ |  % dbtime | Total_time |  % CPU |  % IO |  dbname |  queryid
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  03: 37: 46 |  36 |  10.2 |  06: 43: 19 |  85 рд╕рд┐рддрдВрдмрд░ |  17.38 |  tdb1 |  389015618226997618
 |  00: 04: 07 |  357 |  0.99 |  00: 39: 03 |  1.02 |  0.33 |  tdb1 |  28942442626229688
 |  00: 00: 59 |  720 |  2.84 |  01: 52: 07 |  1.19 |  0.08 |  tdb1 |  4710212362688288619
 |  00: 00: 42 |  715 |  3.21 |  02: 06: 53 |  0.85 |  0.06 |  tdb1 |  1237430309438971376
 |  00: 00: 00 |  8 |  0.56 |  00: 22: 00 |  0.96 |  0 |  tdb1 |  2649515222348904837
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  CLIENT SQL рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЧрдП рдЖрджреЗрд╢
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  рдХреЙрд▓ |  рдкрдВрдХреНрддрд┐рдпрд╛рдБ |  % dbtime | Total_time |  % CPU |  % IO |  dbname |  queryid
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  720 |  720 |  2.84 |  01: 52: 07 |  1.19 |  0.08 |  tdb1 |  4710212362688288619
 |  715 |  715 |  3.21 |  02: 06: 53 |  0.85 |  0.06 |  tdb1 |  1237430309438971376
 |  357 |  0 |  0.99 |  00: 39: 03 |  1.02 |  0.33 |  tdb1 |  28942442626229688
 |  36 |  36 |  10.2 |  06: 43: 19 |  85 рд╕рд┐рддрдВрдмрд░ |  17.38 |  tdb1 |  389015618226997618
 |  8 |  8 |  0.56 |  00: 22: 00 |  0.96 |  0 |  tdb1 |  2649515222348904837
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  SQL рдкрд╛рда рдХреА рдкреВрд░реА рд╕реВрдЪреА
 ----------------------------------------------
 ...

рдЬрд╛рд░реА рд░рдЦрд╛ рдЬрд╛рдПред рдЕрдЧрд▓рд╛ рдЪрд░рдг рд▓реЙрдХ рдЗрддрд┐рд╣рд╛рд╕ (pg_stat_locks) рдХрд╛ рдЧрдарди рд╣реИ, рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЛ рднрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдгред

Source: https://habr.com/ru/post/hi467181/


All Articles