Një nga metodat për të marrë profilin e ngarkesës dhe historikun e pritjeve në PostgreSQL.

Vazhdimi i artikullit «Përpjekja për të krijuar një analog të ASH për PostgreSQL «.

Artikulli do tĂ« shqyrtojĂ« dhe do tĂ« tregojĂ« me kĂ«rkesa dhe shembuj konkretĂ« — çfarĂ« informacioni tĂ« dobishĂ«m mund tĂ« merrni me anĂ« tĂ« historikut tĂ« paraqitjes pg_stat_activity.

Kujdes.
Në lidhje me novitetin e temës dhe përfundimin e periudhës së testimit, artikulli mund të përmbajë gabime. Kritikat dhe vërejtjet janë gjithmonë të mirëpritura dhe të pritura.

Të dhënat hyrëse

Historia e paraqitjes pg_stat_statements

pg_stat_history

KRIJO TABELË pg_stat_history ( 
id SERIAL, 
snapshot_timestamp timestamp pa zonë kohe, 
database_id integer,
dbid oid,
userid oid,
queryid bigint,
query tekst,
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 );

Tabela plotësohet çdo orë, duke përdorur dblink në bazën e të dhënave të synuar. Kolona më interesante dhe e dobishme në tabelë është, natyrisht queryid.

Historia e paraqitjes pg_stat_activity

archive_pg_stat_activity

KRIJO TABELË arkiv_pg_stat_activity
(
  timepoint timestamp pa zonë kohe,
  datid             oid, 
  datname           emër,
  pid               integer,
  usesysid          oid,
  usename           emër,
  application_name  tekst,
  client_addr       inet,
  client_hostname   tekst,
  client_port       integer,
  backend_start     timestamp pa zonë kohe,
  xact_start        timestamp pa zonë kohe,
  query_start       timestamp pa zonë kohe,
  state_change      timestamp pa zonë kohe,
  wait_event_type   tekst,                     
  wait_event        tekst,                   
  state             tekst,                  
  backend_xid       xid,                 
  backend_xmin      xid,                
  query             tekst,               
  backend_type      tekst,
  queryid           bigint
);

Tabeli paraqet njĂ« tabelĂ« tĂ« ndarĂ« sipas orĂ«ve historike_pg_stat_activity (MĂ« shumĂ« kĂ«tu — pg_stat_statements + pg_stat_activity + loq_query = pg_ash? dhe kĂ«tu — PĂ«rpjekje pĂ«r tĂ« krijuar njĂ« analog tĂ« ASH pĂ«r PostgreSQL.)

Të dhënat dalëse

KOHA E CPU KLASHT (SISTEMI + KLIENTËT)

Kërkesë

ME 
 t SI
 (
	ZBULO 		
			date_trunc('sekondë', timepoint)
	FROM 	activity_hist.archive_pg_stat_activity aa
	WHERE 	timepoint MIDIS pg_stat_history_begin+(current_hour_diff * interval '1 orë') DHE pg_stat_history_end+(current_hour_diff * interval '1 orë')  DHE 
			( aa.wait_event_type ËSHTË NULL  ) DHE
			aa.state = 'aktive'
 )
 ZBULO count(*) 
 NDËR INTO cpu_total
 FROM t ;

Shembuj

KOHA E CPU KLASHT (SISTEMI + KLIENTËT) : 28:37:46

KOHA E PRITJES KLASHT

Kërkesë

ME 
 t SI
 (
	ZBULO 		
			date_trunc('sekondë', timepoint)
	FROM 	activity_hist.archive_pg_stat_activity aa
	WHERE 	timepoint MIDIS pg_stat_history_begin+(current_hour_diff * interval '1 orë') DHE pg_stat_history_end+(current_hour_diff * interval '1 orë')  DHE 
			( aa.wait_event_type ËSHTË JO NULL  ) DHE
			aa.state = 'aktive'
 )
 ZBULO count(*) 
 NDËR INTO cpu_total
 FROM t ;

Shembuj

KOHA E PRITJES KLASHT : 30:12:49

Vlerat totale të pg_stat_statements

Kërkesë

 --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 — koha totale e ekzekutimit tĂ« kĂ«rkesave

Kërkesë

dbtime_total = interval '1 millisecond' * pg_total_stat_history_rec.total_time ;

Shembuj

SQL DBTIME : 136:49:36

SQL CPU TIME — koha e CPU e shpenzuar pĂ«r ekzekutimin e kĂ«rkesave

Kërkesë

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

Shembuj

SQL CPU TIME : 27:40:15

SQL WAITINGS TIME — koha totale e pritjeve pĂ«r kĂ«rkesat

Kërkesë

ME
 t SI
 (
	Zgjidh 		
			data_trunc('sekond', timepoint)
	Nga 	activity_hist.archive_pg_stat_activity aa
	KUJT 	timepoint MIDIS pg_stat_history_begin+(current_hour_diff * interval '1 orë') DHE pg_stat_history_end+(current_hour_diff * interval '1 orë')  DHE 
			( aa.wait_event_type IS NOT NULL  ) DHE
			aa.state = 'aktive' DHE 
		backend_type = 'klienti prapa'
 )
 Zgjidh count(*) 
 NË waiting_total
 NGA t ;

Shembuj

KOHA E PRITJES SQL: 30:04:09

Këto kërkesa janë banale dhe për kursimin e hapësirës detajet e realizimit ato anashkalohen:

Shembuj

| KOHA IOTIME SQL: 19:44:50
| KOHA E KËRKESES SQL: 19:44:32
| KOHA E SHKRIMIT SQL: 00:00:17
|
| THIRRJET SQL: 12188248
-------------------------------------------------------------
| SHKALLAT E NDARJES SE SHERBIMEVE SQL: 7997039120
| SHKALLAT E HITEVE TE SHERBIMEVE SQL: 8868286092
| PËSHAT E HITEVE TE SHERBIMEVE SQL / SHKALLAT %: 110.89
| SHKALLAT E DIRTUARA TE SHERBIMEVE SQL: 419945
| SHKALLAT E SHKRIMT TE SHERBIMEVE SQL: 19857
|
| SHKALLAT TEMPORALE TË NDARJES SQL: 7836169
| SHKALLAT TEMPORALE TË SHKRUARA SQL: 10683938

Të kalojmë te seksi më interesant

STATISTIKAT E PRITJES

TOP 10 PRITJET NGA KOHA TOTAL E PRITJES PËR PROCESET E KLIENTIT

Kërkesë

ZRIN
  wait_event_type , wait_event ,
  merr_dhënien_dhe_kohën( wait_event_type , wait_event ,pg_stat_history_begin+(current_hour_diff * interval '1 orë') ,pg_stat_history_end+(current_hour_diff * interval '1 orë') ) si kohë 
Nga
  activity_hist.archive_pg_stat_activity aa
KUJT 
  timepoint MIDIS pg_stat_history_begin+(current_hour_diff * interval '1 orë') DHE pg_stat_history_end+(current_hour_diff * interval '1 orë') DHE backend_type != 'klienti prapa' DHE wait_event_type IS NOT NULL 
GRUPI NGA 
  wait_event_type, wait_event
RREGULLO Nga 3 ZBRITËN
KUFIZIMI 10

Shembuj

+------------------------------------------------------------------------------------
| 10 MË TË PRITUR NGA KOHA TOTALE E PRITJES PËR PROCESAT E SISTEMIT
+-----+------------------------------+--------------------+--------------------
|    #|               lloji_eventit_të_pritjes|          ngjarja_e_pritjes|            kohëzgjatja
+-----+------------------------------+--------------------+--------------------
|    1|                      Aktiviteti| LogicalLauncherMain|            10:43:28
|    2|                      Aktiviteti|      AutoVacuumMain|            10:42:49
|    3|                      Aktiviteti|       WalWriterMain|            10:28:53
|    4|                      Aktiviteti|    CheckpointerMain|            10:23:50
|    5|                      Aktiviteti|        BgWriterMain|            09:11:59
|    6|                      Aktiviteti|   BgWriterHibernate|            01:37:46
|    7|                            IO|        BufFileWrite|            00:02:35
|    8|                        LWLock|      buffer_mapping|            00:01:54
|    9|                            IO|        DataFileRead|            00:01:23
|   10|                            IO|            WALWrite|            00:00:59
+-----+------------------------------+--------------------+--------------------

TOP 10 PRITJET NGA KOHA TOTAL E PRITJES PËR PROCESET E KLIENTIT

Kërkesë

Zgjedh 
  lloji_eventit_të_pritjes, ngjarja_e_pritjes,
  get_clients_waiting_duration( lloji_eventit_të_pritjes, ngjarja_e_pritjes, pg_stat_history_begin+(current_hour_diff * interval '1 orë'), pg_stat_history_end+(current_hour_diff * interval '1 orë')) as kohëzgjatja
Nga 
  activity_hist.archive_pg_stat_activity aa
Këtu 
  timepoint MIDIS pg_stat_history_begin+(current_hour_diff * interval '1 orĂ«') DHE pg_stat_history_end+(current_hour_diff * interval '1 orĂ«') DHE backend_type = 'client backend' DHE lloji_eventit_tĂ«_pritjes NUK ËSHTË NULL 
GRUPI NGA lloji_eventit_të_pritjes, ngjarja_e_pritjes
RENDIT NGA 3 ZBRITJE
LIMIT 10

Shembuj

+-----+------------------------------+--------------------+--------------------+----------
|    #|               tipi_eventit_pritur|          eventi_pritur|            durata|  % dbtime
+-----+------------------------------+--------------------+--------------------+----------
|    1|                          Bllokim|       id_transaksionit|            08:16:47|      6.05
|    2|                            IO|        LeximiSkedarit|            06:13:41|      4.55
|    3|                       Skadimi|             PgSleep|            02:53:21|      2.11
|    4|                        LWLock|      hartimi_bufrit|            00:40:42|       0.5
|    5|                        LWLock|           io_bufrit|            00:17:17|      0.21
|    6|                            IO|        ShkrimiBufit|            00:01:34|      0.02
|    7|                          Bllokim|               tuple|            00:01:32|      0.02
|    8|                        Klienti|          LeximiKlientit|            00:01:19|      0.02
|    9|                            IO|         LeximiBufit|            00:00:37|      0.01
|   10|                        LWLock|      përmbajtja_bufrit|            00:00:08|         0
+-----+------------------------------+--------------------+--------------------+----------

TIPET E PRITURVE Sipas KOHËS SË TOTALIT TË PRITURVE, PËR PROCESET E SISTEMIT

Kërkesë

ZBRASNI
  tipi_eventit_pritur ,
  merr_kohën_e_pritur_të_sistemit( tipi_eventit_pritur , pg_stat_history_begin+(current_hour_diff * interval '1 hour') , pg_stat_history_end+(current_hour_diff * interval '1 hour') ) si durata
FROM
  activity_hist.archive_pg_stat_activity aa
WHERE 
  koha_mesatare 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 != 'klienti backend' AND tipi_eventit_pritur IS NOT NULL 
GROUP BY tipi_eventit_pritur
ORDER BY 2 DESC

Shembuj

+-----+------------------------------+--------------------
|    #|               wait_event_type|            duration
+-----+------------------------------+--------------------
|    1|                      Activity|            53:08:45
|    2|                            IO|            00:06:24
|    3|                        LWLock|            00:03:02
+-----+------------------------------+--------------------

LLOJAT E PRITJES SË KLIENTËVE KËR VETM

Kërkesë

ZHVAT
  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') ) si kohëzgjatje
FROM
  activity_hist.archive_pg_stat_activity aa
WHERE 
  timepoint MIDIS pg_stat_history_begin+(current_hour_diff * interval '1 hour') DHE pg_stat_history_end+(current_hour_diff * interval '1 hour') DHE backend_type = 'client backend' DHE wait_event_type IS NOT NULL 
GROUP BY wait_event_type
ORDER BY 2 DESC

Shembuj

+-----+------------------------------+--------------------+--------------------
|    #|               wait_event_type|            duration|            % dbtime
+-----+------------------------------+--------------------+--------------------
|    1|                          Lock|            08:18:19|                6.07
|    2|                            IO|            06:16:01|                4.58
|    3|                       Timeout|            02:53:21|                2.11
|    4|                        LWLock|            00:58:12|                0.71
|    5|                        Client|            00:01:19|                0.02
|    6|                           IPC|            00:00:04|                   0
+-----+------------------------------+--------------------+--------------------

Kohëzgjatja e pritjeve, për proceset sistemore dhe kërkesat e veçanta.

PRITJET PËR PROCESET SISTEMORE

Kërkesë

ZGJOJ 
  lloj_backend , emri_dat , tipi_eventeve_pret , eventi_pret , merr_backend_type_waiting_duration( lloj_backend , tipi_eventeve_pret , eventi_pret , pg_stat_history_begin+(ndryshimi_i_ores_sektorial * interval '1 ore') , pg_stat_history_end+(ndryshimi_i_ores_sektorial * interval '1 ore') ) si kohëzgjatje 
PREJ 
  aktivitet_hist.archive_pg_stat_activity aa
KU 
  pika_tĂ«_kohĂ«s NDËRKOH qĂ« pg_stat_history_begin+(ndryshimi_i_ores_sektorial * interval '1 ore') DHE pg_stat_history_end+(ndryshimi_i_ores_sektorial * interval '1 ore') DHE lloj_backend != 'klient_backend' DHE tipi_eventeve_pret IS NOT NULL 
GRUPI NGA lloj_backend , emri_dat , tipi_eventeve_pret , eventi_pret
RENDIT sipas 5 ZONA

Shembuj

+-----+-----------------------------+----------+--------------------+----------------------+--------------------
|    #|                 backend_type|    dbname|     wait_event_type|            wait_event|            duration
+-----+-----------------------------+----------+--------------------+----------------------+--------------------
|    1| lanse logjike replikuese    |          |            Aktivitet|   LogjikaLauncherMain|            10:43:28
|    2|          lanse autovakuumi    |          |            Aktivitet|        AutoVacuumMain|            10:42:49
|    3|                    walshkrues  |          |            Aktivitet|         WalWriterMain|            10:28:53
|    4|                 kontrolluesi    |          |            Aktivitet|      CheckpointerMain|            10:23:50
|    5|            shkruesi në sfond   |          |            Aktivitet|          BgWriterMain|            09:11:59
|    6|            shkruesi në sfond   |          |            Aktivitet|     BgWriterHibernate|            01:37:46
|    7|              punonjës paralel   |      tdb1|                  IO|          BufFileWrite|            00:02:35
|    8|              punonjës paralel   |      tdb1|              LWLock|        buffer_mapping|            00:01:41
|    9|              punonjës paralel   |      tdb1|                  IO|          DataFileRead|            00:01:22
|   10|              punonjës paralel   |      tdb1|                  IO|           BufFileRead|            00:00:59
|   11|                    walshkrues  |          |                  IO|              WALWrite|            00:00:57
|   12|              punonjës paralel   |      tdb1|              LWLock|             buffer_io|            00:00:47
|   13|            punonjës autovakuumi |      tdb1|              LWLock|        buffer_mapping|            00:00:13
|   14|            shkruesi në sfond   |          |                  IO|         DataFileWrite|            00:00:12
|   15|                 kontrolluesi    |          |                  IO|         DataFileWrite|            00:00:11
|   16|                    walshkrues  |          |              LWLock|          WALWriteLock|            00:00:09
|   17|                 kontrolluesi    |          |              LWLock|          WALWriteLock|            00:00:06
|   18|            shkruesi në sfond   |          |              LWLock|          WALWriteLock|            00:00:06
|   19|                    walshkrues  |          |                  IO|          WALInitWrite|            00:00:02
|   20|            punonjës autovakuumi |      tdb1|              LWLock|          WALWriteLock|            00:00:02
|   21|                    walshkrues  |          |                  IO|           WALInitSync|            00:00:02
|   22|            punonjës autovakuumi |      tdb1|                  IO|          DataFileRead|            00:00:01
|   23|                 kontrolluesi    |          |                  IO| ControlFileSyncUpdate|            00:00:01
|   24|            shkruesi në sfond   |          |                  IO|              WALWrite|            00:00:01
|   25|            shkruesi në sfond   |          |                  IO|         DataFileFlush|            00:00:01
|   26|                 kontrolluesi    |          |                  IO|         SLRUFlushSync|            00:00:01
|   27|            punonjës autovakuumi |      tdb1|                  IO|              WALWrite|            00:00:01
|   28|                 kontrolluesi    |          |                  IO|          DataFileSync|            00:00:01
+-----+-----------------------------+----------+--------------------+----------------------+--------------------

PRITJET PËR SQL — pritjet pĂ«r kĂ«rkesa tĂ« veçanta sipas queryid

Kërkesë

Zgjidhni 
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')) si duratë 
FROM 
  activity_hist.archive_pg_stat_activity aa
WHERE 
  timepoint NGA pg_stat_history_begin+(current_hour_diff * interval '1 hour') DHE pg_stat_history_end+(current_hour_diff * interval '1 hour') DHE backend_type = 'client backend' DHE wait_event_type NUK ËSHTË NULL DHE queryid NUK ËSHTË NULL 
GROUP BY queryid, datname, wait_event_type, wait_event
ORDER BY 1, 5 DESC 

Shembuj

+-----+-------------------------+----------+--------------------+--------------------+--------------------+--------------------
|    #|                  queryid|    dbname|     wait_event_type|          wait_event|            waitings|               total
|     |                         |          |                    |                    |            duration|            duration
+-----+-------------------------+----------+--------------------+--------------------+--------------------+--------------------
|    1|     -8247416849404883188|      tdb1|              Client|          ClientRead|            00:00:02|
|    2|     -6572922443698419129|      tdb1|              Client|          ClientRead|            00:00:05|
|    3|     -6572922443698419129|      tdb1|                  IO|        DataFileRead|            00:00:01|
|    4|     -5917408132400665328|      tdb1|              Client|          ClientRead|            00:00:04|
|    5|     -4091009262735781873|      tdb1|              Client|          ClientRead|            00:00:03|
|    6|     -1473395109729441239|      tdb1|              Client|          ClientRead|            00:00:01|
|    7|        28942442626229688|      tdb1|                  IO|        BufFileWrite|            00:01:34|            00:46:06
|    8|        28942442626229688|      tdb1|              LWLock|      buffer_mapping|            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|           buffer_io|            00:00:35|            00:46:06
|   12|        28942442626229688|      tdb1|              Client|          ClientRead|            00:00:05|            00:46:06
|   13|        28942442626229688|      tdb1|                 IPC| MessageQueueReceive|            00:00:03|            00:46:06
|   14|        28942442626229688|      tdb1|                 IPC|    BgWorkerShutdown|            00:00:01|            00:46:06
|   15|       389015618226997618|      tdb1|                Lock|       transactionid|            03:55:09|            04:14:15
|   16|       389015618226997618|      tdb1|                  IO|        DataFileRead|            03:23:09|            04:14:15
|   17|       389015618226997618|      tdb1|              LWLock|      buffer_mapping|            00:12:09|            04:14:15
|   18|       389015618226997618|      tdb1|              LWLock|           buffer_io|            00:10:18|            04:14:15
|   19|       389015618226997618|      tdb1|                Lock|               tuple|            00:00:35|            04:14:15
|   20|       389015618226997618|      tdb1|              LWLock|        WALWriteLock|            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|              Client|          ClientRead|            00:00:01|            04:14:15
|   24|       734234407411547467|      tdb1|              Client|          ClientRead|            00:00:11|
|   25|       734234407411547467|      tdb1|              LWLock|      buffer_mapping|            00:00:05|
|   26|       734234407411547467|      tdb1|                  IO|        DataFileRead|            00:00:02|
|   27|      1237430309438971376|      tdb1|              LWLock|      buffer_mapping|            00:02:18|            02:45:40
|   28|      1237430309438971376|      tdb1|                  IO|        DataFileRead|            00:00:27|            02:45:40
|   29|      1237430309438971376|      tdb1|              Client|          ClientRead|            00:00:02|            02:45:40
|   30|      2404820632950544954|      tdb1|              Client|          ClientRead|            00:00:01|
|   31|      2515308626622579467|      tdb1|              Client|          ClientRead|            00:00:02|
|   32|      4710212362688288619|      tdb1|              LWLock|      buffer_mapping|            00:03:08|            02:18:21
|   33|      4710212362688288619|      tdb1|                  IO|        DataFileRead|            00:00:22|            02:18:21
|   34|      4710212362688288619|      tdb1|              Client|          ClientRead|            00:00:06|            02:18:21
|   35|      4710212362688288619|      tdb1|              LWLock|           buffer_io|            00:00:02|            02:18:21
|   36|      9150846928388977274|      tdb1|                  IO|        DataFileRead|            00:01:19|
|   37|      9150846928388977274|      tdb1|              LWLock|      buffer_mapping|            00:00:34|
|   38|      9150846928388977274|      tdb1|              Client|          ClientRead|            00:00:10|
|   39|      9150846928388977274|      tdb1|              LWLock|           buffer_io|            00:00:01|
+-----+-------------------------+----------+--------------------+--------------------+--------------------+--------------------

STATISTIKAT E KLIENTËVE SQL — KËRKESAT MË TË MËDHA

Kërkesat për të marrë, përsëri, janë banale dhe për të kursyer hapësirë, nuk janë paraqitur.

Shembuj

+------------------------------------------------------------------------------------
| SQL i KLIENTIT sipas Kohës së Kalimit
+--------------------+----------+----------+----------+----------+----------+--------------------
|        koha e kaluar|     thirrje|  % kohë db|     % CPU|      % IO|    emri_db|             id_kërkese
+--------------------+----------+----------+----------+----------+----------+--------------------
|            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 i KLIENTIT sipas Kohës së CPU
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
|            koha CPU|     thirrje|  % kohë db|kohë_totale|     % CPU|      % IO|    emri_db|             id_kërkese
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
|            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
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
| SQL i KLIENTIT sipas Kohës së Pritjes së I/O
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
|        koha io_wait|     thirrje|  % kohë db|kohë_totale|     % CPU|      % IO|    emri_db|             id_kërkese
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
|            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 i KLIENTIT sipas Leximeve të Buffers të Ndara
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
|       lexime buffers|     thirrje|  % kohë db|kohë_totale|     % CPU|      % IO|    emri_db|             id_kërkese
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
|          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
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
| SQL i KLIENTIT sipas Kohës së Leximeve të Diskut
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
|           koha e leximit|     thirrje|  % kohë db|kohë_totale|     % CPU|      % IO|    emri_db|             id_kërkese
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
|            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
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
| SQL i KLIENTIT sipas Ekzekutimeve
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
|               thirrje|      rreshta|  % kohë db|kohë_totale|     % CPU|      % IO|    emri_db|             id_kërkese
+--------------------+----------+----------+----------+----------+----------+----------+--------------------
|                 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
+--------------------+----------+----------+----------+----------+----------+----------+--------------------

Përfundimi

Duke përdorimi i kërkesave të paraqitura dhe raportimeve të marra, mund të kemi një pasqyrë më të plotë për analizën dhe zgjidhjen e problemeve të degradimit të performancës së kërkesave të veçanta dhe të gjithësisë së klasës, në tërësi.

Zhvillimi

Plani i zhvillimit është si më poshtë:

  • TĂ« plotĂ«sohet raporti me historinĂ« e bllokimeve. KĂ«rkesat janĂ« nĂ« testim dhe do tĂ« paraqiten sĂ« shpejti.
  • TĂ« pĂ«rdoret zgjerimi TimescaleDB pĂ«r ruajtjen e historisĂ« pg_stat_activity dhe pg_locks.
  • PĂ«rgatitni njĂ« zgjidhje grupore nĂ« github pĂ«r shpĂ«rndarjen masive nĂ« bazat e tĂ« dhĂ«nave nĂ« prodhim.

Vazhdon


Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster