āϏāĻŽāϏā§āϝāĻž āĻāĻ āύ
PostgreSQL āĻĒā§āϰāĻļā§āύāĻā§āϞāĻŋ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻžāϰā§āϝāĻāϞāĻžāĻĒā§āϰ āĻāϤāĻŋāĻšāĻžāϏ āĻŦāĻŋāĻļā§āϞā§āώāĻŖ āĻāϰāĻžāϰ āĻā§āώāĻŽāϤāĻž, āĻŦāĻŋāĻļā§āώ āĻāϰā§, āĻ āĻĒā§āĻā§āώāĻž, āϞāĻ āĻāĻŦāĻ āĻā§āĻŦāĻŋāϞ āĻĒāϰāĻŋāϏāĻāĻā§āϝāĻžāύ, āĻā§āĻŦ āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤
āĻāĻĒāϞāĻŦā§āϧ āϏā§āϝā§āĻ
: āĻāĻāĻāĻŋ āĻā§āĻŦ āĻāĻāϰā§āώāĻŖā§āϝāĻŧ āϏāĻŽāĻžāϧāĻžāύ, āĻāĻŋāύā§āϤ⧠pg_stat_activity āĻāĻŦāĻ pg_locks āĻāϰ āĻā§āύ āĻāϤāĻŋāĻšāĻžāϏ āύā§āĻāĨ¤
:
ÂĢāϏāĻŽāϏā§āϤ āĻāĻŽā§ āĻĨāĻžāĻāĻž āϤāĻĨā§āϝ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ RAM-āϤ⧠āϏāĻāϰāĻā§āώāĻŋāϤ āĻšāϝāĻŧ āĻāĻŦāĻ āĻļā§āώ āϏāĻā§āĻāĻŋāϤ āϰā§āĻāϰā§āĻĄā§āϰ āϏāĻāĻā§āϝāĻž āĻĻā§āĻŦāĻžāϰāĻž āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŋāϤ āĻšāϝāĻŧ āĻŽā§āĻŽāϰāĻŋāϰ āĻĒāϰāĻŋāĻŽāĻžāĻŖāĨ¤
queryid āĻā§āώā§āϤā§āϰāĻāĻŋ āϝā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ - pg_stat_statements āĻāĻā§āϏāĻā§āύāĻļāύ āĻĨā§āĻā§ āĻāĻāĻ queryid (āĻĒā§āϰāĻžāĻ-āĻāύāϏā§āĻāϞā§āĻļāύ āĻĒā§āϰāϝāĻŧā§āĻāύ)āĨ¤
āĻāĻāĻŋ āĻ āĻŦāĻļā§āϝāĻ āĻ āύā§āĻ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāĻŦā§, āϤāĻŦā§ āϏāĻŦāĻā§āϝāĻŧā§ āĻāĻžāĻŽā§āϞāĻžāϰ āĻŦāĻŋāώāϝāĻŧ āĻšāϞ āĻĒā§āϰāĻĨāĻŽ āĻĒāϝāĻŧā§āύā§āĻāĨ¤"āϏāĻŽāϏā§āϤ āĻāĻŽā§ āĻĨāĻžāĻāĻž āϤāĻĨā§āϝ āĻļā§āϧā§āĻŽāĻžāϤā§āϰ RAM āĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧ â, āĻ āϰā§āĻĨāĻžā§ āϞāĻā§āώā§āϝ āĻŦā§āϏ āĻāĻĒāϰ āĻāĻāĻāĻŋ āĻĒā§āϰāĻāĻžāĻŦ āĻāĻā§. āĻāĻĒāϰāύā§āϤā§, āĻā§āύ āϞāĻ āĻāϤāĻŋāĻšāĻžāϏ āĻāĻŦāĻ āĻā§āĻŦāĻŋāϞ āĻĒāϰāĻŋāϏāĻāĻā§āϝāĻžāύ āύā§āĻ. āϏā§āĻā§āϞā§. āϏāĻŽāĻžāϧāĻžāύāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖāϤ āĻ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻŦāϞāĻž āĻšāϝāĻŧ: "āĻāύāϏā§āĻāϞā§āĻļāύā§āϰ āĻāύā§āϝ āĻāĻāύāĻ āĻā§āύ āĻĒā§āϰāϏā§āϤā§āϤ āĻĒā§āϝāĻžāĻā§āĻ āύā§āĻ. āĻāϤā§āϏāĻā§āϞāĻŋ āĻĄāĻžāĻāύāϞā§āĻĄ āĻāϰāĻžāϰ āĻāĻŦāĻ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāĻāĻŋ āύāĻŋāĻā§āĻ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāĻžāϰ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻĻā§āĻāϝāĻŧāĻž āĻšāĻā§āĻā§āĨ¤ āĻāĻĒāύāĻžāĻā§ āĻĒā§āϰāĻĨāĻŽā§ āĻāĻĒāύāĻžāϰ āϏāĻžāϰā§āĻāĻžāϰā§āϰ āĻāύā§āϝ "devel" āĻĒā§āϝāĻžāĻā§āĻāĻāĻŋ āĻāύāϏā§āĻāϞ āĻāϰāϤ⧠āĻšāĻŦā§ āĻāĻŦāĻ PATH āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ⧠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
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. āĻŦāϰā§āϤāĻŽāĻžāύ āĻāϤāĻŋāĻšāĻžāϏ āĻĒā§āϰāĻŖ āĻāϰāĻž
āϏāϰāĻžāϏāϰāĻŋ āĻāĻŋāĻ āϏā§āύā§āϝāĻžāĻĒāĻļāĻ āϏāĻāĻā§āϰāĻš āĻāϰāϤā§, āĻāĻāĻāĻŋ āĻŦā§āϝāĻžāĻļ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āϝāĻž 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 0plpgsql 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;āĻāĻŋāĻ āϏā§āύā§āϝāĻžāĻĒāĻļāĻ āϏāĻāĻā§āϰāĻš āĻāϰāϤā§, āϏāĻŋāϏā§āĻā§āĻŽāĻĄ āĻĒāϰāĻŋāώā§āĻŦāĻž āĻāĻŦāĻ āĻĻā§āĻāĻŋ āϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ:
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 10.124.70.40 postgres postgres
[Install]
WantedBy=multi-user.targetpg_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 āĻĢāĻžāĻāĻļāύ activity_hist.archive_current_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 )'
);History_pg_stat_activity āĻā§āĻŦāĻŋāϞ āĻĨā§āĻā§ āĻĒā§āϰāĻžāύ⧠āĻĄā§āĻāĻž āϏāϰāĻžāύ⧠āĻšāĻā§āĻā§
DELETE
FROM activity_hist.history_pg_stat_activity
WHERE timepoint < partition_max_range;āĻ āĻŦāĻļā§āϝāĻ, āϏāĻŽāϝāĻŧā§ āϏāĻŽāϝāĻŧā§, āĻĒā§āϰāĻžāύ⧠āĻŦāĻŋāĻāĻžāĻāĻā§āϞāĻŋ āĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻšāĻŋāϏāĻžāĻŦā§ āĻŽā§āĻā§ āĻĢā§āϞāĻž āĻšāϝāĻŧāĨ¤
āĻŽā§āϞāĻŋāĻ āĻĒā§āϰāϤāĻŋāĻŦā§āĻĻāύ
āĻāϏāϞ⧠āĻāϏāĻŦ āĻā§āύ āĻāϰāĻž āĻšāĻā§āĻā§? āĻā§āĻŦ āĻ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ Oracle āĻāϰ AWR-āĻāϰ āϏā§āĻŽāϰāĻŖ āĻāϰāĻŋāϝāĻŧā§ āĻĻā§āĻāϝāĻŧāĻž āĻĒā§āϰāϤāĻŋāĻŦā§āĻĻāύāĻā§āϞāĻŋ āĻĒā§āϤā§āĨ¤
āĻāĻāĻž āϝā§āĻ āĻāϰāĻž āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ āϝ⧠āϰāĻŋāĻĒā§āϰā§āĻ āĻĒāĻžāĻāϝāĻŧāĻžāϰ āĻāύā§āϝ, āĻāĻĒāύāĻžāĻā§ pg_stat_activity āĻāĻŦāĻ pg_stat_statements āĻāĻŋāĻ āĻāϰ āĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āϏāĻāϝā§āĻ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāĻŦā§āĨ¤ 'history_pg_stat_activity', 'archive_pg_stat_activity' āĻā§āĻŦāĻŋāϞ⧠āĻāĻāĻāĻŋ 'queryid' āĻāϞāĻžāĻŽ āϝā§āĻ āĻāϰ⧠āϏāĻžāϰāĻŖāĻŋāĻā§āϞāĻŋāĻā§ āϞāĻŋāĻā§āĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻāĻāĻāĻŋ āĻāϞāĻžāĻŽ āĻŽāĻžāύ āϝā§āĻ āĻāϰāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋ āĻāĻ āύāĻŋāĻŦāύā§āϧā§āϰ āϏā§āϝā§āĻā§āϰ āĻŦāĻžāĻāϰ⧠āĻāĻŦāĻ āĻāĻāĻžāύ⧠āĻŦāϰā§āĻŖāύāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ - .
āĻĒā§āϰāĻļā§āύā§āϰ āĻāύā§āϝ āĻŽā§āĻ 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āĻāĻĻāĻžāĻšāϰāĻŖ:
-------------------------------------------------------------------
| 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āĻāĻĻāĻžāĻšāϰāĻŖ:
-------------------------------------------------- -------------------------------------------------- ---------------------------------- | āϞāĻāĻĄ āĻĒā§āϰāϏā§āϏ āĻāϤāĻŋāĻšāĻžāϏ +------+----------+------+--------------------- ---------------------------------- +------------------------------- +------------------- | #| āĻĒāĻŋāĻĄ| āĻļā§āϰ⧠| āϏāĻŽāϝāĻŧāĻāĻžāϞ| āĻŦā§āϞāĻāĻŋāĻ_āĻĒāĻŋāĻĄāϏ| āϏāĻŽā§āĻĒāϰā§āĻ | āĻŽā§āĻĄ| āϞāĻ āĻāĻžāĻāĻĒ +---------+---------+------+---------- +--------- -----------+------------+---------------------+------ -------------- | 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| āĻāĻā§āϏāĻā§āϞā§āϏāĻŋāĻ āϞāĻ| āϏāĻŽā§āĻĒāϰā§āĻ | 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| āĻāĻā§āϏāĻā§āϞā§āϏāĻŋāĻ āϞāĻ| āϏāĻŽā§āĻĒāϰā§āĻ | | | | | 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āĻāĻĻāĻžāĻšāϰāĻŖ:
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ----------------------- āĻŦā§āϞāĻāĻŋāĻ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āĻāϤāĻŋāĻšāĻžāϏ +------+--------------------- -------------+------------+---------------------- -------------------------------------------------- ----------------------------------------------------------------- --- | #| āĻĒāĻŋāĻĄ| āĻāĻāĻāύā§āĻŽ| āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ_āύāĻžāĻŽ| datname| āĻļā§āϰ⧠| āϏāĻŽāϝāĻŧāĻāĻžāϞ| āϰāĻžāĻā§āϝ| āĻĒā§āϰāĻļā§āύ +---------+---------+----------+------+ --------- -------------------------------------------------------------- -------------------------------------------------------------- ----------------- | 1| 26211| tuser| psql| tdb1| 2019-09-02 19:31:54| 00:00:04 | āύāĻŋāώā§āĻā§āϰāĻŋāϝāĻŧ| | 2| 26211| tuser| psql| tdb1| 2019-09-02 19:31:58 | 00:00:06 | āϞā§āύāĻĻā§āύ⧠āύāĻŋāώā§āĻā§āϰāĻŋāϝāĻŧ| āĻļā§āϰ⧠| 3| 26211| tuser| psql| tdb1| 2019-09-02 19:32:16| 00:01:45 | āϞā§āύāĻĻā§āύ⧠āύāĻŋāώā§āĻā§āϰāĻŋāϝāĻŧ| āϞāĻ āĻā§āĻŦāĻŋāϞ wafer_data; | 4| 26211| tuser| psql| tdb1| 2019-09-02 19:35:54| 00:01:23 | āύāĻŋāώā§āĻā§āϰāĻŋāϝāĻŧ| āĻ āĻā§āĻā§āĻāĻžāϰ āĻāϰāĻž | 5| 26211| tuser| psql| tdb1| 2019-09-02 19:38:46| 00:00:02 | āϞā§āύāĻĻā§āύ⧠āύāĻŋāώā§āĻā§āϰāĻŋāϝāĻŧ| āĻļā§āϰ⧠| 6| 26211| tuser| psql| tdb1| 2019-09-02 19:38:54| 00:00:08 | āϞā§āύāĻĻā§āύ⧠āύāĻŋāώā§āĻā§āϰāĻŋāϝāĻŧ| āϞāĻ āĻā§āĻŦāĻŋāϞ wafer_data; | 7| 26211| tuser| psql| tdb1| 2019-09-02 19:39:08 | 00:42:42 | āύāĻŋāώā§āĻā§āϰāĻŋāϝāĻŧ| āĻ āĻā§āĻā§āĻāĻžāϰ āĻāϰāĻž | 8| 26211| tuser| psql| tdb1| 2019-09-03 07:12:07 | 00:00:52 | āϏāĻā§āϰāĻŋāϝāĻŧ| test_del();
āĻŦāĻŋāĻāĻžāĻļāĨ¤
āĻĻā§āĻāĻžāύ⧠āĻŽā§āϞāĻŋāĻ āĻĒā§āϰāĻļā§āύ āĻāĻŦāĻ āĻĢāϞāĻžāĻĢāϞ āϰāĻŋāĻĒā§āϰā§āĻ āĻāϰā§āĻŽāĻā§āώāĻŽāϤāĻž āĻāĻāύāĻž āĻŦāĻŋāĻļā§āϞā§āώāĻŖ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻā§āĻŦāύ āĻ
āύā§āĻ āϏāĻšāĻ āĻāϰ⧠āϤā§āϞā§.
āĻŽā§āϞāĻŋāĻ āĻĒā§āϰāĻļā§āύā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰā§, āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻĒā§āϰāϤāĻŋāĻŦā§āĻĻāύ āĻĒā§āϤ⧠āĻĒāĻžāϰā§āύ āϝāĻž āĻ
āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ Oracle āĻāϰ AWR āĻāϰ āϏāĻžāĻĨā§ āϏāĻžāĻĻā§āĻļā§āϝāĻĒā§āϰā§āĻŖāĨ¤
āϏāĻāĻā§āώāĻŋāĻĒā§āϤ āĻĒā§āϰāϤāĻŋāĻŦā§āĻĻāύā§āϰ āĻāĻĻāĻžāĻšāϰāĻŖ
+------------------------------------------------ ----------------------------------- | āĻā§āϰāĻŋāϝāĻŧāĻžāĻāϞāĻžāĻĒ āĻāĻŦāĻ āĻ āĻĒā§āĻā§āώāĻžāϰ āĻāύā§āϝ āĻāĻāϤā§āϰāĻŋāϤ āĻĒā§āϰāϤāĻŋāĻŦā§āĻĻāύāĨ¤ DATETIME : 03.09.2019 14:08 |------------------------------------------------------------------------------------ | HOST :10.124.70.40 | BEGIN_SNAPSHOT :02.09.2019 14:08 END_SNAPSHOT : 03.09.2019 14:00 |------------------------------------------------------------------------------------ | CURRENT DATABASES SIZE : | DATABASE :monitor | SIZE (MB) :1370.00 |------------------------------------------------------------------------------------ | CLUSTER CPU TIME : 19:44:22 | CLUSTER WAITINGS TIME : 78:49:16 | | SQL DBTIME : 65:53:09 | SQL CPU TIME : 19:05:21 | SQL WAITINGS TIME : 21:50:46 | SQL IOTIME : 20:53:00 | SQL READ TIME : 20:52:55 | SQL WRITE TIME : 00:00:05 | | SQL CALLS : 311293 ------------------------------------------------------------- | SQL SHARED BLOCKS READS : 13351563334 | SQL SHARED BLOCKS HITS : 2775427045 | SQL SHARED BLOCKS HITS/READS % : 20.79 | SQL SHARED BLOCKS DIRTED : 21105 | SQL SHARED BLOCKS WRITTEN : 3656 | | SQL TEMPORARY BLOCKS READS : 7464932 | SQL TEMPORARY BLOCKS WRITTEN : 10176024 ------------------------------------------------------------- | | WAITINGS STATICTICS | +------------------------------------------------------------------------------------ | TOP 10 WAITINGS BY TOTAL WAIT TIME FOR SYSTEM PROCESSES +-----+------------------------------+--------------------+-------------------- | #| wait_event_type| wait_event| duration +-----+------------------------------+--------------------+-------------------- | 1| Activity| LogicalLauncherMain| 11:21:01 | 2| Activity| CheckpointerMain| 11:20:35 | 3| Activity| AutoVacuumMain| 11:20:31 | 4| Activity| WalWriterMain| 11:19:35 | 5| Activity| BgWriterMain| 10:14:19 | 6| Activity| BgWriterHibernate| 01:06:04 | 7| Activity| WalSenderMain| 00:04:05 | 8| Client| ClientWrite| 00:04:00 | 9| IO| BufFileWrite| 00:02:45 | 10| LWLock| buffer_mapping| 00:02:14 +-----+------------------------------+--------------------+-------------------- | TOP 10 WAITINGS BY TOTAL WAIT TIME FOR CLIENTS PROCESSES +-----+------------------------------+--------------------+--------------------+---------- | #| wait_event_type| wait_event| duration| % dbtime +-----+------------------------------+--------------------+--------------------+---------- | 1| Lock| transactionid| 11:55:37| 18.1 | 2| IO| DataFileRead| 07:19:43| 11.12 | 3| Client| ClientRead| 00:46:54| 1.19 | 4| Lock| relation| 00:40:37| 1.03 | 5| LWLock| buffer_mapping| 00:31:08| 0.79 | 6| LWLock| buffer_io| 00:22:12| 0.56 | 7| Timeout| PgSleep| 00:10:58| 0.28 | 8| Lock| tuple| 00:01:30| 0.04 | 9| IO| BufFileWrite| 00:01:16| 0.03 | 10| IO| BufFileRead| 00:00:37| 0.02 +-----+------------------------------+--------------------+--------------------+---------- | WAITINGS TYPES BY TOTAL WAIT TIME, FOR SYSTEM PROCESSES +-----+------------------------------+-------------------- | #| wait_event_type| duration +-----+------------------------------+-------------------- | 1| Activity| 56:46:10 | 2| IO| 00:05:13 | 3| Client| 00:04:00 | 4| LWLock| 00:03:07 +-----+------------------------------+-------------------- | WAITINGS TYPES BY TOTAL WAIT TIME, FOR CLIENTS PROCESSES +-----+------------------------------+--------------------+-------------------- | #| wait_event_type| duration| % dbtime +-----+------------------------------+--------------------+-------------------- | 1| Lock| 12:37:44| 19.17 | 2| IO| 07:21:40| 11.17 | 3| LWLock| 00:53:26| 1.35 | 4| Client| 00:46:54| 1.19 | 5| Timeout| 00:10:58| 0.28 | 6| IPC| 00:00:04| 0 +-----+------------------------------+--------------------+-------------------- | WAITINGS FOR SYSTEM PROCESSES +-----+-----------------------------+----------+--------------------+----------------------+-------------------- | #| backend_type| dbname| wait_event_type| wait_event| duration +-----+-----------------------------+----------+--------------------+----------------------+-------------------- | 1| logical replication launcher| | Activity| LogicalLauncherMain| 11:21:01 | 2| checkpointer| | Activity| CheckpointerMain| 11:20:35 | 3| autovacuum launcher| | Activity| AutoVacuumMain| 11:20:31 | 4| walwriter| | Activity| WalWriterMain| 11:19:35 | 5| background writer| | Activity| BgWriterMain| 10:14:19 | 6| background writer| | Activity| BgWriterHibernate| 01:06:04 | 7| walsender| | Activity| WalSenderMain| 00:04:05 | 8| walsender| | Client| ClientWrite| 00:04:00 | 9| parallel worker| tdb1| IO| BufFileWrite| 00:02:45 | 10| parallel worker| tdb1| LWLock| buffer_mapping| 00:02:05 | 11| parallel worker| tdb1| IO| DataFileRead| 00:01:10 | 12| parallel worker| tdb1| IO| BufFileRead| 00:01:05 | 13| parallel worker| tdb1| LWLock| buffer_io| 00:00:45 | 14| autovacuum worker| tdb1| LWLock| buffer_mapping| 00:00:09 | 15| walwriter| | IO| WALWrite| 00:00:08 | 16| walwriter| | LWLock| WALWriteLock| 00:00:04 | 17| background writer| | LWLock| WALWriteLock| 00:00:03 | 18| background writer| | IO| WALWrite| 00:00:02 | 19| background writer| | IO| DataFileWrite| 00:00:02 | 20| checkpointer| | IO| ControlFileSyncUpdate| 00:00:01 | 21| autovacuum worker| tdb1| LWLock| buffer_io| 00:00:01 +-----+-----------------------------+----------+--------------------+----------------------+-------------------- | WAITINGS FOR SQL +-----+-------------------------+----------+--------------------+--------------------+--------------------+---------- | #| queryid| dbname| wait_event_type| wait_event| duration| % dbtime +-----+-------------------------+----------+--------------------+--------------------+--------------------+---------- | 1| 389015618226997618| tdb1| Lock| transactionid| 09:47:43| 14.87 | 2| 389015618226997618| tdb1| IO| DataFileRead| 05:47:07| 8.78 | 3| | tdb1| Lock| transactionid| 02:07:54| 3.24 | 4| | tdb1| IO| DataFileRead| 01:30:24| 2.29 | 5| 8085340880788646241| tdb1| Client| ClientRead| 00:40:20| 1.02 | 6| 389015618226997618| tdb1| LWLock| buffer_mapping| 00:20:41| 0.52 | 7| 389015618226997618| tdb1| LWLock| buffer_io| 00:17:30| 0.44 | 8| 2649515222348904837| tdb1| Timeout| PgSleep| 00:10:58| 0.28 | 9| 4710212362688288619| tdb1| Lock| relation| 00:10:44| 0.27 | 10| 9150846928388977274| tdb1| Lock| relation| 00:10:24| 0.26 | 11| 28942442626229688| tdb1| Lock| relation| 00:07:48| 0.2 | 12| 1237430309438971376| tdb1| Lock| relation| 00:07:32| 0.19 | 13| | tdb1| LWLock| buffer_mapping| 00:04:32| 0.11 | 14| | tdb1| LWLock| buffer_io| 00:04:13| 0.11 | 15| | tdb1| Client| ClientRead| 00:03:57| 0.1 | 16| 4710212362688288619| tdb1| LWLock| buffer_mapping| 00:02:26| 0.06 | 17| 3167065002719415275| tdb1| Lock| relation| 00:02:20| 0.06 | 18| 5731212217001535134| tdb1| Client| ClientRead| 00:01:53| 0.05 | 19| 1237430309438971376| tdb1| LWLock| buffer_mapping| 00:01:42| 0.04 | 20| 389015618226997618| tdb1| Lock| tuple| 00:01:30| 0.04 | 21| 8304755792398128062| tdb1| Lock| relation| 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| buffer_mapping| 00:01:03| 0.03 | 25| 9150846928388977274| tdb1| LWLock| buffer_mapping| 00:00:44| 0.02 | 26| 28942442626229688| tdb1| IO| BufFileRead| 00:00:37| 0.02 | 27| 28942442626229688| tdb1| LWLock| buffer_io| 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| Lock| relation| 00:00:20| 0.01 | 31| 4710212362688288619| tdb1| IO| DataFileRead| 00:00:19| 0.01 | 32| 9150846928388977274| tdb1| Client| ClientRead| 00:00:09| 0 | 33| 3422818749220588372| tdb1| Client| ClientRead| 00:00:08| 0 | 34| 1237430309438971376| tdb1| Client| ClientRead| 00:00:06| 0 | 35| 389015618226997618| tdb1| LWLock| buffer_content| 00:00:05| 0 | 36| 4710212362688288619| tdb1| Client| ClientRead| 00:00:05| 0 | 37| 4710212362688288619| tdb1| LWLock| buffer_io| 00:00:04| 0 | 38| 28942442626229688| tdb1| Client| ClientRead| 00:00:04| 0 | 39| 28942442626229688| tdb1| IPC| ParallelFinish| 00:00:03| 0 | 40| 389015618226997618| tdb1| IO| DataFileWrite| 00:00:02| 0 | 41| -5730801771815999400| tdb1| Client| ClientRead| 00:00:02| 0 | 42| 2404820632950544954| tdb1| Client| ClientRead| 00:00:02| 0 | 43| -6572922443698419129| tdb1| Client| ClientRead| 00:00:02| 0 | 44| 8304755792398128062| tdb1| Client| ClientRead| 00:00:02| 0 | 45| -1473395109729441239| tdb1| Client| ClientRead| 00:00:02| 0 | 46| | tdb1| LWLock| buffer_content| 00:00:01| 0 | 47| 180077086776069052| tdb1| Client| ClientRead| 00:00:01| 0 | 48| | tdb1| IO| DataFileWrite| 00:00:01| 0 | 49| 28942442626229688| tdb1| IPC| MessageQueueReceive| 00:00:01| 0 | 50| 2369289265278398647| tdb1| Client| ClientRead| 00:00:01| 0 | 51| 9150846928388977274| tdb1| IO| DataFileWrite| 00:00:01| 0 +-----+-------------------------+----------+--------------------+--------------------+--------------------+---------- | | CLIENT SQL STATICTICS | +------------------------------------------------------------------------------------ | CLIENT SQL ordered by Elapsed Time +--------------------+----------+----------+----------+----------+----------+-------------------- | elapsed time| calls| % dbtime| % CPU| % IO| dbname| queryid +--------------------+----------+----------+----------+----------+----------+-------------------- | 06:43:19| 36| 10.2| 85.09| 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 +--------------------+----------+----------+----------+----------+----------+-------------------- | CLIENT SQL ordered by CPU Time +--------------------+----------+----------+----------+----------+----------+----------+-------------------- | cpu time| calls| % dbtime|total_time| % CPU| % IO| dbname| queryid +--------------------+----------+----------+----------+----------+----------+----------+-------------------- | 16:14:38| 36| 10.2| 06:43:19| 85.09| 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 +--------------------+----------+----------+----------+----------+----------+----------+-------------------- | CLIENT SQL ordered by User I/O Wait Time +--------------------+----------+----------+----------+----------+----------+----------+-------------------- | io_wait time| calls| % dbtime|total_time| % CPU| % IO| dbname| queryid +--------------------+----------+----------+----------+----------+----------+----------+-------------------- | 05:47:09| 36| 10.2| 06:43:19| 85.09| 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 +--------------------+----------+----------+----------+----------+----------+----------+-------------------- | CLIENT SQL ordered by Shared Buffers Reads +--------------------+----------+----------+----------+----------+----------+----------+-------------------- | buffers reads| calls| % dbtime|total_time| % CPU| % IO| dbname| queryid +--------------------+----------+----------+----------+----------+----------+----------+-------------------- | 2562353244| 36| 10.2| 06:43:19| 85.09| 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 ordered by Disk Reads Time +--------------------+----------+----------+----------+----------+----------+----------+-------------------- | read time| calls| % dbtime|total_time| % CPU| % IO| dbname| queryid +--------------------+----------+----------+----------+----------+----------+----------+-------------------- | 03:37:46| 36| 10.2| 06:43:19| 85.09| 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 ordered by Executions +--------------------+----------+----------+----------+----------+----------+----------+-------------------- | calls| rows| % 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.09| 17.38| tdb1| 389015618226997618 | 8| 8| 0.56| 00:22:00| 0.96| 0| tdb1| 2649515222348904837 +--------------------+----------+----------+----------+----------+----------+----------+-------------------- | Complete List of SQL Text ---------------------------------------------- âĻ
āĻāϞāĻŦā§. āĻĒāϰāĻŦāϰā§āϤ⧠āϞāĻžāĻāύ⧠āĻāĻāĻāĻŋ āϞāĻ āĻāϤāĻŋāĻšāĻžāϏ (pg_stat_locks) āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āϝāĻž āĻā§āĻŦāĻŋāϞ āĻĒā§āϰāĻŖā§āϰ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āĻāϰāĻ āĻŦāĻŋāĻļāĻĻ āĻŦāĻŋāĻŦāϰāĻŖāĨ¤
āĻāϤā§āϏ: www.habr.com
