PostgreSQL-āĻāϰ āϜāĻ¨ā§āϝ āĻāĻ•āϟāĻŋ ASH āĻ…ā§āϝāĻžāύāĻžāϞāĻ— āϤ⧈āϰāĻŋ āĻ•āϰāĻžāϰ āĻĒā§āϰāĻšā§‡āĻˇā§āϟāĻž

āϏāĻŽāĻ¸ā§āϝāĻž āĻ—āĻ āύ

PostgreSQL āĻĒā§āϰāĻļā§āύāϗ⧁āϞāĻŋ āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāϜ āĻ•āϰāĻžāϰ āϜāĻ¨ā§āϝ, āĻ•āĻžāĻ°ā§āϝāĻ•āϞāĻžāĻĒ⧇āϰ āχāϤāĻŋāĻšāĻžāϏ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āĻ•āϰāĻžāϰ āĻ•ā§āώāĻŽāϤāĻž, āĻŦāĻŋāĻļ⧇āώ āĻ•āϰ⧇, āĻ…āĻĒ⧇āĻ•ā§āώāĻž, āϞāĻ• āĻāĻŦāĻ‚ āĻŸā§‡āĻŦāĻŋāϞ āĻĒāϰāĻŋāϏāĻ‚āĻ–ā§āϝāĻžāύ, āϖ⧁āĻŦ āĻĒā§āϰāϝāĻŧā§‹āϜāύāĨ¤

āωāĻĒāϞāĻŦā§āϧ āϏ⧁āϝ⧋āĻ—

āϐāϤāĻŋāĻšāĻžāϏāĻŋāĻ• āĻ“āϝāĻŧāĻžāĻ°ā§āĻ•āϞ⧋āĻĄ āĻŦāĻŋāĻļā§āϞ⧇āώāĻŖ āϟ⧁āϞ āĻŦāĻž "āĻĒā§‹āĻ¸ā§āϟāĻ—ā§āϰ⧇āϏ⧇āϰ āϜāĻ¨ā§āϝ AWR": āĻāĻ•āϟāĻŋ āϖ⧁āĻŦ āφāĻ•āĻ°ā§āώāĻŖā§€āϝāĻŧ āϏāĻŽāĻžāϧāĻžāύ, āĻ•āĻŋāĻ¨ā§āϤ⧁ pg_stat_activity āĻāĻŦāĻ‚ pg_locks āĻāϰ āϕ⧋āύ āχāϤāĻŋāĻšāĻžāϏ āύ⧇āχāĨ¤

pgsentinel āĻāĻ•ā§āϏāĻŸā§‡āύāĻļāύ :
ÂĢāϏāĻŽāĻ¸ā§āϤ āϜāĻŽā§‡ āĻĨāĻžāĻ•āĻž āϤāĻĨā§āϝ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ 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 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;

āĻ­āĻŋāω āĻ¸ā§āĻ¨ā§āϝāĻžāĻĒāĻļāϟ āϏāĻ‚āĻ—ā§āϰāĻš āĻ•āϰāϤ⧇, āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽāĻĄ āĻĒāϰāĻŋāώ⧇āĻŦāĻž āĻāĻŦāĻ‚ āĻĻ⧁āϟāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻž āĻšāϝāĻŧ:

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.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 āĻĢāĻžāĻ‚āĻļāύ 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' āĻ•āϞāĻžāĻŽ āϝ⧋āĻ— āĻ•āϰ⧇ āϏāĻžāϰāĻŖāĻŋāϗ⧁āϞāĻŋāϕ⧇ āϞāĻŋāĻ™ā§āĻ• āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇āĨ¤ āĻāĻ•āϟāĻŋ āĻ•āϞāĻžāĻŽ āĻŽāĻžāύ āϝ⧋āĻ— āĻ•āϰāĻžāϰ āĻĒāĻĻā§āϧāϤāĻŋ āĻāχ āύāĻŋāĻŦāĻ¨ā§āϧ⧇āϰ āϏ⧁āϝ⧋āϗ⧇āϰ āĻŦāĻžāχāϰ⧇ āĻāĻŦāĻ‚ āĻāĻ–āĻžāύ⧇ āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰāĻž āĻšāϝāĻŧ⧇āϛ⧇ - 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

āωāĻĻāĻžāĻšāϰāĻŖ:

-------------------------------------------------------------------
| 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

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster