pg_stat_monitor/main/USER_GUIDE.html

1901 lines
196 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!doctype html>
<html lang="en" class="no-js">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Documentation">
<meta name="author" content="Percona LLC">
<link rel="icon" href="_images/percona-favicon.ico">
<meta name="generator" content="mkdocs-1.3.0, mkdocs-material-8.2.8">
<title>User guide - pg_stat_monitor Documentation</title>
<link rel="stylesheet" href="assets/stylesheets/main.644de097.min.css">
<link rel="stylesheet" href="assets/stylesheets/palette.e6a45f82.min.css">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback">
<style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style>
<link rel="stylesheet" href="https://unicons.iconscout.com/release/v3.0.3/css/line.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.4.0/css/font-awesome.min.css">
<link rel="stylesheet" href="css/version-select.css">
<link rel="stylesheet" href="css/toctree.css">
<link rel="stylesheet" href="css/percona.css">
<script>__md_scope=new URL(".",location),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script>
</head>
<body dir="ltr" data-md-color-scheme="percona-light" data-md-color-primary="" data-md-color-accent="">
<script>var palette=__md_get("__palette");if(palette&&"object"==typeof palette.color)for(var key of Object.keys(palette.color))document.body.setAttribute("data-md-color-"+key,palette.color[key])</script>
<input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off">
<input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off">
<label class="md-overlay" for="__drawer"></label>
<div data-md-component="skip">
<a href="#user-guide" class="md-skip">
Skip to content
</a>
</div>
<div data-md-component="announce">
</div>
<div data-md-component="outdated" hidden>
<aside class="md-banner md-banner--warning">
</aside>
</div>
<header class="md-header" data-md-component="header">
<nav class="md-header__inner md-grid" aria-label="Header">
<a href="index.html" title="pg_stat_monitor Documentation" class="md-header__button md-logo" aria-label="pg_stat_monitor Documentation" data-md-component="logo">
<img src="_images/percona-logo.svg" alt="logo">
</a>
<label class="md-header__button md-icon" for="__drawer">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3V6m0 5h18v2H3v-2m0 5h18v2H3v-2z"/></svg>
</label>
<div class="md-header__title" data-md-component="header-title">
<div class="md-header__ellipsis">
<div class="md-header__topic">
<span class="md-ellipsis">
pg_stat_monitor Documentation
</span>
</div>
<div class="md-header__topic" data-md-component="header-topic">
<span class="md-ellipsis">
User guide
</span>
</div>
</div>
</div>
<form class="md-header__option" data-md-component="palette">
<input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="percona-light" data-md-color-primary="" data-md-color-accent="" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1">
<label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 6H7c-3.31 0-6 2.69-6 6s2.69 6 6 6h10c3.31 0 6-2.69 6-6s-2.69-6-6-6zm0 10H7c-2.21 0-4-1.79-4-4s1.79-4 4-4h10c2.21 0 4 1.79 4 4s-1.79 4-4 4zM7 9c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3z"/></svg>
</label>
<input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="" data-md-color-accent="" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_2">
<label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1" hidden>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M17 7H7a5 5 0 0 0-5 5 5 5 0 0 0 5 5h10a5 5 0 0 0 5-5 5 5 0 0 0-5-5m0 8a3 3 0 0 1-3-3 3 3 0 0 1 3-3 3 3 0 0 1 3 3 3 3 0 0 1-3 3z"/></svg>
</label>
</form>
<label class="md-header__button md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
</label>
<div class="md-search" data-md-component="search" role="dialog">
<label class="md-search__overlay" for="__search"></label>
<div class="md-search__inner" role="search">
<form class="md-search__form" name="search">
<input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required>
<label class="md-search__icon md-icon" for="__search">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.516 6.516 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5z"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</label>
<nav class="md-search__options" aria-label="Search">
<button type="reset" class="md-search__icon md-icon" aria-label="Clear" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z"/></svg>
</button>
</nav>
</form>
<div class="md-search__output">
<div class="md-search__scrollwrap" data-md-scrollfix>
<div class="md-search-result" data-md-component="search-result">
<div class="md-search-result__meta">
Initializing search
</div>
<ol class="md-search-result__list"></ol>
</div>
</div>
</div>
</div>
</div>
<div class="md-header__source">
<a href="https://github.com/percona/pg_stat_monitor" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
percona/pg_stat_monitor
</div>
</a>
</div>
</nav>
</header>
<div class="md-container" data-md-component="container">
<main class="md-main" data-md-component="main">
<div class="md-main__inner md-grid">
<div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--primary" aria-label="Navigation" data-md-level="0">
<label class="md-nav__title" for="__drawer">
<a href="index.html" title="pg_stat_monitor Documentation" class="md-nav__button md-logo" aria-label="pg_stat_monitor Documentation" data-md-component="logo">
<img src="_images/percona-logo.svg" alt="logo">
</a>
pg_stat_monitor Documentation
</label>
<div class="md-nav__source">
<a href="https://github.com/percona/pg_stat_monitor" title="Go to repository" class="md-source" data-md-component="source">
<div class="md-source__icon md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Free 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2022 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81z"/></svg>
</div>
<div class="md-source__repository">
percona/pg_stat_monitor
</div>
</a>
</div>
<ul class="md-nav__list" data-md-scrollfix>
<li class="md-nav__item">
<a href="index.html" class="md-nav__link">
Welcome
</a>
</li>
<li class="md-nav__item">
<a href="setup.html" class="md-nav__link">
Setting up `pg_stat_monitor`
</a>
</li>
<li class="md-nav__item md-nav__item--active">
<input class="md-nav__toggle md-toggle" data-md-toggle="toc" type="checkbox" id="__toc">
<label class="md-nav__link md-nav__link--active" for="__toc">
User guide
<span class="md-nav__icon md-icon"></span>
</label>
<a href="USER_GUIDE.html" class="md-nav__link md-nav__link--active">
User guide
</a>
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#introduction" class="md-nav__link">
Introduction
</a>
</li>
<li class="md-nav__item">
<a href="#features" class="md-nav__link">
Features
</a>
<nav class="md-nav" aria-label="Features">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#time-buckets" class="md-nav__link">
Time buckets
</a>
</li>
<li class="md-nav__item">
<a href="#table-and-index-access-statistics-per-statement" class="md-nav__link">
Table and index access statistics per statement
</a>
</li>
<li class="md-nav__item">
<a href="#query-and-client-information" class="md-nav__link">
Query and client information
</a>
</li>
<li class="md-nav__item">
<a href="#query-timing-information" class="md-nav__link">
Query timing information
</a>
</li>
<li class="md-nav__item">
<a href="#query-execution-plan-information" class="md-nav__link">
Query execution plan information
</a>
</li>
<li class="md-nav__item">
<a href="#use-of-actual-data-or-parameters-placeholders-in-queries" class="md-nav__link">
Use of actual data or parameters placeholders in queries
</a>
</li>
<li class="md-nav__item">
<a href="#query-type-filtering" class="md-nav__link">
Query type filtering
</a>
</li>
<li class="md-nav__item">
<a href="#query-metadata" class="md-nav__link">
Query metadata
</a>
</li>
<li class="md-nav__item">
<a href="#top-query-tracking" class="md-nav__link">
Top query tracking
</a>
</li>
<li class="md-nav__item">
<a href="#relations" class="md-nav__link">
Relations
</a>
</li>
<li class="md-nav__item">
<a href="#monitoring-queries-terminated-with-error-warning-and-log-error-levels" class="md-nav__link">
Monitoring queries terminated with ERROR, WARNING and LOG error levels
</a>
</li>
<li class="md-nav__item">
<a href="#integration-with-pmm" class="md-nav__link">
Integration with PMM
</a>
</li>
<li class="md-nav__item">
<a href="#histogram" class="md-nav__link">
Histogram
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#views" class="md-nav__link">
Views
</a>
<nav class="md-nav" aria-label="Views">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pg_stat_monitor-view" class="md-nav__link">
pg_stat_monitor view
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitor_settings-view" class="md-nav__link">
pg_stat_monitor_settings view
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#functions" class="md-nav__link">
Functions
</a>
<nav class="md-nav" aria-label="Functions">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pg_stat_monitor_reset" class="md-nav__link">
pg_stat_monitor_reset()
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitor_version" class="md-nav__link">
pg_stat_monitor_version()
</a>
</li>
<li class="md-nav__item">
<a href="#histogrambucket-id-query-id" class="md-nav__link">
histogram(bucket id, query id)
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#configuration" class="md-nav__link">
Configuration
</a>
<nav class="md-nav" aria-label="Configuration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#parameters-description" class="md-nav__link">
Parameters description:
</a>
<nav class="md-nav" aria-label="Parameters description:">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_max" class="md-nav__link">
pg_stat_monitor.pgsm_max
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_query_max_len" class="md-nav__link">
pg_stat_monitor.pgsm_query_max_len
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_track_utility" class="md-nav__link">
pg_stat_monitor.pgsm_track_utility
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_normalized_query" class="md-nav__link">
pg_stat_monitor.pgsm_normalized_query
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_max_buckets" class="md-nav__link">
pg_stat_monitor.pgsm_max_buckets
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_bucket_time" class="md-nav__link">
pg_stat_monitor.pgsm_bucket_time
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_histogram_min" class="md-nav__link">
pg_stat_monitor.pgsm_histogram_min
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_histogram_max" class="md-nav__link">
pg_stat_monitor.pgsm_histogram_max
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_histogram_buckets" class="md-nav__link">
pg_stat_monitor.pgsm_histogram_buckets
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_query_shared_buffer" class="md-nav__link">
pg_stat_monitor.pgsm_query_shared_buffer
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_overflow_target" class="md-nav__link">
pg_stat_monitor.pgsm_overflow_target
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_enable_query_plan" class="md-nav__link">
pg_stat_monitor.pgsm_enable_query_plan
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitortrack" class="md-nav__link">
pg_stat_monitor.track
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorextract_comments" class="md-nav__link">
pg_stat_monitor.extract_comments
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_track_planning" class="md-nav__link">
pg_stat_monitor.pgsm_track_planning
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#usage-examples" class="md-nav__link">
Usage examples
</a>
<nav class="md-nav" aria-label="Usage examples">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#querying-buckets" class="md-nav__link">
Querying buckets
</a>
</li>
<li class="md-nav__item">
<a href="#query-information" class="md-nav__link">
Query information
</a>
</li>
<li class="md-nav__item">
<a href="#query-timing-information_1" class="md-nav__link">
Query timing information
</a>
</li>
<li class="md-nav__item">
<a href="#query-execution-plan" class="md-nav__link">
Query execution plan
</a>
</li>
<li class="md-nav__item">
<a href="#query-type-filtering_1" class="md-nav__link">
Query type filtering
</a>
</li>
<li class="md-nav__item">
<a href="#query-metadata_1" class="md-nav__link">
Query metadata
</a>
</li>
<li class="md-nav__item">
<a href="#top-query-tracking_1" class="md-nav__link">
Top query tracking
</a>
</li>
<li class="md-nav__item">
<a href="#relations_1" class="md-nav__link">
Relations
</a>
</li>
<li class="md-nav__item">
<a href="#queries-terminated-with-errors" class="md-nav__link">
Queries terminated with errors
</a>
</li>
<li class="md-nav__item">
<a href="#histogram_1" class="md-nav__link">
Histogram
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="REFERENCE.html" class="md-nav__link">
`pg_stat_monitor` view reference
</a>
</li>
<li class="md-nav__item">
<a href="COMPARISON.html" class="md-nav__link">
Comparing pg_stat_monitor and pg_stat_statements
</a>
</li>
<li class="md-nav__item">
<a href="RELEASE_NOTES.html" class="md-nav__link">
Release notes
</a>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc" >
<div class="md-sidebar__scrollwrap">
<div class="md-sidebar__inner">
<nav class="md-nav md-nav--secondary" aria-label="Table of contents">
<label class="md-nav__title" for="__toc">
<span class="md-nav__icon md-icon"></span>
Table of contents
</label>
<ul class="md-nav__list" data-md-component="toc" data-md-scrollfix>
<li class="md-nav__item">
<a href="#introduction" class="md-nav__link">
Introduction
</a>
</li>
<li class="md-nav__item">
<a href="#features" class="md-nav__link">
Features
</a>
<nav class="md-nav" aria-label="Features">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#time-buckets" class="md-nav__link">
Time buckets
</a>
</li>
<li class="md-nav__item">
<a href="#table-and-index-access-statistics-per-statement" class="md-nav__link">
Table and index access statistics per statement
</a>
</li>
<li class="md-nav__item">
<a href="#query-and-client-information" class="md-nav__link">
Query and client information
</a>
</li>
<li class="md-nav__item">
<a href="#query-timing-information" class="md-nav__link">
Query timing information
</a>
</li>
<li class="md-nav__item">
<a href="#query-execution-plan-information" class="md-nav__link">
Query execution plan information
</a>
</li>
<li class="md-nav__item">
<a href="#use-of-actual-data-or-parameters-placeholders-in-queries" class="md-nav__link">
Use of actual data or parameters placeholders in queries
</a>
</li>
<li class="md-nav__item">
<a href="#query-type-filtering" class="md-nav__link">
Query type filtering
</a>
</li>
<li class="md-nav__item">
<a href="#query-metadata" class="md-nav__link">
Query metadata
</a>
</li>
<li class="md-nav__item">
<a href="#top-query-tracking" class="md-nav__link">
Top query tracking
</a>
</li>
<li class="md-nav__item">
<a href="#relations" class="md-nav__link">
Relations
</a>
</li>
<li class="md-nav__item">
<a href="#monitoring-queries-terminated-with-error-warning-and-log-error-levels" class="md-nav__link">
Monitoring queries terminated with ERROR, WARNING and LOG error levels
</a>
</li>
<li class="md-nav__item">
<a href="#integration-with-pmm" class="md-nav__link">
Integration with PMM
</a>
</li>
<li class="md-nav__item">
<a href="#histogram" class="md-nav__link">
Histogram
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#views" class="md-nav__link">
Views
</a>
<nav class="md-nav" aria-label="Views">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pg_stat_monitor-view" class="md-nav__link">
pg_stat_monitor view
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitor_settings-view" class="md-nav__link">
pg_stat_monitor_settings view
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#functions" class="md-nav__link">
Functions
</a>
<nav class="md-nav" aria-label="Functions">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pg_stat_monitor_reset" class="md-nav__link">
pg_stat_monitor_reset()
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitor_version" class="md-nav__link">
pg_stat_monitor_version()
</a>
</li>
<li class="md-nav__item">
<a href="#histogrambucket-id-query-id" class="md-nav__link">
histogram(bucket id, query id)
</a>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#configuration" class="md-nav__link">
Configuration
</a>
<nav class="md-nav" aria-label="Configuration">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#parameters-description" class="md-nav__link">
Parameters description:
</a>
<nav class="md-nav" aria-label="Parameters description:">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_max" class="md-nav__link">
pg_stat_monitor.pgsm_max
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_query_max_len" class="md-nav__link">
pg_stat_monitor.pgsm_query_max_len
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_track_utility" class="md-nav__link">
pg_stat_monitor.pgsm_track_utility
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_normalized_query" class="md-nav__link">
pg_stat_monitor.pgsm_normalized_query
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_max_buckets" class="md-nav__link">
pg_stat_monitor.pgsm_max_buckets
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_bucket_time" class="md-nav__link">
pg_stat_monitor.pgsm_bucket_time
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_histogram_min" class="md-nav__link">
pg_stat_monitor.pgsm_histogram_min
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_histogram_max" class="md-nav__link">
pg_stat_monitor.pgsm_histogram_max
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_histogram_buckets" class="md-nav__link">
pg_stat_monitor.pgsm_histogram_buckets
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_query_shared_buffer" class="md-nav__link">
pg_stat_monitor.pgsm_query_shared_buffer
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_overflow_target" class="md-nav__link">
pg_stat_monitor.pgsm_overflow_target
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_enable_query_plan" class="md-nav__link">
pg_stat_monitor.pgsm_enable_query_plan
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitortrack" class="md-nav__link">
pg_stat_monitor.track
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorextract_comments" class="md-nav__link">
pg_stat_monitor.extract_comments
</a>
</li>
<li class="md-nav__item">
<a href="#pg_stat_monitorpgsm_track_planning" class="md-nav__link">
pg_stat_monitor.pgsm_track_planning
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</li>
<li class="md-nav__item">
<a href="#usage-examples" class="md-nav__link">
Usage examples
</a>
<nav class="md-nav" aria-label="Usage examples">
<ul class="md-nav__list">
<li class="md-nav__item">
<a href="#querying-buckets" class="md-nav__link">
Querying buckets
</a>
</li>
<li class="md-nav__item">
<a href="#query-information" class="md-nav__link">
Query information
</a>
</li>
<li class="md-nav__item">
<a href="#query-timing-information_1" class="md-nav__link">
Query timing information
</a>
</li>
<li class="md-nav__item">
<a href="#query-execution-plan" class="md-nav__link">
Query execution plan
</a>
</li>
<li class="md-nav__item">
<a href="#query-type-filtering_1" class="md-nav__link">
Query type filtering
</a>
</li>
<li class="md-nav__item">
<a href="#query-metadata_1" class="md-nav__link">
Query metadata
</a>
</li>
<li class="md-nav__item">
<a href="#top-query-tracking_1" class="md-nav__link">
Top query tracking
</a>
</li>
<li class="md-nav__item">
<a href="#relations_1" class="md-nav__link">
Relations
</a>
</li>
<li class="md-nav__item">
<a href="#queries-terminated-with-errors" class="md-nav__link">
Queries terminated with errors
</a>
</li>
<li class="md-nav__item">
<a href="#histogram_1" class="md-nav__link">
Histogram
</a>
</li>
</ul>
</nav>
</li>
</ul>
</nav>
</div>
</div>
</div>
<div class="md-content" data-md-component="content">
<article class="md-content__inner md-typeset">
<a href="https://github.com/percona/pg_stat_monitor/edit/master/docs/USER_GUIDE.md" title="Edit this page" class="md-content__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75L3 17.25z"/></svg>
</a>
<h1 id="user-guide">User Guide<a class="headerlink" href="#user-guide" title="Permanent link">&para;</a></h1>
<ul>
<li><a href="#introduction">Introduction</a></li>
<li><a href="#features">Features</a></li>
<li><a href="#views">Views</a></li>
<li><a href="#functions">Functions</a></li>
<li><a href="#configuration">Configuration</a></li>
<li><a href="#usage-examples">Usage examples</a></li>
</ul>
<h2 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permanent link">&para;</a></h2>
<p>This document describes the features, functions and configuration of the <code>pg_stat_monitor</code> extension and gives some usage examples. For how to install and set up <code>pg_stat_monitor</code>, see <a href="https://github.com/percona/pg_stat_monitor/blob/master/README.md#installation">Installation in README</a>.</p>
<h2 id="features">Features<a class="headerlink" href="#features" title="Permanent link">&para;</a></h2>
<p>The following are the key features of pg_stat_monitor:</p>
<ul>
<li><a href="#time-buckets">Time buckets</a>,</li>
<li><a href="#table-and-index-access-statistics-per-statement">Table and index access statistics per statement</a>,</li>
<li>Query statistics:</li>
<li><a href="#query-and-client-information">Query and client information</a>,</li>
<li><a href="#query-timing-information">Query timing information</a>,</li>
<li><a href="#query-execution-plan-information">Query execution plan information</a>,</li>
<li><a href="#use-of-actual-data-or-parameters-placeholders-in-queries">Use of actual data or parameters placeholders in queries</a>,</li>
<li><a href="#query-type-filtering">Query type filtering</a>,</li>
<li><a href="#query-metadata">Query metadata supporting Googles Sqlcommentor</a>,</li>
<li><a href="#top-query-tracking">Top query tracking</a>,</li>
<li><a href="#relations">Relations</a> - showing tables involved in a query,</li>
<li><a href="#monitoring-of-queries-terminated-with-error-warning-and-log-error-levels">Monitoring of queries terminated with ERROR, WARNING and LOG error levels</a>,</li>
<li><a href="#integration-with-pmm">Integration with Percona Monitoring and Management (PMM) tool</a>,</li>
<li><a href="#histogram">Histograms</a> - visual representation of query performance.</li>
</ul>
<h3 id="time-buckets">Time buckets<a class="headerlink" href="#time-buckets" title="Permanent link">&para;</a></h3>
<p>Instead of supplying one set of ever-increasing counts, <code>pg_stat_monitor</code> computes stats for a configured number of time intervals; time buckets. This allows for much better data accuracy, especially in the case of high-resolution or unreliable networks. </p>
<h3 id="table-and-index-access-statistics-per-statement">Table and index access statistics per statement<a class="headerlink" href="#table-and-index-access-statistics-per-statement" title="Permanent link">&para;</a></h3>
<p><code>pg_stat_monitor</code> collects the information about what tables were accessed by a statement. This allows you to identify all queries which access a given table easily.</p>
<h3 id="query-and-client-information">Query and client information<a class="headerlink" href="#query-and-client-information" title="Permanent link">&para;</a></h3>
<p><code>pg_stat_monitor</code> provides additional metrics for detailed analysis of query performance from various perspectives, including client connection details like user name, application name, IP address to name a few relevant columns.
With this information, <code>pg_stat_monitor</code> enables users to track a query to the originating application. More details about the application or query may be incorporated in the SQL query in a <a href="https://google.github.io/sqlcommenter/">Googles Sqlcommenter</a> format.</p>
<p>To see how it works, refer to the <a href="#query-information">usage example</a></p>
<h3 id="query-timing-information">Query timing information<a class="headerlink" href="#query-timing-information" title="Permanent link">&para;</a></h3>
<p>Understanding query execution time stats helps you identify what affects query performance and take measures to optimize it. <code>pg_stat_monitor</code> collects the total, min, max and average (mean) time it took to execute a particular query and provides this data in separate columns. See the <a href="#query-timing-information-1">Query timing information</a> example for the sample output.</p>
<h3 id="query-execution-plan-information">Query execution plan information<a class="headerlink" href="#query-execution-plan-information" title="Permanent link">&para;</a></h3>
<p>Every query has a plan that was constructed for its executing. Collecting the query plan information as well as monitoring query plan timing helps you understand how you can modify the query to optimize its execution. It also helps make communication about the query clearer when discussing query performance with other DBAs and application developers.</p>
<p>See the <a href="##query-execution-plan">Query execution plan</a> example for the sample output.</p>
<h3 id="use-of-actual-data-or-parameters-placeholders-in-queries">Use of actual data or parameters placeholders in queries<a class="headerlink" href="#use-of-actual-data-or-parameters-placeholders-in-queries" title="Permanent link">&para;</a></h3>
<p>You can select whether to see queries with parameters placeholders or actual query data. The benefit of having the full query example is in being able to run the <a href="https://www.postgresql.org/docs/current/sql-explain.html">EXPLAIN</a> command on it to see how its execution was planned. As a result, you can modify the query to make it run better.</p>
<h3 id="query-type-filtering">Query type filtering<a class="headerlink" href="#query-type-filtering" title="Permanent link">&para;</a></h3>
<p><code>pg_stat_monitor</code> monitors queries per type (<code>SELECT</code>, <code>INSERT</code>, <code>UPDATE</code> or <code>DELETE</code>) and classifies them accordingly in the <code>cmd_type</code> column. This way you can separate the queries you are interested in and focus on identifying the issues and optimizing query performance.</p>
<p>See the <a href="#query-type-filtering-1">Query type filtering example</a> for the sample output.</p>
<h3 id="query-metadata">Query metadata<a class="headerlink" href="#query-metadata" title="Permanent link">&para;</a></h3>
<p>Googles Sqlcommenter is a useful tool that in a way bridges that gap between ORM libraries and understanding database performance. And <code>pg_stat_monitor</code> supports it. So, you can now put any key-value data (like what client executed a query or if it is testing vs production query) in the comments in <code>/* … */</code> syntax in your SQL statements, and the information will be parsed by <code>pg_stat_monitor</code> and made available in the comments column in the <code>pg_stat_monitor</code> view. For details on the comments syntax, see <a href="https://google.github.io/sqlcommenter/">Sqlcommenter documentation</a>.</p>
<p>To see how it works, see the <a href="#query-metadata-1">Query metadata</a> example.</p>
<h3 id="top-query-tracking">Top query tracking<a class="headerlink" href="#top-query-tracking" title="Permanent link">&para;</a></h3>
<p>Using functions is common. While running, functions can execute queries internally. <code>pg_stat_monitor</code> not only keeps track of all executed queries within a function, but also marks that function as top query.</p>
<p>Top query indicates the main query. To illustrate, for the SELECT query that is invoked within a function, the top query is calling this function.</p>
<p>This enables you to backtrack to the originating function and thus simplifies the tracking and analysis.</p>
<p>Find more details in the <a href="#top-query-tracking-1">usage example</a>.</p>
<h3 id="relations">Relations<a class="headerlink" href="#relations" title="Permanent link">&para;</a></h3>
<p><code>pg_stat_monitor</code> provides the list of tables involved in the query in the relations column. This reduces time on identifying the tables and simplifies the analysis. To learn more, see the <a href="#relations-1">usage examples</a></p>
<h3 id="monitoring-queries-terminated-with-error-warning-and-log-error-levels">Monitoring queries terminated with ERROR, WARNING and LOG error levels<a class="headerlink" href="#monitoring-queries-terminated-with-error-warning-and-log-error-levels" title="Permanent link">&para;</a></h3>
<p>Monitoring queries that terminate with ERROR, WARNING, LOG states can give useful information to debug an issue. Such messages have the error level (<code>elevel</code>), error code (<code>sqlcode</code>), and error message (<code>message</code>). <code>pg_stat_monitor</code> collects all this information and aggregates it so that you can measure performance for successful and failed queries separately, as well as understand why a particular query failed to execute successfully.</p>
<p>Find details in the <a href="#queries-terminated-with-errors">usage example</a></p>
<h3 id="integration-with-pmm">Integration with PMM<a class="headerlink" href="#integration-with-pmm" title="Permanent link">&para;</a></h3>
<p>To timely identify and react on issues, performance should be automated and alerts should be sent when an issue occurs. There are many monitoring tools available for PostgreSQL, some of them (like Nagios) supporting custom metrics provided via extensions. Though you can integrate <code>pg_stat_monitor</code> with these tools, it natively supports integration with Percona Management and Monitoring (PMM). This integration allows you to enjoy all the features provided by both solutions: advanced statistics data provided by <code>pg_stat_monitor</code> and automated monitoring with data visualization on dashboards, security threat checks and alerting, available in PMM out of the box.</p>
<p>To learn how to integrate pg_stat_monitor with PMM, see <a href="https://www.percona.com/doc/percona-monitoring-and-management/2.x/setting-up/client/postgresql.html#pg_stat_monitor">Configure pg_stat_monitor in PMM</a></p>
<h3 id="histogram">Histogram<a class="headerlink" href="#histogram" title="Permanent link">&para;</a></h3>
<p>Histogram (the <code>resp_calls</code> parameter) provides a visual representation of query performance. With the help of the histogram function, you can view a timing/calling data histogram in response to an SQL query.</p>
<p>Learn more about using histograms from the <a href="#histogram-1">usage example</a>.</p>
<h2 id="views">Views<a class="headerlink" href="#views" title="Permanent link">&para;</a></h2>
<p><code>pg_stat_monitor</code> provides the following views:
* <code>pg_stat_monitor</code> is the view where statistics data is presented.
* <code>pg_stat_monitor_settings</code> view shows available configuration options which you can change.</p>
<h3 id="pg_stat_monitor-view"><code>pg_stat_monitor</code> view<a class="headerlink" href="#pg_stat_monitor-view" title="Permanent link">&para;</a></h3>
<p>The statistics gathered by the module are made available via the view named <code>pg_stat_monitor</code>. This view contains one row for each distinct combination of metrics and whether it is a top-level statement or not (up to the maximum number of distinct statements that the module can track). For details about available counters, refer to the <a href="https://github.com/percona/pg_stat_monitor/blob/master/docs/REFERENCE.md"><code>pg_stat_monitor</code> view reference</a>.</p>
<p>The following are the primary keys for pg_stat_monitor:</p>
<ul>
<li><code>bucket</code>,</li>
<li><code>userid</code>,</li>
<li><code>dbid</code>,</li>
<li><code>client_ip</code>,</li>
<li><code>application_name</code>.</li>
</ul>
<p>A new row is created for each key in the <code>pg_stat_monitor</code> view.</p>
<p><code>pg_stat_monitor</code> inherits the metrics available in <code>pg_stat_statements</code>, plus provides additional ones. See the <a href="https://github.com/percona/pg_stat_monitor/blob/master/docs/REFERENCE.md"><code>pg_stat_monitor</code> vs <code>pg_stat_statements</code> comparison</a> for details.</p>
<p>For security reasons, only superusers and members of the <code>pg_read_all_stats</code> role are allowed to see the SQL text and <code>queryid</code> of queries executed by other users. Other users can see the statistics, however, if the view has been installed in their database.</p>
<h3 id="pg_stat_monitor_settings-view">pg_stat_monitor_settings view<a class="headerlink" href="#pg_stat_monitor_settings-view" title="Permanent link">&para;</a></h3>
<p>The <code>pg_stat_monitor_settings</code> view shows one row per <code>pg_stat_monitor</code> configuration parameter. It displays configuration parameter name, value, default value, description, minimum and maximum values, and whether a restart is required for a change in value to be effective.</p>
<h2 id="functions">Functions<a class="headerlink" href="#functions" title="Permanent link">&para;</a></h2>
<h3 id="pg_stat_monitor_reset">pg_stat_monitor_reset()<a class="headerlink" href="#pg_stat_monitor_reset" title="Permanent link">&para;</a></h3>
<p>This function resets all the statistics and clears the view. Eventually, the function will delete all the previous data.</p>
<h3 id="pg_stat_monitor_version">pg_stat_monitor_version()<a class="headerlink" href="#pg_stat_monitor_version" title="Permanent link">&para;</a></h3>
<p>This function provides the build version of <code>pg_stat_monitor</code> version.</p>
<div class="highlight"><pre><span></span><code>postgres=# select pg_stat_monitor_version();
pg_stat_monitor_version
-------------------------
devel
(1 row)
</code></pre></div>
<h3 id="histogrambucket-id-query-id">histogram(bucket id, query id)<a class="headerlink" href="#histogrambucket-id-query-id" title="Permanent link">&para;</a></h3>
<p>It is used to generate the histogram, you can refer to histogram sections.</p>
<h2 id="configuration">Configuration<a class="headerlink" href="#configuration" title="Permanent link">&para;</a></h2>
<p>Use the following command to view available configuration parameters in the <code>pg_stat_monitor_settings</code> view:</p>
<div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor_settings</span><span class="p">;</span><span class="w"></span>
</code></pre></div>
<p>To amend the <code>pg_stat_monitor</code> configuration, use the General Configuration Unit (GCU) system. Some configuration parameters require the server restart and should be set before the server startup. These must be set in the <code>postgresql.conf</code> file. Other parameters do not require server restart and can be set permanently either in the <code>postgresql.conf</code> or from the client (<code>psql</code>) using the SET or ALTER SYSTEM SET commands.</p>
<p>The following table shows setup options for each configuration parameter and whether the server restart is required to apply the parameter&rsquo;s value:</p>
<table>
<thead>
<tr>
<th>Parameter Name</th>
<th>postgresql.conf</th>
<th>SET</th>
<th>ALTER SYSTEM SET</th>
<th>server restart</th>
<th>configuration reload</th>
</tr>
</thead>
<tbody>
<tr>
<td><a href="#pg_stat_monitorpgsm_max">pg_stat_monitor.pgsm_max</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorpgsm_query_max_len">pg_stat_monitor.pgsm_query_max_len</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorpgsm_track_utility">pg_stat_monitor.pgsm_track_utility</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorpgsm_normalized_query">pg_stat_monitor.pgsm_normalized_query</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorpgsm_max_buckets">pg_stat_monitor.pgsm_max_buckets</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorpgsm_bucket_time">pg_stat_monitor.pgsm_bucket_time</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorpgsm_histogram_min">pg_stat_monitor.pgsm_histogram_min</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorpgsm_histogram_max">pg_stat_monitor.pgsm_histogram_max</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorpgsm_histogram_buckets">pg_stat_monitor.pgsm_histogram_buckets</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorpgsm_query_shared_buffer">pg_stat_monitor.pgsm_query_shared_buffer</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorpgsm_overflow_target">pg_stat_monitor.pgsm_overflow_target</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorpgsm_enable_query_plan">pg_stat_monitor.pgsm_enable_query_plan</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitortrack">pg_stat_monitor.track</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorextract_comments">pg_stat_monitor.extract_comments</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
</tr>
<tr>
<td><a href="#pg_stat_monitorpgsm_track_planning">pg_stat_monitor.pgsm_track_planning</a></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
<td><img alt="✔" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/2714.svg" title=":heavy_check_mark:" /></td>
<td><img alt="❌" class="twemoji" src="https://twemoji.maxcdn.com/v/latest/svg/274c.svg" title=":x:" /></td>
</tr>
</tbody>
</table>
<h4 id="parameters-description">Parameters description:<a class="headerlink" href="#parameters-description" title="Permanent link">&para;</a></h4>
<h5 id="pg_stat_monitorpgsm_max">pg_stat_monitor.pgsm_max<a class="headerlink" href="#pg_stat_monitorpgsm_max" title="Permanent link">&para;</a></h5>
<p>Values:
- Min: 1
- Max: 1000
- Default: 100</p>
<p>This parameter defines the limit of shared memory (in MB) for <code>pg_stat_monitor</code>. This memory is used by buckets in a circular manner. The memory is divided between the buckets equally, at the start of the PostgreSQL. Requires the server restart.</p>
<h5 id="pg_stat_monitorpgsm_query_max_len">pg_stat_monitor.pgsm_query_max_len<a class="headerlink" href="#pg_stat_monitorpgsm_query_max_len" title="Permanent link">&para;</a></h5>
<p>Values:
- Min: 1024
- Max: 2147483647
- Default: 1024</p>
<p>Sets the maximum size of the query. This parameter can only be set at the start of PostgreSQL. For long queries, the query is truncated to that particular length. This is to avoid unnecessary usage of shared memory. Requires the server restart.</p>
<h5 id="pg_stat_monitorpgsm_track_utility">pg_stat_monitor.pgsm_track_utility<a class="headerlink" href="#pg_stat_monitorpgsm_track_utility" title="Permanent link">&para;</a></h5>
<p>Type: boolean. Default: 1</p>
<p>This parameter controls whether utility commands are tracked by the module. Utility commands are all those other than <code>SELECT</code>, <code>INSERT</code>, <code>UPDATE</code>, and <code>DELETE</code>.</p>
<h5 id="pg_stat_monitorpgsm_normalized_query">pg_stat_monitor.pgsm_normalized_query<a class="headerlink" href="#pg_stat_monitorpgsm_normalized_query" title="Permanent link">&para;</a></h5>
<p>Type: boolean. Default: 1</p>
<p>By default, the query shows the actual parameter instead of the placeholder. It is quite useful when users want to use that query and try to run that query to check the abnormalities. But in most cases users like the queries with a placeholder. This parameter is used to toggle between the two said options.</p>
<h5 id="pg_stat_monitorpgsm_max_buckets">pg_stat_monitor.pgsm_max_buckets<a class="headerlink" href="#pg_stat_monitorpgsm_max_buckets" title="Permanent link">&para;</a></h5>
<p>Values:
- Min: 1
- Max: 10
- Default: 10</p>
<p><code>pg_stat_monitor</code> accumulates the information in the form of buckets. All the aggregated information is bucket based. This parameter is used to set the number of buckets the system can have. For example, if this parameter is set to 2, then the system will create two buckets. First, the system will add all the information into the first bucket. After its lifetime (defined in the <a href="#pg-stat-monitorpgsm-bucket-time">pg_stat_monitor.pgsm_bucket_time</a> parameter) expires, it will switch to the second bucket, reset all the counters and repeat the process.</p>
<p>Requires the server restart.</p>
<h5 id="pg_stat_monitorpgsm_bucket_time">pg_stat_monitor.pgsm_bucket_time<a class="headerlink" href="#pg_stat_monitorpgsm_bucket_time" title="Permanent link">&para;</a></h5>
<p>Values:
- Min: 1
- Max: 2147483647
- Default: 60</p>
<p>This parameter is used to set the lifetime of the bucket. System switches between buckets on the basis of <a href="#pg-stat-monitorpgsm-bucket-time">pg_stat_monitor.pgsm_bucket_time</a>.</p>
<p>Requires the server restart.</p>
<h5 id="pg_stat_monitorpgsm_histogram_min">pg_stat_monitor.pgsm_histogram_min<a class="headerlink" href="#pg_stat_monitorpgsm_histogram_min" title="Permanent link">&para;</a></h5>
<p>Values:
- Min: 0
- Max: 2147483647
- Default: 0</p>
<p><code>pg_stat_monitor</code> also stores the execution time histogram. This parameter is used to set the lower bound of the histogram (in ms).</p>
<p>Requires the server restart.</p>
<h5 id="pg_stat_monitorpgsm_histogram_max">pg_stat_monitor.pgsm_histogram_max<a class="headerlink" href="#pg_stat_monitorpgsm_histogram_max" title="Permanent link">&para;</a></h5>
<p>Values:
- Min: 10
- Max: 2147483647
- Default: 100000</p>
<p>This parameter sets the upper bound of the execution time histogram (in ms). Requires the server restart.</p>
<h5 id="pg_stat_monitorpgsm_histogram_buckets">pg_stat_monitor.pgsm_histogram_buckets<a class="headerlink" href="#pg_stat_monitorpgsm_histogram_buckets" title="Permanent link">&para;</a></h5>
<p>Values:
- Min: 2
- Max: 2147483647
- Default: 10</p>
<p>This parameter sets the maximum number of histogram buckets. Requires the server restart.</p>
<h5 id="pg_stat_monitorpgsm_query_shared_buffer">pg_stat_monitor.pgsm_query_shared_buffer<a class="headerlink" href="#pg_stat_monitorpgsm_query_shared_buffer" title="Permanent link">&para;</a></h5>
<p>Values:
- Min: 1
- Max: 10000
- Default: 20</p>
<p>This parameter defines the shared memory limit (in MB) allocated for a query tracked by <code>pg_stat_monitor</code>. Requires the server restart.</p>
<h5 id="pg_stat_monitorpgsm_overflow_target">pg_stat_monitor.pgsm_overflow_target<a class="headerlink" href="#pg_stat_monitorpgsm_overflow_target" title="Permanent link">&para;</a></h5>
<p>Type: boolean. Default: 1</p>
<p>Sets the overflow target for the <code>pg_stat_monitor</code>. Requires the server restart.</p>
<h5 id="pg_stat_monitorpgsm_enable_query_plan">pg_stat_monitor.pgsm_enable_query_plan<a class="headerlink" href="#pg_stat_monitorpgsm_enable_query_plan" title="Permanent link">&para;</a></h5>
<p>Type: boolean. Default: 1</p>
<p>Enables or disables query plan monitoring. When the <code>pgsm_enable_query_plan</code> is disabled (0), the query plan will not be captured by <code>pg_stat_monitor</code>. Enabling it may adversely affect the database performance. Requires the server restart.</p>
<h5 id="pg_stat_monitortrack">pg_stat_monitor.track<a class="headerlink" href="#pg_stat_monitortrack" title="Permanent link">&para;</a></h5>
<p>This parameter controls which statements are tracked by <code>pg_stat_monitor</code>. </p>
<p>Values: </p>
<ul>
<li><code>top</code>: Default, track only top level queries (those issued directly by clients).</li>
<li><code>all</code>: Track top along with sub/nested queries. As a result, some SELECT statement may be shown as duplicates. </li>
<li><code>none</code>: Disable query monitoring.</li>
</ul>
<h5 id="pg_stat_monitorextract_comments">pg_stat_monitor.extract_comments<a class="headerlink" href="#pg_stat_monitorextract_comments" title="Permanent link">&para;</a></h5>
<p>Type: boolean. Default: 0</p>
<p>This parameter controls whether to enable or disable extracting comments from queries.</p>
<h5 id="pg_stat_monitorpgsm_track_planning">pg_stat_monitor.pgsm_track_planning<a class="headerlink" href="#pg_stat_monitorpgsm_track_planning" title="Permanent link">&para;</a></h5>
<p>Type: boolean. Default: 0</p>
<p>This parameter instructs <code>pg_stat_monitor</code> to monitor query planning statistics. Requires the server restart.</p>
<h2 id="usage-examples">Usage examples<a class="headerlink" href="#usage-examples" title="Permanent link">&para;</a></h2>
<p>Note that the column names differ depending on the PostgreSQL version you are using. The following usage examples are provided for PostgreSQL version 13.
For versions 11 and 12, please consult the <a href="https://github.com/percona/pg_stat_monitor/blob/master/docs/REFERENCE.md">pg_stat_monitor reference</a>.</p>
<h3 id="querying-buckets">Querying buckets<a class="headerlink" href="#querying-buckets" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code><span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">bucket</span><span class="p">,</span><span class="w"> </span><span class="n">bucket_start_time</span><span class="p">,</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="n">calls</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"> </span><span class="k">order</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">bucket</span><span class="p">;</span><span class="w"></span>
<span class="o">-</span><span class="p">[</span><span class="w"> </span><span class="n">RECORD</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="p">]</span><span class="c1">-----+------------------------------------------------------------------------------------</span>
<span class="n">bucket</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"></span>
<span class="n">bucket_start_time</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">2021</span><span class="o">-</span><span class="mi">10</span><span class="o">-</span><span class="mi">22</span><span class="w"> </span><span class="mi">11</span><span class="p">:</span><span class="mi">10</span><span class="p">:</span><span class="mi">00</span><span class="w"></span>
<span class="n">query</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">bucket</span><span class="p">,</span><span class="w"> </span><span class="n">bucket_start_time</span><span class="p">,</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="n">calls</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"> </span><span class="k">order</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">bucket</span><span class="p">;</span><span class="w"></span>
<span class="n">calls</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
</code></pre></div>
<p>The <code>bucket</code> parameter shows the number of a bucket for which a given record belongs.
The <code>bucket_start_time</code> shows the start time of the bucket.
<code>query</code> shows the actual query text.
<code>calls</code> shows how many times a given query was called.</p>
<h3 id="query-information">Query information<a class="headerlink" href="#query-information" title="Permanent link">&para;</a></h3>
<p><strong>Example 1: Shows the usename, database name, unique queryid hash, query, and the total number of calls of that query.</strong></p>
<div class="highlight"><pre><span></span><code><span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">userid</span><span class="p">,</span><span class="w"> </span><span class="n">datname</span><span class="p">,</span><span class="w"> </span><span class="n">queryid</span><span class="p">,</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">50</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">calls</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">userid</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">datname</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">queryid</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">calls</span><span class="w"></span>
<span class="c1">---------+----------+------------------+---------------------------------------------------+-------</span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">939</span><span class="n">C2F56E1F6A174</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">END</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">561</span><span class="w"></span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="n">A4437C4905E0E23</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pgbench_accounts</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">aid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">561</span><span class="w"></span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">4</span><span class="n">EE9ED0CDF143477</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">userid</span><span class="p">,</span><span class="w"> </span><span class="n">datname</span><span class="p">,</span><span class="w"> </span><span class="n">queryid</span><span class="p">,</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">8867</span><span class="n">FEEB8A5388AC</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">vacuum</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">41</span><span class="n">D1168FB0733CAB</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">E5A889A8FF37C2B1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_accounts</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">561</span><span class="w"></span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">4876</span><span class="n">BBA9A8FCFCF9</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">truncate</span><span class="w"> </span><span class="n">pgbench_history</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">22</span><span class="n">B76AE84689E4DC</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">pgbench_history</span><span class="w"> </span><span class="p">(</span><span class="n">tid</span><span class="p">,</span><span class="w"> </span><span class="n">bid</span><span class="p">,</span><span class="w"> </span><span class="n">aid</span><span class="p">,</span><span class="w"> </span><span class="n">delta</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">561</span><span class="w"></span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">F6DA9838660825CA</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">vacuum</span><span class="w"> </span><span class="n">pgbench_tellers</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">214646</span><span class="n">CE6F9B1A85</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">561</span><span class="w"></span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">27462943</span><span class="n">E814C5B5</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_tellers</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">tbalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tbalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">561</span><span class="w"></span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">4</span><span class="n">F66D46F3D4151E</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">userid</span><span class="p">,</span><span class="w"> </span><span class="n">dbid</span><span class="p">,</span><span class="w"> </span><span class="n">queryid</span><span class="p">,</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">50</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="w"> </span><span class="n">vagrant</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">postgres</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">6</span><span class="n">A02C123488B95DB</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">bbalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">bbalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">561</span><span class="w"></span>
<span class="p">(</span><span class="mi">13</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
</code></pre></div>
<p><strong>Example 2: Shows the connected application details.</strong></p>
<div class="highlight"><pre><span></span><code><span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">application_name</span><span class="p">,</span><span class="w"> </span><span class="n">client_ip</span><span class="p">,</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">100</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">application_name</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">client_ip</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">query</span><span class="w"></span>
<span class="c1">------------------+-----------+-----------------------------------------------------------------------------------------------------</span>
<span class="w"> </span><span class="n">pgbench</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">truncate</span><span class="w"> </span><span class="n">pgbench_history</span><span class="w"></span>
<span class="w"> </span><span class="n">pgbench</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pgbench_accounts</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">aid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"></span>
<span class="w"> </span><span class="n">pgbench</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_accounts</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">aid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="w"></span>
<span class="w"> </span><span class="n">pgbench</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">BEGIN</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">pgbench</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">pgbench_history</span><span class="w"> </span><span class="p">(</span><span class="n">tid</span><span class="p">,</span><span class="w"> </span><span class="n">bid</span><span class="p">,</span><span class="w"> </span><span class="n">aid</span><span class="p">,</span><span class="w"> </span><span class="n">delta</span><span class="p">,</span><span class="w"> </span><span class="n">mtime</span><span class="p">)</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="err">$</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="k">CURRENT_TIMESTAMP</span><span class="w"></span>
<span class="w"> </span><span class="n">pgbench</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">pgbench</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">vacuum</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"></span>
<span class="w"> </span><span class="n">pgbench</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_tellers</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">tbalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tbalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">tid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="w"></span>
<span class="w"> </span><span class="n">pgbench</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">vacuum</span><span class="w"> </span><span class="n">pgbench_tellers</span><span class="w"></span>
<span class="w"> </span><span class="n">pgbench</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">bbalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">bbalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">bid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="w"></span>
<span class="w"> </span><span class="n">pgbench</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">o</span><span class="p">.</span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="n">partstrat</span><span class="p">,</span><span class="w"> </span><span class="n">pg_catalog</span><span class="p">.</span><span class="k">count</span><span class="p">(</span><span class="n">i</span><span class="p">.</span><span class="n">inhparent</span><span class="p">)</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_catalog</span><span class="p">.</span><span class="n">pg_class</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="k">c</span><span class="w"> </span><span class="k">join</span><span class="w"> </span><span class="n">pg_catalo</span><span class="w"></span>
<span class="w"> </span><span class="n">psql</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">application_name</span><span class="p">,</span><span class="w"> </span><span class="n">client_ip</span><span class="p">,</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="err">$</span><span class="mi">1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"></span>
<span class="w"> </span><span class="n">pgbench</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">127</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">0</span><span class="p">.</span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"></span>
<span class="p">(</span><span class="mi">13</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
</code></pre></div>
<h3 id="query-timing-information_1">Query timing information<a class="headerlink" href="#query-timing-information_1" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">userid</span><span class="p">,</span><span class="w"> </span><span class="n">total_time</span><span class="p">,</span><span class="w"> </span><span class="n">min_time</span><span class="p">,</span><span class="w"> </span><span class="n">max_time</span><span class="p">,</span><span class="w"> </span><span class="n">mean_time</span><span class="p">,</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">userid</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">total_time</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">min_time</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">max_time</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">mean_time</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">query</span><span class="w"></span>
<span class="c1">--------+--------------------+--------------------+--------------------+--------------------+------------------------------------------------------------------</span>
<span class="w"> </span><span class="mi">10</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">14</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">14</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">14</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">14</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor_reset</span><span class="p">()</span><span class="w"></span>
<span class="w"> </span><span class="mi">10</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">19</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">19</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">19</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">19</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">userid</span><span class="p">,</span><span class="w"> </span><span class="n">dbid</span><span class="p">,</span><span class="w"> </span><span class="n">queryid</span><span class="p">,</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"></span>
<span class="w"> </span><span class="mi">10</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">30</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">13</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">16</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">15</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">bucket</span><span class="p">,</span><span class="w"> </span><span class="n">bucket_start_time</span><span class="p">,</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"></span>
<span class="w"> </span><span class="mi">10</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">29</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">29</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">29</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="p">.</span><span class="mi">29</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">userid</span><span class="p">,</span><span class="w"> </span><span class="n">dbid</span><span class="p">,</span><span class="w"> </span><span class="n">queryid</span><span class="p">,</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">calls</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"></span>
<span class="w"> </span><span class="mi">10</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">11277</span><span class="p">.</span><span class="mi">79</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">11277</span><span class="p">.</span><span class="mi">79</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">11277</span><span class="p">.</span><span class="mi">79</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
</code></pre></div>
<h3 id="query-execution-plan">Query execution plan<a class="headerlink" href="#query-execution-plan" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code><span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">50</span><span class="p">),</span><span class="w"> </span><span class="n">query_plan</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"> </span><span class="k">limit</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">substr</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">query_plan</span><span class="w"></span>
<span class="c1">---------------------------------------------------+---------------------------------------------------------------------------------------------------------------</span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">o</span><span class="p">.</span><span class="n">n</span><span class="p">,</span><span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="n">partstrat</span><span class="p">,</span><span class="w"> </span><span class="n">pg_catalog</span><span class="p">.</span><span class="k">count</span><span class="p">(</span><span class="n">i</span><span class="p">.</span><span class="n">inhpa</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Limit</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">GroupAggregate</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Group</span><span class="w"> </span><span class="k">Key</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">array_position</span><span class="p">(</span><span class="n">current_schemas</span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="n">n</span><span class="p">.</span><span class="n">nspname</span><span class="p">)),</span><span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="n">partstrat</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Sort</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Sort</span><span class="w"> </span><span class="k">Key</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">array_position</span><span class="p">(</span><span class="n">current_schemas</span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="n">n</span><span class="p">.</span><span class="n">nspname</span><span class="p">)),</span><span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="n">partstrat</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Nested</span><span class="w"> </span><span class="n">Loop</span><span class="w"> </span><span class="k">Left</span><span class="w"> </span><span class="k">Join</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Nested</span><span class="w"> </span><span class="n">Loop</span><span class="w"> </span><span class="k">Left</span><span class="w"> </span><span class="k">Join</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Nested</span><span class="w"> </span><span class="n">Loop</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Join</span><span class="w"> </span><span class="n">Filter</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="k">c</span><span class="p">.</span><span class="n">relnamespace</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">n</span><span class="p">.</span><span class="n">oid</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="k">Index</span><span class="w"> </span><span class="n">Scan</span><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">pg_class_relname_nsp_index</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">pg_class</span><span class="w"> </span><span class="k">c</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Index</span><span class="w"> </span><span class="n">Cond</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">relname</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="s1">&#39;pgbench_accounts&#39;</span><span class="p">::</span><span class="n">name</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Seq</span><span class="w"> </span><span class="n">Scan</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">pg_namespace</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Filter</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">array_position</span><span class="p">(</span><span class="n">current_schemas</span><span class="p">(</span><span class="k">true</span><span class="p">),</span><span class="w"> </span><span class="n">nspname</span><span class="p">)</span><span class="w"> </span><span class="k">IS</span><span class="w"> </span><span class="k">NOT</span><span class="w"> </span><span class="k">NULL</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="k">Index</span><span class="w"> </span><span class="n">Scan</span><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">pg_partitioned_table_partrelid_index</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">pg_partitioned_table</span><span class="w"> </span><span class="n">p</span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Index</span><span class="w"> </span><span class="n">Cond</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">partrelid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">c</span><span class="p">.</span><span class="n">oid</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Bitmap</span><span class="w"> </span><span class="n">Heap</span><span class="w"> </span><span class="n">Scan</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">pg_inherits</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">R</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pgbench_accounts</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">aid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Index</span><span class="w"> </span><span class="n">Scan</span><span class="w"> </span><span class="k">using</span><span class="w"> </span><span class="n">pgbench_accounts_pkey</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">pgbench_accounts</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Index</span><span class="w"> </span><span class="n">Cond</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">aid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">102232</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="k">BEGIN</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">END</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="err">$</span><span class="mi">1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="p">),</span><span class="w"> </span><span class="n">query_plan</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_st</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="err">$</span><span class="mi">1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="p">),</span><span class="n">calls</span><span class="p">,</span><span class="w"> </span><span class="n">planid</span><span class="p">,</span><span class="n">query_pl</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Limit</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Subquery</span><span class="w"> </span><span class="n">Scan</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="k">Result</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Sort</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Sort</span><span class="w"> </span><span class="k">Key</span><span class="p">:</span><span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="n">bucket_start_time</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Hash</span><span class="w"> </span><span class="k">Join</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Hash</span><span class="w"> </span><span class="n">Cond</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">p</span><span class="p">.</span><span class="n">dbid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">d</span><span class="p">.</span><span class="n">oid</span><span class="p">)</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="k">Function</span><span class="w"> </span><span class="n">Scan</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">pg_stat_monitor_internal</span><span class="w"> </span><span class="n">p</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Hash</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Seq</span><span class="w"> </span><span class="n">Scan</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">pg_database</span><span class="w"> </span><span class="n">d</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">SubPlan</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="k">Function</span><span class="w"> </span><span class="n">Scan</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">pg_stat_monitor_internal</span><span class="w"> </span><span class="n">s</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Filter</span><span class="p">:</span><span class="w"> </span><span class="p">(</span><span class="n">queryid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">p</span><span class="p">.</span><span class="n">top_queryid</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Aggregate</span><span class="w"> </span><span class="o">+</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">-&gt;</span><span class="w"> </span><span class="n">Seq</span><span class="w"> </span><span class="n">Scan</span><span class="w"> </span><span class="k">on</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"></span>
<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_tellers</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">tbalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tbalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">vacuum</span><span class="w"> </span><span class="n">pgbench_tellers</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_accounts</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="p">(</span><span class="mi">10</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
</code></pre></div>
<p>The <code>plan</code> column does not contain costing, width and other values. This is an expected behavior as each row is an accumulation of statistics based on <code>plan</code> and amongst other key columns. Plan is only available when the <code>pgsm_enable_query_plan</code> configuration parameter is enabled.</p>
<h3 id="query-type-filtering_1">Query type filtering<a class="headerlink" href="#query-type-filtering_1" title="Permanent link">&para;</a></h3>
<p><code>pg_stat_monitor</code> monitors queries per type (SELECT, INSERT, UPDATE OR DELETE) and classifies them accordingly in the <code>cmd_type</code> column thus reducing your efforts.</p>
<div class="highlight"><pre><span></span><code><span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">bucket</span><span class="p">,</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">50</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">cmd_type</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">elevel</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">bucket</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">cmd_type</span><span class="w"></span>
<span class="c1">--------+---------------------------------------------------+----------</span>
<span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">END</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pgbench_accounts</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">aid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"></span>
<span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">vacuum</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"></span>
<span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_accounts</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"></span>
<span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">truncate</span><span class="w"> </span><span class="n">pgbench_history</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">pgbench_history</span><span class="w"> </span><span class="p">(</span><span class="n">tid</span><span class="p">,</span><span class="w"> </span><span class="n">bid</span><span class="p">,</span><span class="w"> </span><span class="n">aid</span><span class="p">,</span><span class="w"> </span><span class="n">delta</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">INSERT</span><span class="w"></span>
<span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">relations</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"></span>
<span class="w"> </span><span class="mi">9</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">bucket</span><span class="p">,</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="err">$</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">cmd</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">vacuum</span><span class="w"> </span><span class="n">pgbench_tellers</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="mi">5</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">relations</span><span class="p">,</span><span class="n">query</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"></span>
<span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_tellers</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">tbalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tbalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"></span>
<span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">bbalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">bbalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"></span>
<span class="p">(</span><span class="mi">14</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
</code></pre></div>
<h3 id="query-metadata_1">Query metadata<a class="headerlink" href="#query-metadata_1" title="Permanent link">&para;</a></h3>
<p>The <code>comments</code> column contains any text wrapped in <code>“/*”</code> and <code>“*/”</code> comment tags. The <code>pg_stat_monitor</code> extension picks up these comments and makes them available in the comments column. Please note that only the latest comment value is preserved per row. The comments may be put in any format that can be parsed by a tool.</p>
<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="n">EXTENSION</span><span class="w"> </span><span class="n">hstore</span><span class="p">;</span><span class="w"></span>
<span class="k">CREATE</span><span class="w"> </span><span class="k">FUNCTION</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">s</span><span class="w"> </span><span class="nb">text</span><span class="p">)</span><span class="w"> </span><span class="k">RETURNS</span><span class="w"> </span><span class="n">hstore</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="err">$$</span><span class="w"></span>
<span class="k">BEGIN</span><span class="w"></span>
<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="n">hstore</span><span class="p">(</span><span class="n">s</span><span class="p">::</span><span class="nb">text</span><span class="p">[]);</span><span class="w"></span>
<span class="k">EXCEPTION</span><span class="w"> </span><span class="k">WHEN</span><span class="w"> </span><span class="n">OTHERS</span><span class="w"> </span><span class="k">THEN</span><span class="w"></span>
<span class="w"> </span><span class="k">RETURN</span><span class="w"> </span><span class="k">NULL</span><span class="p">;</span><span class="w"></span>
<span class="k">END</span><span class="p">;</span><span class="w"> </span><span class="err">$$</span><span class="w"> </span><span class="k">LANGUAGE</span><span class="w"> </span><span class="n">plpgsql</span><span class="w"> </span><span class="k">STRICT</span><span class="p">;</span><span class="w"></span>
<span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, java_app, &quot;real_ip&quot;, 192.168.1.1} */</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">num</span><span class="w"></span>
<span class="c1">-----</span>
<span class="w"> </span><span class="mi">1</span><span class="w"></span>
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
<span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num1</span><span class="p">,</span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num2</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, java_app, &quot;real_ip&quot;, 192.168.1.2} */</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">num1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">num2</span><span class="w"></span>
<span class="c1">------+------</span>
<span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="w"></span>
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
<span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num1</span><span class="p">,</span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num3</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, java_app, &quot;real_ip&quot;, 192.168.1.3} */</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">num1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">num2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">num3</span><span class="w"></span>
<span class="c1">------+------+------</span>
<span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="w"></span>
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
<span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num1</span><span class="p">,</span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num2</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num3</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num4</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, psql_app, &quot;real_ip&quot;, 192.168.1.3} */</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">num1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">num2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">num3</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">num4</span><span class="w"></span>
<span class="c1">------+------+------+------</span>
<span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">4</span><span class="w"></span>
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
<span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">comments_tags</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">comments_tags</span><span class="w"></span>
<span class="c1">---------------------------------------------------------------------------------------------------------------+-----------------------------------------------------</span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, psql_app, &quot;real_ip&quot;, 192.168.1.3) */</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="ss">&quot;real_ip&quot;</span><span class="o">=&gt;</span><span class="ss">&quot;192.168.1.1&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;application&quot;</span><span class="o">=&gt;</span><span class="ss">&quot;java_app&quot;</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">pg_stat_monitor_reset</span><span class="p">();</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">comments</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num2</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">3</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num3</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, java_app, &quot;real_ip&quot;, 192.168.1.3} */</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="ss">&quot;real_ip&quot;</span><span class="o">=&gt;</span><span class="ss">&quot;192.168.1.3&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;application&quot;</span><span class="o">=&gt;</span><span class="ss">&quot;java_app&quot;</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">comments_tags</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num2</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, java_app, &quot;real_ip&quot;, 192.168.1.2} */</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="ss">&quot;real_ip&quot;</span><span class="o">=&gt;</span><span class="ss">&quot;192.168.1.2&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;application&quot;</span><span class="o">=&gt;</span><span class="ss">&quot;java_app&quot;</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num2</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">3</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num3</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">4</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num4</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, psql_app, &quot;real_ip&quot;, 192.168.1.3} */</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="ss">&quot;real_ip&quot;</span><span class="o">=&gt;</span><span class="ss">&quot;192.168.1.3&quot;</span><span class="p">,</span><span class="w"> </span><span class="ss">&quot;application&quot;</span><span class="o">=&gt;</span><span class="ss">&quot;psql_app&quot;</span><span class="w"></span>
<span class="p">(</span><span class="mi">7</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
<span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="o">-&gt;</span><span class="s1">&#39;application&#39;</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">application_name</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">application_name</span><span class="w"></span>
<span class="c1">---------------------------------------------------------------------------------------------------------------+----------</span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, psql_app, &quot;real_ip&quot;, 192.168.1.3) */</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">java_app</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">pg_stat_monitor_reset</span><span class="p">();</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="o">-&gt;</span><span class="ss">&quot;real_ip&quot;</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">comments_tags</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="o">-&gt;</span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">comments_tags</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="o">-&gt;</span><span class="ss">&quot;application&quot;</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">comments_tags</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num2</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, java_app, &quot;real_ip&quot;, 192.168.1.2} */</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">java_app</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num2</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">3</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num3</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, java_app, &quot;real_ip&quot;, 192.168.1.3} */</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">java_app</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">comments</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num2</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">3</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num3</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">4</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num4</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, psql_app, &quot;real_ip&quot;, 192.168.1.3} */</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">psql_app</span><span class="w"></span>
<span class="p">(</span><span class="mi">10</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
<span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="o">-&gt;</span><span class="s1">&#39;real_ip&#39;</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">real_ip</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">real_ip</span><span class="w"></span>
<span class="c1">---------------------------------------------------------------------------------------------------------------+-------------</span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, psql_app, &quot;real_ip&quot;, 192.168.1.3) */</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">1</span><span class="p">.</span><span class="mi">1</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">pg_stat_monitor_reset</span><span class="p">();</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="o">-&gt;</span><span class="ss">&quot;real_ip&quot;</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">comments_tags</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="o">-&gt;</span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">comments_tags</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="o">-&gt;</span><span class="ss">&quot;application&quot;</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">comments_tags</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num2</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, java_app, &quot;real_ip&quot;, 192.168.1.2} */</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">1</span><span class="p">.</span><span class="mi">2</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num2</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">3</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num3</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, java_app, &quot;real_ip&quot;, 192.168.1.3} */</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">1</span><span class="p">.</span><span class="mi">3</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">comments</span><span class="p">,</span><span class="w"> </span><span class="n">text_to_hstore</span><span class="p">(</span><span class="n">comments</span><span class="p">)</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num2</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">3</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num3</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">4</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">num4</span><span class="w"> </span><span class="cm">/* { &quot;application&quot;, psql_app, &quot;real_ip&quot;, 192.168.1.3} */</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">192</span><span class="p">.</span><span class="mi">168</span><span class="p">.</span><span class="mi">1</span><span class="p">.</span><span class="mi">3</span><span class="w"></span>
<span class="p">(</span><span class="mi">10</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
</code></pre></div>
<h3 id="top-query-tracking_1">Top query tracking<a class="headerlink" href="#top-query-tracking_1" title="Permanent link">&para;</a></h3>
<p>In the following example we create a function <code>add2</code> that adds one parameter value to another one and call this function to calculate 1+2.</p>
<div class="highlight"><pre><span></span><code><span class="k">CREATE</span><span class="w"> </span><span class="k">OR</span><span class="w"> </span><span class="k">REPLACE</span><span class="w"> </span><span class="k">function</span><span class="w"> </span><span class="n">add2</span><span class="p">(</span><span class="nb">int</span><span class="p">,</span><span class="w"> </span><span class="nb">int</span><span class="p">)</span><span class="w"> </span><span class="k">RETURNS</span><span class="w"> </span><span class="nb">int</span><span class="w"> </span><span class="k">as</span><span class="w"></span>
<span class="err">$$</span><span class="w"></span>
<span class="k">BEGIN</span><span class="w"></span>
<span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="p">(</span><span class="k">select</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="p">);</span><span class="w"></span>
<span class="k">END</span><span class="p">;</span><span class="w"></span>
<span class="err">$$</span><span class="w"> </span><span class="k">language</span><span class="w"> </span><span class="n">plpgsql</span><span class="p">;</span><span class="w"></span>
<span class="k">SELECT</span><span class="w"> </span><span class="n">add2</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">add2</span><span class="w"></span>
<span class="c1">-----</span>
<span class="w"> </span><span class="mi">3</span><span class="w"></span>
<span class="p">(</span><span class="mi">1</span><span class="w"> </span><span class="k">row</span><span class="p">)</span><span class="w"></span>
<span class="n">The</span><span class="w"> </span><span class="o">``</span><span class="n">pg_stat_monitor</span><span class="o">``</span><span class="w"> </span><span class="k">view</span><span class="w"> </span><span class="n">shows</span><span class="w"> </span><span class="k">all</span><span class="w"> </span><span class="n">executed</span><span class="w"> </span><span class="n">queries</span><span class="w"> </span><span class="k">and</span><span class="w"> </span><span class="n">shows</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="n">very</span><span class="w"> </span><span class="k">first</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">in</span><span class="w"> </span><span class="n">a</span><span class="w"> </span><span class="k">row</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="n">calling</span><span class="w"> </span><span class="n">the</span><span class="w"> </span><span class="o">`</span><span class="n">add2</span><span class="o">`</span><span class="w"> </span><span class="k">function</span><span class="p">.</span><span class="w"></span>
<span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">queryid</span><span class="p">,</span><span class="w"> </span><span class="n">top_queryid</span><span class="p">,</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">top_query</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">queryid</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">top_queryid</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">query</span><span class="p">.</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">top_query</span><span class="w"></span>
<span class="c1">------------------+------------------+-------------------------------------------------------------------------+-------------------</span>
<span class="w"> </span><span class="mi">3408</span><span class="n">CA84B2353094</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">add2</span><span class="p">(</span><span class="err">$</span><span class="mi">1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="mi">762</span><span class="n">B99349F6C7F31</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">3408</span><span class="n">CA84B2353094</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="p">(</span><span class="k">select</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">add2</span><span class="p">(</span><span class="err">$</span><span class="mi">1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="p">)</span><span class="w"></span>
<span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
</code></pre></div>
<h3 id="relations_1">Relations<a class="headerlink" href="#relations_1" title="Permanent link">&para;</a></h3>
<p><strong>Example 1: List all the table names involved in the query.</strong></p>
<div class="highlight"><pre><span></span><code><span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">relations</span><span class="p">,</span><span class="n">query</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">relations</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">query</span><span class="w"></span>
<span class="c1">-------------------------------+------------------------------------------------------------------------------------------------------</span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">END</span><span class="w"></span>
<span class="w"> </span><span class="err">{</span><span class="k">public</span><span class="p">.</span><span class="n">pgbench_accounts</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pgbench_accounts</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">aid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">vacuum</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"></span>
<span class="w"> </span><span class="err">{</span><span class="k">public</span><span class="p">.</span><span class="n">pgbench_branches</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="k">count</span><span class="p">(</span><span class="o">*</span><span class="p">)</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"></span>
<span class="w"> </span><span class="err">{</span><span class="k">public</span><span class="p">.</span><span class="n">pgbench_accounts</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_accounts</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">abalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">aid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">truncate</span><span class="w"> </span><span class="n">pgbench_history</span><span class="w"></span>
<span class="w"> </span><span class="err">{</span><span class="k">public</span><span class="p">.</span><span class="n">pgbench_history</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">INSERT</span><span class="w"> </span><span class="k">INTO</span><span class="w"> </span><span class="n">pgbench_history</span><span class="w"> </span><span class="p">(</span><span class="n">tid</span><span class="p">,</span><span class="w"> </span><span class="n">bid</span><span class="p">,</span><span class="w"> </span><span class="n">aid</span><span class="p">,</span><span class="w"> </span><span class="n">delta</span><span class="p">,</span><span class="w"> </span><span class="n">mtime</span><span class="p">)</span><span class="w"> </span><span class="k">VALUES</span><span class="w"> </span><span class="p">(</span><span class="err">$</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="err">$</span><span class="mi">4</span><span class="p">,</span><span class="w"> </span><span class="k">CURRENT_TIMESTAMP</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="err">{</span><span class="k">public</span><span class="p">.</span><span class="n">pg_stat_monitor</span><span class="p">,</span><span class="n">pg_catalog</span><span class="p">.</span><span class="n">pg_database</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">relations</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">vacuum</span><span class="w"> </span><span class="n">pgbench_tellers</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">BEGIN</span><span class="w"></span>
<span class="w"> </span><span class="err">{</span><span class="k">public</span><span class="p">.</span><span class="n">pgbench_tellers</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_tellers</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">tbalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">tbalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">tid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="w"></span>
<span class="w"> </span><span class="err">{</span><span class="k">public</span><span class="p">.</span><span class="n">pgbench_branches</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">UPDATE</span><span class="w"> </span><span class="n">pgbench_branches</span><span class="w"> </span><span class="k">SET</span><span class="w"> </span><span class="n">bbalance</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">bbalance</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="w"> </span><span class="k">WHERE</span><span class="w"> </span><span class="n">bid</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="err">$</span><span class="mi">2</span><span class="w"></span>
<span class="p">(</span><span class="mi">12</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
</code></pre></div>
<p><strong>Example 2: List all the views and the name of the table in the view. Here we have a view &ldquo;test_view&rdquo;</strong></p>
<div class="highlight"><pre><span></span><code><span class="err">\</span><span class="n">d</span><span class="o">+</span><span class="w"> </span><span class="n">test_view</span><span class="w"></span>
<span class="w"> </span><span class="k">View</span><span class="w"> </span><span class="ss">&quot;public.test_view&quot;</span><span class="w"></span>
<span class="w"> </span><span class="k">Column</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Type</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Collation</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Nullable</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Default</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">Storage</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">Description</span><span class="w"> </span>
<span class="c1">--------+---------+-----------+----------+---------+---------+-------------</span>
<span class="w"> </span><span class="n">foo_a</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="nb">integer</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">plain</span><span class="w"> </span><span class="o">|</span><span class="w"> </span>
<span class="w"> </span><span class="n">bar_a</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="nb">integer</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">plain</span><span class="w"> </span><span class="o">|</span><span class="w"> </span>
<span class="k">View</span><span class="w"> </span><span class="n">definition</span><span class="p">:</span><span class="w"></span>
<span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="n">f</span><span class="p">.</span><span class="n">a</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">foo_a</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">b</span><span class="p">.</span><span class="n">a</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">bar_a</span><span class="w"></span>
<span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">foo</span><span class="w"> </span><span class="n">f</span><span class="p">,</span><span class="w"></span>
<span class="w"> </span><span class="n">bar</span><span class="w"> </span><span class="n">b</span><span class="p">;</span><span class="w"></span>
</code></pre></div>
<p>Now when we query the <code>pg_stat_monitor</code>, it will show the view name and also all the table names in the view. Note that the view name is followed by an asterisk (*).</p>
<div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">relations</span><span class="p">,</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">relations</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">query</span><span class="w"> </span>
<span class="c1">---------------------+----------------------------------------------------</span>
<span class="w"> </span><span class="err">{</span><span class="n">test_view</span><span class="o">*</span><span class="p">,</span><span class="n">foo</span><span class="p">,</span><span class="n">bar</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">test_view</span><span class="w"></span>
<span class="w"> </span><span class="err">{</span><span class="n">foo</span><span class="p">,</span><span class="n">bar</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">foo</span><span class="p">,</span><span class="n">bar</span><span class="w"></span>
<span class="p">(</span><span class="mi">2</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
</code></pre></div>
<h3 id="queries-terminated-with-errors">Queries terminated with errors<a class="headerlink" href="#queries-terminated-with-errors" title="Permanent link">&para;</a></h3>
<div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">50</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">decode_error_level</span><span class="p">(</span><span class="n">elevel</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">elevel</span><span class="p">,</span><span class="k">sqlcode</span><span class="p">,</span><span class="w"> </span><span class="n">calls</span><span class="p">,</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">message</span><span class="p">,</span><span class="mi">0</span><span class="p">,</span><span class="mi">50</span><span class="p">)</span><span class="w"> </span><span class="n">message</span><span class="w"></span>
<span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"></span>
<span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">elevel</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">sqlcode</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">calls</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">message</span><span class="w"></span>
<span class="c1">---------------------------------------------------+--------+---------+-------+---------------------------------------------------</span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="err">$</span><span class="mi">1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="k">as</span><span class="w"> </span><span class="n">query</span><span class="p">,</span><span class="w"> </span><span class="n">decode_error</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">bucket</span><span class="p">,</span><span class="n">substr</span><span class="p">(</span><span class="n">query</span><span class="p">,</span><span class="err">$</span><span class="mi">1</span><span class="p">,</span><span class="err">$</span><span class="mi">2</span><span class="p">),</span><span class="n">decode_error_le</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">3</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">LOG</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">database</span><span class="w"> </span><span class="k">system</span><span class="w"> </span><span class="k">is</span><span class="w"> </span><span class="n">ready</span><span class="w"> </span><span class="k">to</span><span class="w"> </span><span class="n">accept</span><span class="w"> </span><span class="n">connections</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="mi">1</span><span class="o">/</span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">ERROR</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">130</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">division</span><span class="w"> </span><span class="k">by</span><span class="w"> </span><span class="n">zero</span><span class="w"></span>
<span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">LOG</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">database</span><span class="w"> </span><span class="k">system</span><span class="w"> </span><span class="n">was</span><span class="w"> </span><span class="n">shut</span><span class="w"> </span><span class="n">down</span><span class="w"> </span><span class="k">at</span><span class="w"> </span><span class="mi">2020</span><span class="o">-</span><span class="mi">11</span><span class="o">-</span><span class="mi">11</span><span class="w"> </span><span class="mi">11</span><span class="p">:</span><span class="mi">37</span><span class="w"></span>
<span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="err">$</span><span class="mi">1</span><span class="o">/</span><span class="err">$</span><span class="mi">2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="p">(</span><span class="mi">6</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
<span class="w"> </span><span class="mi">11277</span><span class="p">.</span><span class="mi">79</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">foo</span><span class="w"></span>
</code></pre></div>
<h3 id="histogram_1">Histogram<a class="headerlink" href="#histogram_1" title="Permanent link">&para;</a></h3>
<p>Histogram (the <code>resp_calls</code> parameter) provides a visual representation of query performance. With the help of the histogram function, you can view a timing/calling data histogram in response to a SQL query.</p>
<div class="highlight"><pre><span></span><code><span class="k">SELECT</span><span class="w"> </span><span class="n">resp_calls</span><span class="p">,</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="p">;</span><span class="w"></span>
<span class="w">                    </span><span class="n">resp_calls</span><span class="w">                    </span><span class="o">|</span><span class="w">                 </span><span class="n">query</span><span class="w">                                        </span>
<span class="c1">--------------------------------------------------+----------------------------------------------</span>
<span class="err">{</span><span class="mi">1</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="n">client_ip</span><span class="p">,</span><span class="w"> </span><span class="n">query</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor</span><span class="w"></span>
<span class="err">{</span><span class="mi">3</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 1&quot;</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">select</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">from</span><span class="w"> </span><span class="n">pg_stat_monitor_reset</span><span class="p">()</span><span class="w"></span>
<span class="err">{</span><span class="mi">3</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 0&quot;</span><span class="p">,</span><span class="ss">&quot; 1&quot;</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">foo</span><span class="w"></span>
<span class="n">postgres</span><span class="o">=#</span><span class="w"> </span><span class="k">SELECT</span><span class="w"> </span><span class="o">*</span><span class="w"> </span><span class="k">FROM</span><span class="w"> </span><span class="n">histogram</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="s1">&#39;F44CD1B4B33A47AF&#39;</span><span class="p">)</span><span class="w"> </span><span class="k">AS</span><span class="w"> </span><span class="n">a</span><span class="p">(</span><span class="n">range</span><span class="w"> </span><span class="nb">TEXT</span><span class="p">,</span><span class="w"> </span><span class="n">freq</span><span class="w"> </span><span class="nb">INT</span><span class="p">,</span><span class="w"> </span><span class="n">bar</span><span class="w"> </span><span class="nb">TEXT</span><span class="p">);</span><span class="w"></span>
<span class="w"> </span><span class="n">range</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">freq</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="n">bar</span><span class="w"></span>
<span class="c1">--------------------+------+--------------------------------</span>
<span class="w"> </span><span class="p">(</span><span class="mi">0</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">3</span><span class="p">)</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">2</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="mi">3</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">10</span><span class="p">)</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="mi">10</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">31</span><span class="p">)</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">1</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="err">■■■■■■■■■■■■■■■</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="mi">31</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">100</span><span class="p">)</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="mi">100</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">316</span><span class="p">)</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="mi">316</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1000</span><span class="p">)</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="mi">1000</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">3162</span><span class="p">)</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="mi">3162</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">10000</span><span class="p">)</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="mi">10000</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">31622</span><span class="p">)</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="w"> </span><span class="p">(</span><span class="mi">31622</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">100000</span><span class="p">)</span><span class="err">}</span><span class="w"> </span><span class="o">|</span><span class="w"> </span><span class="mi">0</span><span class="w"> </span><span class="o">|</span><span class="w"></span>
<span class="p">(</span><span class="mi">10</span><span class="w"> </span><span class="k">rows</span><span class="p">)</span><span class="w"></span>
</code></pre></div>
<p>There are 10 time based buckets of the time generated automatically based on total buckets in the field <code>resp_calls</code>. The value in the field shows how many queries run in that period of time.</p>
<hr>
<div class="md-source-file">
<small>
Last update:
2022-03-25
</small>
</div>
</article>
</div>
</div>
<a href="#" class="md-top md-icon" data-md-component="top" data-md-state="hidden">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8v12z"/></svg>
Back to top
</a>
</main>
<footer class="md-footer">
<nav class="md-footer__inner md-grid" aria-label="Footer">
<a href="setup.html" class="md-footer__link md-footer__link--prev" aria-label="Previous: Setting up `pg_stat_monitor`" rel="prev">
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11h12z"/></svg>
</div>
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Previous
</span>
Setting up `pg_stat_monitor`
</div>
</div>
</a>
<a href="REFERENCE.html" class="md-footer__link md-footer__link--next" aria-label="Next: `pg_stat_monitor` view reference" rel="next">
<div class="md-footer__title">
<div class="md-ellipsis">
<span class="md-footer__direction">
Next
</span>
`pg_stat_monitor` view reference
</div>
</div>
<div class="md-footer__button md-icon">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11H4z"/></svg>
</div>
</a>
</nav>
<div class="md-footer-meta md-typeset">
<div class="md-footer-meta__inner md-grid">
<div class="md-copyright">
<div class="md-copyright__highlight">
Percona LLC, &#169; 2022
</div>
Made with
<a href="https://squidfunk.github.io/mkdocs-material/" target="_blank" rel="noopener">
Material for MkDocs
</a>
</div>
</div>
</div>
</footer>
</div>
<div class="md-dialog" data-md-component="dialog">
<div class="md-dialog__inner md-typeset"></div>
</div>
<script id="__config" type="application/json">{"base": ".", "features": ["search.highlight", "navigation.top"], "search": "assets/javascripts/workers/search.5e67fbfe.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.config.lang": "en", "search.config.pipeline": "trimmer, stopWordFilter", "search.config.separator": "[\\s\\-]+", "search.placeholder": "Search", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version.title": "Select version"}, "version": {"provider": "mike"}}</script>
<script src="assets/javascripts/bundle.c44cc438.min.js"></script>
<script src="js/version-select.js"></script>
</body>
</html>