Was ist neu in Bezug auf die Überwachung in PostgreSQL 14

Hallo allerseits, PostgreSQL 14 Beta wurde diese Woche veröffentlicht. In diesem kurzen Beitrag gebe ich Ihnen einen schnellen Überblick darüber, was in Bezug auf Überwachung und Überwachung neu und nützlich ist.



Theoretisch sollte der Beitrag für diejenigen von Interesse sein, denen das Thema Überwachung und Auffinden von Problemen in PostgreSQL nicht gleichgültig ist - Systemadministratoren, DBA, SRE, DBRE.



  1. In pg_stat_activity wurde ein neues Feld query_id hinzugefügt. Das Feld enthält die Anforderungs-ID ähnlich der in pg_stat_statements . Mithilfe von drei Feldern datid / userid / query_id können Sie daher pg_stat_statements anhängen und die gesammelten Statistiken für einen bestimmten Abfragetyp anzeigen. Eine lustige Nuance - die Namen der Felder für die Zusammenführung von pg_stat_activity und pg_stat_statements sind unterschiedlich.



    Achtung, Text
    select a.*, s.* from pg_stat_activity a inner join pg_stat_statements s on (a.datid = s.dbid AND a.usesysid = s.userid AND a.query_id = s.queryid) where a.pid = 1001291;
    
    -[ RECORD 1 ]-------+-----------------------------------------------------------
    datid               | 16413
    datname             | pgbench
    pid                 | 1001291
    leader_pid          | 
    usesysid            | 10
    usename             | postgres
    application_name    | pgbench
    client_addr         | 
    client_hostname     | 
    client_port         | -1
    backend_start       | 2021-05-22 10:15:57.299468+05
    xact_start          | 2021-05-22 10:16:25.566151+05
    query_start         | 2021-05-22 10:16:25.566623+05
    state_change        | 2021-05-22 10:16:25.566763+05
    wait_event_type     | 
    wait_event          | 
    state               | idle in transaction
    backend_xid         | 237577
    backend_xmin        | 
    query_id            | 2517686606037258902
    query               | SELECT abalance FROM pgbench_accounts WHERE aid = 1715456;
    backend_type        | client backend
    userid              | 10
    dbid                | 16413
    toplevel            | t
    queryid             | 2517686606037258902
    query               | SELECT abalance FROM pgbench_accounts WHERE aid = $1
    plans               | 0
    total_plan_time     | 0
    min_plan_time       | 0
    max_plan_time       | 0
    mean_plan_time      | 0
    stddev_plan_time    | 0
    calls               | 209439
    total_exec_time     | 4251.98569499987
    min_exec_time       | 0.005414
    max_exec_time       | 0.435581
    mean_exec_time      | 0.020301785698938563
    stddev_exec_time    | 0.005889254053319066
    rows                | 209439
    shared_blks_hit     | 884097
    shared_blks_read    | 0
    shared_blks_dirtied | 0
    shared_blks_written | 0
    local_blks_hit      | 0
    local_blks_read     | 0
    local_blks_dirtied  | 0
    local_blks_written  | 0
    temp_blks_read      | 0
    temp_blks_written   | 0
    blk_read_time       | 0
    blk_write_time      | 0
    wal_records         | 149
    wal_fpi             | 2
    wal_bytes           | 9870
    
          
          







  2. Pg_stat_activity zeigt jetzt auch den WAL-Archivierer in der Prozessliste an. Bisher gibt es nicht viele Informationen, daher sind sie nicht besonders informativ und es gibt Raum für weitere Entwicklungen.

  3. In pg_stat_activity für Wal-Absenderprozesse (die an der Replikation teilnehmen) wird im Abfragefeld der Befehl für das Replikationsprotokoll angezeigt. Diese kleine Verbesserung ermöglicht das Verfolgen von Replikationsbefehlen zwischen Master und Replikaten. Bisher war dies nur über Protokolle mit aktiviertem Parameter log_replication_commands möglich.

  4. Das Waitstart- Feld wurde zu pg_locks hinzugefügt - dem Zeitpunkt, ab dem das Warten begann. In diesem Feld können Sie das Zeitlimit abrufen, ohne pg_stat_activity anzuhängen. Einerseits scheint es praktisch zu sein, aber um den Abfragetext zu übernehmen, müssen Sie noch pg_stat_activity anhängen. Für die Verwendung als Metrik ist es jedoch durchaus geeignet. In diesem Fall ist der Abfragetext möglicherweise nicht interessant.



    Sieht so aus
    # select pid,mode,now()-waitstart as wait_time from pg_locks where not granted;
    -[ RECORD 1 ]--------------
    pid       | 1068094
    mode      | ShareLock
    wait_time | 00:00:12.669753
    -[ RECORD 2 ]--------------
    pid       | 1068093
    mode      | ShareLock
    wait_time | 00:00:14.789208
    	
          
          







  5. pg_stat_database. session_time, active_time, idle_in_transaction_time — , . — ( state), , () . — sessions, sessions_abandoned, sessions_fatal, sessions_killed . .

  6. pg_stat_progress_copy. COPY. 1) (pg_dump), 2) COPY, 3) /.



    -[ RECORD 1 ]----+----------
    pid              | 1068106
    datid            | 16413
    datname          | pgbench
    relid            | 17612
    command          | COPY FROM
    type             | FILE
    bytes_processed  | 30998528
    bytes_total      | 195764221
    tuples_processed | 313263
    tuples_excluded  | 0
    
          
          







  7. pg_stat_wal — WAL. 13 . 13- pg_stat_statements . ( ).



    -[ RECORD 1 ]----+------------------------------
    wal_records      | 40811237
    wal_fpi          | 1551923
    wal_bytes        | 13744020096
    wal_buffers_full | 509935
    wal_write        | 1177449
    wal_sync         | 666045
    wal_write_time   | 26449.751
    wal_sync_time    | 10956905.427
    stats_reset      | 2021-05-21 10:33:39.009804+05
    
          
          







  8. pg_stat_replication_slots. (PUBLICATIONS/SUBSCRIPTIONS, Debezium), pg_replication_slots.

  9. toplevel pg_stat_statements. pg_stat_statements , . , — . - , . .

  10. pg_stat_statements_info. — pg_stat_statements. , pg_stat_statements , . pg_stat_statements.max.

  11. pg_backend_memory_contexts — . . .

  12. , .



    pg_log_backend_memory_contexts() — , , pg_backend_memory_contexts.



    , — ( ) , , . . ( , ). , . , .

  13. pg_prepared_statementsgeneric_plans, custom_plans — . , .

  14. pg_get_wal_replay_pause_state(). pg_is_wal_replay_paused(). . — not paused, pause requested, paused.

  15. log_recovery_conflict_waits — WAL . , -.

  16. pg_lsn . pg_lsn WAL — . pg_lsn .



    ,
    pgbench=# select '1/8000000'::pg_lsn + 16777216;
    -[ RECORD 1 ]-------
    ?column? | 1/9000000
    
    pgbench=# select '1/8000000'::pg_lsn - 16777216;
    -[ RECORD 1 ]-------
    ?column? | 1/7000000
    
          
          







  17. - autovacuum autoanalyze. log_autovacuum_min_duration.



    -
    2021-05-22 10:50:48.000 +05 1005664 @ from  [vxid:4/309623 txid:0] [] LOG:  automatic vacuum of table "pgbench.public.pgbench_accounts": index scans: 1
            pages: 0 removed, 65600 remain, 0 skipped due to pins, 0 skipped frozen
            tuples: 1936414 removed, 2000605 remain, 566 are dead but not yet removable, oldest xmin: 253998
            buffer usage: 92201 hits, 108672 misses, 129131 dirtied
            index scan needed: 58623 pages from table (89.36% of total) had 1961508 dead item identifiers removed
            index "pgbench_accounts_pkey": pages: 10970 in total, 0 newly deleted, 0 currently deleted, 0 reusable
            avg read rate: 3.522 MB/s, avg write rate: 4.185 MB/s
            I/O Timings: read=392.361 write=1964.360
            system usage: CPU: user: 2.92 s, system: 1.79 s, elapsed: 241.07 s
            WAL usage: 195815 records, 72916 full page images, 308792606 bytes
    
          
          









Das ist alles.



Abschließend möchte ich eine Ankündigung der Veranstaltung machen - PG Day'21 Russland wird am 8. und 9. Juli online stattfinden . Es wird ein zweitägiger PostgreSQL-Fan-Treffpunkt mit 12 Vorträgen von in- und ausländischen Sprechern sein. Die Teilnahme ist kostenlos. Die Annahme der Papiere ist auch offen , bis 7. Juni



Das ist alles, vielen Dank für Ihre Aufmerksamkeit!



All Articles