рд╡рд░реНрдХрд▓реЛрдб рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдФрд░ PostgreSQL рдореЗрдВ рдЗрддрд┐рд╣рд╛рд╕ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд░реЗрдВ

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

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

рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛


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


pg_stat_history
CREATE TABLE pg_stat_history ( id SERIAL, snapshot_timestamp timestamp without time zone, database_id integer, dbid oid, userid oid, queryid bigint, query text, calls bigint, total_time double precision, min_time double precision, max_time double precision, mean_time double precision, stddev_time double precision, rows bigint, shared_blks_hit bigint, shared_blks_read bigint, shared_blks_dirtied bigint, shared_blks_written bigint, local_blks_hit bigint, local_blks_read bigint, local_blks_dirtied bigint, local_blks_written bigint, temp_blks_read bigint, temp_blks_written bigint, blk_read_time double precision, blk_write_time double precision, baseline_id integer ); 

рд▓рдХреНрд╖реНрдп рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреНрд░рддрд┐ рдШрдВрдЯреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ, рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдФрд░ рдЙрдкрдпреЛрдЧреА рд╕реНрддрдВрдн, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИред

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


archive_pg_stat_activity
 CREATE TABLE 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 without time zone, xact_start timestamp without time zone, query_start timestamp without time zone, state_change timestamp without time zone, wait_event_type text, wait_event text, state text, backend_xid xid, backend_xmin xid, query text, backend_type text, queryid bigint ); 

рддрд╛рд▓рд┐рдХрд╛ рдПрдХ рдШрдбрд╝реА-рд╡рд┐рднрд╛рдЬрд┐рдд рдЗрддрд┐рд╣рд╛рд╕ рд╣реИ_pg_stat_activity table (рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП, pg_stat_statements + pg_stat_activity + loq_query = pg_ash? рдФрд░ рдпрд╣рд╛рдВ рдкреЛрд╕реНрдЯрдЧреНрд░реЗрдПрд╕рдХреНрдпреВрдПрд▓ рдХреЗ рд▓рд┐рдП ASH рдХрд╛ рдПрдХ рдПрдирд╛рд▓реЙрдЧ рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред)

рдЙрддреНрдкрд╛рджрди


рдЧреНрд░рд╛рд╣рдХ рд╕реАрдкреАрдпреВ рд╕рдордп (рд╕рд┐рд╕реНрдЯрдо + рдЧреНрд░рд╛рд╣рдХ)


рдЬрд╛рдВрдЪ
 WITH t AS ( SELECT date_trunc('second', timepoint) 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 ( aa.wait_event_type IS NULL ) AND aa.state = 'active' ) SELECT count(*) INTO cpu_total FROM t ; 

рдЙрджрд╛рд╣рд░рдг
 CLUSTER CPU TIME (SYSTEM + CLIENTS ) : 28:37:46 

рдЧреНрд░рд╛рд╣рдХ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп


рдЬрд╛рдВрдЪ
 WITH t AS ( SELECT date_trunc('second', timepoint) 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 ( aa.wait_event_type IS NOT NULL ) AND aa.state = 'active' ) SELECT count(*) INTO cpu_total FROM t ; 

рдЙрджрд╛рд╣рд░рдг
 CLUSTER WAITINGS TIME : 30:12:49 

рдХреБрд▓ pg_stat_statements рдорд╛рди


рдЬрд╛рдВрдЪ
  --TOTAL pg_stat SELECT SUM(calls) AS calls, SUM(total_time) AS total_time, SUM(rows) AS rows , SUM(shared_blks_hit) AS shared_blks_hit,SUM(shared_blks_read) AS shared_blks_read , SUM(shared_blks_dirtied) AS shared_blks_dirtied,SUM(shared_blks_written) AS shared_blks_written , SUM(local_blks_hit) AS local_blks_hit , SUM(local_blks_read) AS local_blks_read , SUM(local_blks_dirtied) AS local_blks_dirtied , SUM(local_blks_written) AS local_blks_written, SUM(temp_blks_read) AS temp_blks_read, SUM(temp_blks_written) temp_blks_written , SUM(blk_read_time) AS blk_read_time , SUM(blk_write_time) AS blk_write_time INTO pg_total_stat_history_rec FROM pg_stat_history WHERE snapshot_timestamp BETWEEN pg_stat_history_begin AND pg_stat_history_end AND queryid IS NULL; 

SQL DBTIME - рдХреБрд▓ рдХреНрд╡реЗрд░реА рд░рдирдЯрд╛рдЗрдо


рдЬрд╛рдВрдЪ
 dbtime_total = interval '1 millisecond' * pg_total_stat_history_rec.total_time ; 

рдЙрджрд╛рд╣рд░рдг
 SQL DBTIME : 136:49:36 

SQL CPU TIME CPU рдХреЗ рдЯрд╛рдЗрдо рдиреЗ рдПрдХреНрдЬреАрдХреНрдпреВрдЯрд┐рд╡ рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЛ рдмрд┐рддрд╛рдпрд╛


рдЬрд╛рдВрдЪ
 WITH t AS ( SELECT date_trunc('second', timepoint) 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 ( aa.wait_event_type IS NULL ) AND backend_type = 'client backend' AND aa.state = 'active' ) SELECT count(*) INTO cpu_total FROM t ; 

рдЙрджрд╛рд╣рд░рдг
 SQL CPU TIME : 27:40:15 

SQL WAITINGS TIME - рдХреНрд╡реЗрд░реАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп


рдЬрд╛рдВрдЪ
 WITH t AS ( SELECT date_trunc('second', timepoint) 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 ( aa.wait_event_type IS NOT NULL ) AND aa.state = 'active' AND backend_type = 'client backend' ) SELECT count(*) INTO waiting_total FROM t ; 

рдЙрджрд╛рд╣рд░рдг
 SQL WAITINGS TIME : 30:04:09 

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреНрд░рд╢реНрди рддреБрдЪреНрдЫ рд╣реИрдВ рдФрд░ рд╕реНрдерд╛рди рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рд╡рд░рдг рдЫреЛрдбрд╝ рджрд┐рдП рдЧрдП рд╣реИрдВ:

рдЙрджрд╛рд╣рд░рдг
 | SQL IOTIME : 19:44:50 | SQL READ TIME : 19:44:32 | SQL WRITE TIME : 00:00:17 | | SQL CALLS : 12188248 ------------------------------------------------------------- | SQL SHARED BLOCKS READS : 7997039120 | SQL SHARED BLOCKS HITS : 8868286092 | SQL SHARED BLOCKS HITS/READS % : 110.89 | SQL SHARED BLOCKS DIRTED : 419945 | SQL SHARED BLOCKS WRITTEN : 19857 | | SQL TEMPORARY BLOCKS READS : 7836169 | SQL TEMPORARY BLOCKS WRITTEN : 10683938 

рд╣рдо рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рдЦрдВрдб рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╣реИрдВ

WAITINGS рд╕рд╛рдВрдЦреНрдпрд┐рдХреА


рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╢реАрд░реНрд╖ 10 рд╕рдВрд╕реНрдХрд░рдг


рдЬрд╛рдВрдЪ
 SELECT wait_event_type , wait_event , get_system_waiting_duration( wait_event_type , wait_event ,pg_stat_history_begin+(current_hour_diff * interval '1 hour') ,pg_stat_history_end+(current_hour_diff * interval '1 hour') ) 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 wait_event_type IS NOT NULL GROUP BY wait_event_type, wait_event ORDER BY 3 DESC LIMIT 10 

рдЙрджрд╛рд╣рд░рдг
  + ------------------------------------------------- -----------------------------------
 |  рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рд╕рдордп рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рд╢реАрд░реНрд╖ 10 рдЕрднрд┐рдпреЛрдЧ
 + ----- + ------------------------------ + ------------ -------- + --------------------
 |  # #  Wait_event_type |  Wait_event |  рдЕрд╡рдзрд┐
 + ----- + ------------------------------ + ------------ -------- + --------------------
 |  1 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  LogicalLauncherMain |  10:43:28
 |  2 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  AutoVacuumMain |  10:42:49
 |  3 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  WalWriterMain |  10:28:53
 |  4 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  рдЪреЗрдХрдкреЙрдЗрдВрдЯрдореИрди |  10:23:50
 |  5 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  BgWriterMain |  09:11:59
 |  6 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  BgWriterHibernate |  01:37:46
 |  7 |  IO |  BufFileWrite |  00:02:35
 |  8 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00:01:54
 |  9 |  IO |  DataFileRead |  00:01:23
 |  10 |  IO |  рд╡реЙрдХ рд╡рд╛рдЗрдЯ |  00:00:59
 + ----- + ------------------------------ + ------------ -------- + --------------------

рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╢реАрд░реНрд╖ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╢реАрд░реНрд╖ 10 рд╕рдВрд╕реНрдХрд░рдг


рдЬрд╛рдВрдЪ
 SELECT wait_event_type , wait_event , get_clients_waiting_duration( wait_event_type , wait_event , pg_stat_history_begin+(current_hour_diff * interval '1 hour') , pg_stat_history_end+(current_hour_diff * interval '1 hour') ) 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 wait_event_type IS NOT NULL GROUP BY wait_event_type, wait_event ORDER BY 3 DESC LIMIT 10 

рдЙрджрд╛рд╣рд░рдг
  + ----- + ------------------------------ + ------------ -------- + -------------------- + ----------
 |  # #  Wait_event_type |  Wait_event |  рдЕрд╡рдзрд┐ |  % dbtime
 + ----- + ------------------------------ + ------------ -------- + -------------------- + ----------
 |  1 |  рддрд╛рд▓рд╛ |  рд▓реЗрди-рджреЗрди |  08: 16: 47 |  6.05
 |  2 |  IO |  DataFileRead |  06: 13: 41 |  4.55
 |  3 |  рдЯрд╛рдЗрдордЖрдЙрдЯ |  PgSleep |  02: 53: 21 |  2.11
 |  4 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 40: 42 |  0.5
 |  5 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00: 17: 17 |  0.21
 |  6 |  IO |  BufFileWrite |  00: 01: 34 |  0.02
 |  7 |  рддрд╛рд▓рд╛ |  рдЯрдкрд▓ |  00: 01: 32 |  0.02
 |  8 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 01: 19 |  0.02
 |  9 |  IO |  BufFileRead |  00: 00: 37 |  0.01
 |  10 |  LWLock |  рдмрдлрд░_ рдХреЙрдиреНрдЯреЗрдВрдЯ |  00: 00: 08 |  0
 + ----- + ------------------------------ + ------------ -------- + -------------------- + ----------

рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рд╡реЙрдЗрдЯ рд╕рдордп рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЫреВрдЯ


рдЬрд╛рдВрдЪ
 SELECT wait_event_type , get_system_waiting_type_duration( wait_event_type , pg_stat_history_begin+(current_hour_diff * interval '1 hour') , pg_stat_history_end+(current_hour_diff * interval '1 hour') ) 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 wait_event_type IS NOT NULL GROUP BY wait_event_type ORDER BY 2 DESC 

рдЙрджрд╛рд╣рд░рдг
  + ----- + ------------------------------ + ------------ --------
 |  # #  Wait_event_type |  рдЕрд╡рдзрд┐
 + ----- + ------------------------------ + ------------ --------
 |  1 |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  53:08:45
 |  2 |  IO |  00:06:24
 |  3 |  LWLock |  00:03:02
 + ----- + ------------------------------ + ------------ --------

рдХреБрд▓рд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдордп рдХреА рдЕрдкреЗрдХреНрд╖рд╛рдПрдБ, рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП


рдЬрд╛рдВрдЪ
 SELECT wait_event_type , get_clients_waiting_type_duration( wait_event_type , pg_stat_history_begin+(current_hour_diff * interval '1 hour') , pg_stat_history_end+(current_hour_diff * interval '1 hour') ) 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 wait_event_type IS NOT NULL GROUP BY wait_event_type ORDER BY 2 DESC 

рдЙрджрд╛рд╣рд░рдг
  + ----- + ------------------------------ + ------------ -------- + --------------------
 |  # #  Wait_event_type |  рдЕрд╡рдзрд┐ |  % dbtime
 + ----- + ------------------------------ + ------------ -------- + --------------------
 |  1 |  рддрд╛рд▓рд╛ |  08: 18: 19 |  6.07
 |  2 |  IO |  06: 16: 01 |  4.58
 |  3 |  рдЯрд╛рдЗрдордЖрдЙрдЯ |  02: 53: 21 |  2.11
 |  4 |  LWLock |  00: 58: 12 |  0.71
 |  5 |  рдЧреНрд░рд╛рд╣рдХ |  00: 01: 19 |  0.02
 |  6 |  рдЖрдИрдкреАрд╕реА |  00: 00: 04 |  0
 + ----- + ------------------------------ + ------------ -------- + --------------------

рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдЕрдиреБрд░реЛрдзреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдУрдВ рдХреА рдЕрд╡рдзрд┐ред

рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛


рдЬрд╛рдВрдЪ
 SELECT backend_type , datname , wait_event_type , wait_event , get_backend_type_waiting_duration( backend_type , wait_event_type , wait_event , pg_stat_history_begin+(current_hour_diff * interval '1 hour') , pg_stat_history_end+(current_hour_diff * interval '1 hour') ) 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 wait_event_type IS NOT NULL GROUP BY backend_type , datname , wait_event_type , wait_event ORDER BY 5 DESC 

рдЙрджрд╛рд╣рд░рдг
  + ----- + ----------------------------- + ---------- + - ------------------ + ---------------------- + -------- ------------
 |  # #  backend_type |  dbname |  Wait_event_type |  Wait_event |  рдЕрд╡рдзрд┐
 + ----- + ----------------------------- + ---------- + - ------------------ + ---------------------- + -------- ------------
 |  1 |  рддрд╛рд░реНрдХрд┐рдХ рдкреНрд░рддрд┐рдХреГрддрд┐ рд▓рд╛рдВрдЪрд░ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  LogicalLauncherMain |  10:43:28
 |  2 |  рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рд▓рд╛рдВрдЪрд░ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  AutoVacuumMain |  10:42:49
 |  3 |  рд▓реЗрдЦрдХ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  WalWriterMain |  10:28:53
 |  4 |  рдЪреЗрдХрдкреЙрдЗрдВрдЯ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  рдЪреЗрдХрдкреЙрдЗрдВрдЯрдореИрди |  10:23:50
 |  5 |  рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  BgWriterMain |  09:11:59
 |  6 |  рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХ |  |  рдЧрддрд┐рд╡рд┐рдзрд┐ |  BgWriterHibernate |  01:37:46
 |  7 |  рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  IO |  BufFileWrite |  00:02:35
 |  8 |  рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00:01:41
 |  9 |  рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  IO |  DataFileRead |  00:01:22
 |  10 |  рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  IO |  BufFileRead |  00:00:59
 |  11 |  рд▓реЗрдЦрдХ |  |  IO |  рд╡реЙрдХ рд╡рд╛рдЗрдЯ |  00:00:57
 |  12 |  рд╕рдорд╛рдирд╛рдВрддрд░ рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00:00:47
 |  13 |  рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00:00:13
 |  14 |  рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХ |  |  IO |  DataFileWrite |  00:00:12
 |  15 |  рдЪреЗрдХрдкреЙрдЗрдВрдЯ |  |  IO |  DataFileWrite |  00:00:11
 |  16 |  рд▓реЗрдЦрдХ |  |  LWLock |  рд╡реЙрд▓реНрд░рд╛рдЗрдЯрд▓рд╛рдЗрдЯ |  00:00:09
 |  17 |  рдЪреЗрдХрдкреЙрдЗрдВрдЯ |  |  LWLock |  рд╡реЙрд▓реНрд░рд╛рдЗрдЯрд▓рд╛рдЗрдЯ |  00:00:06
 |  18 |  рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХ |  |  LWLock |  рд╡реЙрд▓реНрд░рд╛рдЗрдЯрд▓рд╛рдЗрдЯ |  00:00:06
 |  19 |  рд▓реЗрдЦрдХ |  |  IO |  WalInitWrite |  00:00:02
 |  20 |  рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  LWLock |  рд╡реЙрд▓реНрд░рд╛рдЗрдЯрд▓рд╛рдЗрдЯ |  00:00:02
 |  21 |  рд▓реЗрдЦрдХ |  |  IO |  WalInitSync |  00:00:02
 |  22 |  рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  IO |  DataFileRead |  00:00:01
 |  23 |  рдЪреЗрдХрдкреЙрдЗрдВрдЯ |  |  IO |  ControlFileSyncUpdate |  00:00:01
 |  24 |  рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХ |  |  IO |  рд╡реЙрдХ рд╡рд╛рдЗрдЯ |  00:00:01
 |  25 |  рдкреГрд╖реНрдарднреВрдорд┐ рд▓реЗрдЦрдХ |  |  IO |  DataFileFlush |  00:00:01
 |  26 |  рдЪреЗрдХрдкреЙрдЗрдВрдЯ |  |  IO |  SLRUFlushSync |  00:00:01
 |  27 |  рдСрдЯреЛрд╡реИрдХреНрдпреВрдо рдХрд╛рд░реНрдпрдХрд░реНрддрд╛ |  tdb1 |  IO |  рд╡реЙрдХ рд╡рд╛рдЗрдЯ |  00:00:01
 |  28 |  рдЪреЗрдХрдкреЙрдЗрдВрдЯ |  |  IO |  DataFileSync |  00:00:01
 + ----- + ----------------------------- + ---------- + - ------------------ + ---------------------- + -------- ------------ 

SQL рдХреЗ рд▓рд┐рдП рдкреНрд░рддреАрдХреНрд╖рд╛ - рдХреНрд╡реЗрд░реА рджреНрд╡рд╛рд░рд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдкреЗрдХреНрд╖рд╛рдПрдВ


рдЬрд╛рдВрдЪ
 SELECT queryid , datname , wait_event_type , wait_event , get_query_waiting_duration( queryid , wait_event_type , wait_event , pg_stat_history_begin+(current_hour_diff * interval '1 hour') , pg_stat_history_end+(current_hour_diff * interval '1 hour') ) 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 wait_event_type IS NOT NULL AND queryid IS NOT NULL GROUP BY queryid , datname , wait_event_type , wait_event ORDER BY 1 , 5 DESC 

рдЙрджрд╛рд╣рд░рдг
  + ----- + ------------------------- + ---------- + ------ -------------- + -------------------- + -------------- ------ + --------------------
 |  # #  рдХреНрд╡реЗрд░реА |  dbname |  Wait_event_type |  Wait_event |  рдкреНрд░рддреАрдХреНрд╖рд╛ |  рд╕рдВрдкреВрд░реНрдг
 |  |  |  |  |  |  рдЕрд╡рдзрд┐ |  рдЕрд╡рдзрд┐
 + ----- + ------------------------- + ---------- + ------ -------------- + -------------------- + -------------- ------ + --------------------
 |  1 |  -8247416849404883188 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 02 |
 |  2 |  -6572922443698419129 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 05 |
 |  3 |  -6572922443698419129 |  tdb1 |  IO |  DataFileRead |  00: 00: 01 |
 |  4 |  -5917408132400665328 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 04 |
 |  5 |  -4091009262735781873 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 03 |
 |  6 |  -147339510972929441239 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 01 |
 |  7 |  28942442626229688 |  tdb1 |  IO |  BufFileWrite |  00: 01: 34 |  00:46:06
 |  8 |  28942442626229688 |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 01: 05 |  00:46:06
 |  9 |  28942442626229688 |  tdb1 |  IO |  DataFileRead |  00: 00: 44 |  00:46:06
 |  10 |  28942442626229688 |  tdb1 |  IO |  BufFileRead |  00: 00: 37 |  00:46:06
 |  11 |  28942442626229688 |  tdb1 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00: 00: 35 |  00:46:06
 |  12 |  28942442626229688 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 05 |  00:46:06
 |  13 |  28942442626229688 |  tdb1 |  рдЖрдИрдкреАрд╕реА |  MessageQueueReceive |  00: 00: 03 |  00:46:06
 |  14 |  28942442626229688 |  tdb1 |  рдЖрдИрдкреАрд╕реА |  BgWorkerShutdown |  00: 00: 01 |  00:46:06
 |  15 |  389015618226997618 |  tdb1 |  рддрд╛рд▓рд╛ |  рд▓реЗрди-рджреЗрди |  03: 55: 09 |  04:14:15
 |  16 |  389015618226997618 |  tdb1 |  IO |  DataFileRead |  03: 23: 09 |  04:14:15
 |  17 |  389015618226997618 |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 12: 09 |  04:14:15
 |  18 |  389015618226997618 |  tdb1 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00: 10: 18 |  04:14:15
 |  19 |  389015618226997618 |  tdb1 |  рддрд╛рд▓рд╛ |  рдЯрдкрд▓ |  00: 00: 35 |  04:14:15
 |  20 |  389015618226997618 |  tdb1 |  LWLock |  рд╡реЙрд▓реНрд░рд╛рдЗрдЯрд▓рд╛рдЗрдЯ |  00: 00: 02 |  04:14:15
 |  21 |  389015618226997618 |  tdb1 |  IO |  DataFileWrite |  00: 00: 01 |  04:14:15
 |  22 |  389015618226997618 |  tdb1 |  LWLock |  SyncScanLock |  00: 00: 01 |  04:14:15
 |  23 |  389015618226997618 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 01 |  04:14:15
 |  24 |  734234407411547467 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 11 |
 |  25 |  734234407411547467 |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 00: 05 |
 |  26 |  734234407411547467 |  tdb1 |  IO |  DataFileRead |  00: 00: 02 |
 |  27 |  1237430309438971376 |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 02: 18 |  02:45:40
 |  28 |  1237430309438971376 |  tdb1 |  IO |  DataFileRead |  00: 00: 27 |  02:45:40
 |  29 |  1237430309438971376 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 02 |  02:45:40
 |  30 |  2404820632950544954 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 01 |
 |  31 |  2515308626622579467 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 02 |
 |  32 |  4710212362688288619 |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 03: 08 |  02:18:21
 |  33 |  4710212362688288619 |  tdb1 |  IO |  DataFileRead |  00: 00: 22 |  02:18:21
 |  34 |  4710212362688288619 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 06 |  02:18:21
 |  35 |  4710212362688288619 |  tdb1 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00: 00: 02 |  02:18:21
 |  36 |  9150846928388977274 |  tdb1 |  IO |  DataFileRead |  00: 01: 19 |
 |  37 |  9150846928388977274 |  tdb1 |  LWLock |  рдмрдлрд░_ рдореИрдкрд┐рдВрдЧ |  00: 00: 34 |
 |  38 |  9150846928388977274 |  tdb1 |  рдЧреНрд░рд╛рд╣рдХ |  рдХреНрд▓рд╛рдЗрдВрдЯрд░реЗрдб |  00: 00: 10 |
 |  39 |  9150846928388977274 |  tdb1 |  LWLock |  рдмрдлрд░_рд┐рдпреЛ |  00: 00: 01 |
 + ----- + ------------------------- + ---------- + ------ -------------- + -------------------- + -------------- ------ + -------------------- 

рдЧреНрд░рд╛рд╣рдХ SQL рд╕рд╛рдВрдЦреНрдпрд┐рдХреА - рд╢реАрд░реНрд╖ рдкреНрд░рд╢реНрди


рд╣рд╛рд▓рд╛рдВрдХрд┐, рдлрд┐рд░ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз, рддреБрдЪреНрдЫ рд╣реИрдВ рдФрд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдХреЛ рдмрдЪрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд╣реАрдВ рджрд┐рдП рдЧрдП рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг
  + ------------------------------------------------- -----------------------------------
 |  CLIENT SQL рджреНрд╡рд╛рд░рд╛ рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░рдиреЗ рдХрд╛ рдЖрджреЗрд╢ рджрд┐рдпрд╛ рдЧрдпрд╛
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + --------------------
 |  рдмреАрддрд╛ рд╣реБрдЖ рд╕рдордп |  рдХреЙрд▓ |  % dbtime |  % CPU |  % IO |  dbname |  queryid
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + --------------------
 |  04: 14: 15 |  19 |  3.1 |  10.83 |  11.52 |  tdb1 |  389015618226997618
 |  02: 45: 40 |  746 |  2.02 |  4.23 |  0.08 |  tdb1 |  1237430309438971376
 |  02: 18: 21 |  749 |  1.69 |  3.39 |  0.1 |  tdb1 |  4710212362688288619
 |  00: 46: 06 |  375 |  0.56 |  0.94 |  0.41 |  tdb1 |  28942442626229688
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + --------------------
 |  рд╕реАрдкреАрдпреВ рдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рдСрд░реНрдбрд░ рдХреА рдЧрдИ SQL SQL
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  cpu рд╕рдордп |  рдХреЙрд▓ |  % dbtime | Total_time |  % CPU |  % IO |  dbname |  queryid
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  02: 59: 49 |  19 |  3.1 |  04: 14: 15 |  10.83 |  11.52 |  tdb1 |  389015618226997618
 |  01: 10: 12 |  746 |  2.02 |  02: 45: 40 |  4.23 |  0.08 |  tdb1 |  1237430309438971376
 |  00: 56: 15 |  749 |  1.69 |  02: 18: 21 |  3.39 |  0.1 |  tdb1 |  4710212362688288619
 |  00: 15: 35 |  375 |  0.56 |  00: 46: 06 |  0.94 |  0.41 |  tdb1 |  28942442626229688
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ I / O рдкреНрд░рддреАрдХреНрд╖рд╛ рд╕рдордп рджреНрд╡рд╛рд░рд╛ рдЖрджреЗрд╢рд┐рдд SQL SQL
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  io_wait рд╕рдордп |  рдХреЙрд▓ |  % dbtime | Total_time |  % CPU |  % IO |  dbname |  queryid
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  03: 23: 10 |  19 |  3.1 |  04: 14: 15 |  10.83 |  11.52 |  tdb1 |  389015618226997618
 |  00: 02: 54 |  375 |  0.56 |  00: 46: 06 |  0.94 |  0.41 |  tdb1 |  28942442626229688
 |  00: 00: 27 |  746 |  2.02 |  02: 45: 40 |  4.23 |  0.08 |  tdb1 |  1237430309438971376
 |  00: 00: 22 |  749 |  1.69 |  02: 18: 21 |  3.39 |  0.1 |  tdb1 |  4710212362688288619
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  рд╕рд╛рдЭрд╛ рдмрдлрд╝рд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рд▓рд┐рдЦрд┐рдд SQL рдСрд░реНрдбрд░
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  рдмрдлрд╝рд░реНрд╕ рдкрдврд╝рддрд╛ рд╣реИ |  рдХреЙрд▓ |  % dbtime | Total_time |  % CPU |  % IO |  dbname |  queryid
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  1056388566 |  19 |  3.1 |  04: 14: 15 |  10.83 |  11.52 |  tdb1 |  389015618226997618
 |  11709251 |  375 |  0.56 |  00: 46: 06 |  0.94 |  0.41 |  tdb1 |  28942442626229688
 |  3439004 |  746 |  2.02 |  02: 45: 40 |  4.23 |  0.08 |  tdb1 |  1237430309438971376
 |  3373330 |  749 |  1.69 |  02: 18: 21 |  3.39 |  0.1 |  tdb1 |  4710212362688288619
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  CLIENT SQL рдХреЛ рдбрд┐рд╕реНрдХ рд░реАрдбрд░реНрд╕ рдЯрд╛рдЗрдо рджреНрд╡рд╛рд░рд╛ рдСрд░реНрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  рдкрдврд╝рдиреЗ рдХрд╛ рд╕рдордп |  рдХреЙрд▓ |  % dbtime | Total_time |  % CPU |  % IO |  dbname |  queryid
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  02: 16: 30 |  19 |  3.1 |  04: 14: 15 |  10.83 |  11.52 |  tdb1 |  389015618226997618
 |  00: 04: 50 |  375 |  0.56 |  00: 46: 06 |  0.94 |  0.41 |  tdb1 |  28942442626229688
 |  00: 01: 10 |  749 |  1.69 |  02: 18: 21 |  3.39 |  0.1 |  tdb1 |  4710212362688288619
 |  00: 00: 57 |  746 |  2.02 |  02: 45: 40 |  4.23 |  0.08 |  tdb1 |  1237430309438971376
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  CLIENT SQL рджреНрд╡рд╛рд░рд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдП рдЧрдП рдЖрджреЗрд╢
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  рдХреЙрд▓ |  рдкрдВрдХреНрддрд┐рдпрд╛рдБ |  % dbtime | Total_time |  % CPU |  % IO |  dbname |  queryid
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ --------
 |  749 |  749 |  1.69 |  02: 18: 21 |  3.39 |  0.1 |  tdb1 |  4710212362688288619
 |  746 |  746 |  2.02 |  02: 45: 40 |  4.23 |  0.08 |  tdb1 |  1237430309438971376
 |  375 |  0 |  0.56 |  00: 46: 06 |  0.94 |  0.41 |  tdb1 |  28942442626229688
 |  19 |  19 |  3.1 |  04: 14: 15 |  10.83 |  11.52 |  tdb1 |  389015618226997618
 + -------------------- + ---------- + ---------- + ------ ---- + ---------- + ---------- + ---------- + ------------ -------- 

рдкрд░рд┐рдгрд╛рдо


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

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


рдЕрдм рддрдХ, рд╡рд┐рдХрд╛рд╕ рдпреЛрдЬрдирд╛рдПрдВ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

  • рд▓реЙрдХ рдЗрддрд┐рд╣рд╛рд╕ рдХреЗ рд╕рд╛рде рдЕрдиреБрдкреВрд░рдХ рд░рд┐рдкреЛрд░реНрдЯрд┐рдВрдЧред рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рдФрд░ рд╢реАрдШреНрд░ рд╣реА рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  • Pg_stat_activity рдФрд░ pg_locks рдХреЗ рдЗрддрд┐рд╣рд╛рд╕ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП TimescaleDB рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  • рдЙрддреНрдкрд╛рджрди рдард┐рдХрд╛рдиреЛрдВ рдкрд░ рдмрдбрд╝реЗ рдкреИрдорд╛рдиреЗ рдкрд░ рддреИрдирд╛рддреА рдХреЗ рд▓рд┐рдП рдЬреАрдердм рдкрд░ рдПрдХ рдмреИрдЪ рд╕рдорд╛рдзрд╛рди рддреИрдпрд╛рд░ рдХрд░реЗрдВред

рдЬрд╛рд░реА рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП ...

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


All Articles