PostgreSQL14での監視に関する新機能

みなさん、こんにちは。PostgreSQL14ベータ版が今週リリースされました。この短い投稿では、監視と監視の観点から新しくて便利なものの概要を簡単に説明します。



理論的には、この投稿は、PostgreSQLの問題の監視と発見のトピックに無関心ではない人(システム管理者、DBA、SRE、DBRE)にとって興味深いはずです。



  1. をpg_stat_activity新しいフィールドQUERY_IDを追加しました。このフィールドには、pg_stat_statementsと同様のリクエストIDが含まれていますしたがって、datid / userid / query_idフィールドのトリオを使用して、pg_stat_statementsを添付し、特定のタイプのクエリの累積統計を表示できます。面白いニュアンス-pg_stat_activityとpg_stat_statementsの間のマージのフィールドの名前が異なります。



    注意、テキスト
    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は、プロセスリストにWALアーカイバも表示するようになりました。これまでのところ、情報はあまりないので、特に有益ではなく、さらなる発展の余地があります。

  3. wal送信者プロセス(レプリケーションに参加している)のpg_stat_activityで、クエリフィールドにレプリケーションプロトコルコマンドが表示されます。この小さな改善により、マスターとレプリカ間のレプリケーションコマンドの追跡が可能になります。以前は、log_replication_commandsパラメーターが有効になっているログを介してのみ可能でした。

  4. waitstartの待ち時間が始まったから、時間-フィールドは、としてpg_locksに追加されました。このフィールドでは、pg_stat_activityをアタッチせずにタイムアウトを取得できます。一方では便利なようですが、クエリテキストを取得するには、pg_stat_activityを添付する必要があります。ただし、メトリックとして使用するには、非常に適しています。この場合、クエリテキストは面白くない可能性があります。



    そのように見えます
    # 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
    
          
          









それで全部です。



結論として、私はイベントの発表をしたいと思います-PG Day'21ロシアは7月8日と9日にオンラインで開催されます これは、国内外のスピーカーから12回の講演が行われる2日間のPostgreSQLファンのたまり場になります。参加は無料です。論文の受け入れでもある オープン6月7日まで



すべてです、ご清聴ありがとうございました!



All Articles