1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140
|
/*--------------------------------------------------------------------
* Symbols referenced in this file:
* - pgStatSessionEndCause
*--------------------------------------------------------------------
*/
/* -------------------------------------------------------------------------
*
* pgstat_database.c
* Implementation of database statistics.
*
* This file contains the implementation of database statistics. It is kept
* separate from pgstat.c to enforce the line between the statistics access /
* storage implementation and the details about individual types of
* statistics.
*
* Copyright (c) 2001-2023, PostgreSQL Global Development Group
*
* IDENTIFICATION
* src/backend/utils/activity/pgstat_database.c
* -------------------------------------------------------------------------
*/
#include "postgres.h"
#include "utils/pgstat_internal.h"
#include "utils/timestamp.h"
#include "storage/procsignal.h"
static bool pgstat_should_report_connstat(void);
__thread SessionEndType pgStatSessionEndCause = DISCONNECT_NORMAL;
/*
* Remove entry for the database being dropped.
*/
/*
* Called from autovacuum.c to report startup of an autovacuum process.
* We are called before InitPostgres is done, so can't rely on MyDatabaseId;
* the db OID must be passed in, instead.
*/
/*
* Report a Hot Standby recovery conflict.
*/
/*
* Report a detected deadlock.
*/
/*
* Report one or more checksum failures.
*/
/*
* Report one checksum failure in the current database.
*/
/*
* Report creation of temporary file.
*/
/*
* Notify stats system of a new connection.
*/
/*
* Notify the stats system of a disconnect.
*/
/*
* Support function for the SQL-callable pgstat* functions. Returns
* the collected statistics for one database or NULL. NULL doesn't mean
* that the database doesn't exist, just that there are no statistics, so the
* caller is better off to report ZERO instead.
*/
/*
* Subroutine for pgstat_report_stat(): Handle xact commit/rollback and I/O
* timings.
*/
/*
* We report session statistics only for normal backend processes. Parallel
* workers run in parallel, so they don't contribute to session times, even
* though they use CPU time. Walsender processes could be considered here,
* but they have different session characteristics from normal backends (for
* example, they are always "active"), so they would skew session statistics.
*/
/*
* Find or create a local PgStat_StatDBEntry entry for dboid.
*/
/*
* Reset the database's reset timestamp, without resetting the contents of the
* database stats.
*/
/*
* Flush out pending stats for the entry
*
* If nowait is true, this function returns false if lock could not
* immediately acquired, otherwise true is returned.
*/
#define PGSTAT_ACCUM_DBCOUNT(item) \
(sharedent)->stats.item += (pendingent)->item
#undef PGSTAT_ACCUM_DBCOUNT
|