Monitoring & Observability
Log insights, alerting, metrics, and pg_stat_statements — approaches and tools for understanding what Postgres is doing in production.
Postgres in Production, Special Series: Deep Dive into pg_stat_statements (Part 3)
19 May, 2026In Part 3 of this special "Postgres in Production" deep dive series, Ryan Booz walks through where pg_stat_statements actually stores your query text. Spoiler: it's not in the in-memory hash table you might expect. He covers the file's location on disk, how it grows, the pointer mechanism that ties hash table entries back to your SQL, the quirky consequence that the same query text can appear multiple times, and why ORM-heavy workloads can balloon this file to hundreds of megabytes. Share this…
Continue readingPostgres in Production, Special Series: Deep Dive into pg_stat_statements (Part 2)
06 May, 2026In Part 2 of this special "Postgres in Production" deep dive series, Ryan Booz walks through what actually makes an entry in pg_stat_statements "unique", why uniqueness is structural rather than textual, and how a few common patterns (ORMs, dynamic SQL, multi-database setups) can quietly fill up the in-memory hash table and cost you visibility into the queries that matter most. Share this episode: Click here to share this episode on LinkedIn. Feel free to sign up for our newsletter and subscribe…
Continue readingPostgres in Production, Special Series: Deep Dive into pg_stat_statements (Part 1)
13 April, 2026In this special series of "Postgres in Production", we take a deep dive into pg_stat_statements -- the essential Postgres extension for tracking query performance. In Part 1, Ryan Booz covers what pg_stat_statements is, how to enable it, what it tracks, and critically, what it doesn't track and why that matters for your monitoring setup. Share this episode: Click here to share this episode on LinkedIn. Feel free to sign up for our newsletter and subscribe to our YouTube channel. What is pg_stat…
Continue readingExtended 100 day retention in pganalyze, and the new storage format that made it work
09 January, 2026When it comes to monitoring your database, historic context matters. When we have an incident with a slow query, we want to know: Was this query always slow, or did it regress with a recent code change? At pganalyze, we have developed a purpose-built product for optimizing Postgres. And we love to use Postgres ourself, so our internal timeseries storage is also based on Postgres. But storing timeseries data in Postgres can be challenging: Once you get to a lot of rows (some of our customers have…
Continue readingAWS Performance Insights has been deprecated: What to know about CloudWatch Database Insights
06 November, 2025Editor's note (May 2026): AWS has extended the Performance Insights deprecation date to June 30, 2026, from the originally announced November 30, 2025. The post below has been updated to reflect the new timeline; the functionality and pricing comparisons remain accurate. AWS is deprecating the built-in performance monitoring tool in Amazon RDS and Aurora, Performance Insights, on June 30, 2026. AWS customers are asked to migrate to the new Database Insights functionality in CloudWatch before…
Continue readingTracking Postgres Buffer Cache Statistics over time with pganalyze
05 December, 2024When Postgres accesses data for a query, the tables and indexes first pass through the buffer cache, which is a fixed-size in-memory cache, configured by the setting. Query performance can often rely on whether the query’s data is already in the cache or whether it has to access the underlying disk (or OS page cache) for a significant amount of data. Today, we’re announcing the new Buffer Cache Statistics feature in pganalyze, which relies on the extension to show you how Postgres cache…
Continue readingExploring Postgres VACUUM with the VACUUM Simulator
04 December, 2023For many of us, how VACUUM works in Postgres and when autovacuum triggers it is not easy to understand. As you start digging into it, you’ll discover more and more questions. And when you have many tables, it’s hard to keep track of it all. Luckily, Postgres provides a lot of information that we can use to better understand its internals. For example, we can look at a table's n_dead_tup value to understand the current number of dead tuples, and relate this to the autovacuum scale factor and…
Continue readingIntroducing pganalyze VACUUM Advisor: Workload-aware autovacuum tuning for Postgres
25 July, 2023VACUUM in Postgres is a fact of life - every Postgres installation out there today, including those on AWS Aurora and Google AlloyDB, has to run autovacuum on each table at least every 2 billion transactions to perform freezing. And if you'd like to keep the active portion of your tables in memory, a frequent vacuuming cycle ensures tables stay small, and queries remain fast, with minimal bloat. Oftentimes, when your database is still small, you don't have to think about VACUUM and autovacuum…
Continue readingLock monitoring in Postgres: Find blocking queries in a lock tree with pganalyze
01 December, 2022Postgres databases power many mission critical applications, and applications expect consistent query performance. If even a single query takes longer than expected, it can lead to unhappy users, or delayed background processes. We can use to debug a slow query, but there is one Postgres problem it won't tell us about: Blocked queries. You may also know this as "blocked sessions" from other database systems. This is when one query holds a lock on a table and the other is waiting for those locks…
Continue readingA look at Postgres 14: Performance and Monitoring Improvements
21 May, 2021The first beta release of the upcoming Postgres 14 release was made available yesterday. In this article we'll take a first look at what's in the beta, with an emphasis on one major performance improvement, as well as three monitoring improvements that caught our attention. Before we get started, I wanted to highlight what always strikes me as an important unique aspect of Postgres: Compared to most other open-source database systems, Postgres is not the project of a single company, but rather…
Continue readingLessons Learned from Running Postgres 13: Better Performance, Monitoring & More
21 September, 2020Postgres 13 is almost here. It's been in beta since May, and the general availability release is coming any day. We've been following Postgres 13 closely here at pganalyze, and have been running the beta in one of our staging environments for several months now. There are no big new features in Postgres 13, but there are a lot of small but important incremental improvements. Let's take a look. Performance Smaller Indexes with B-Tree Deduplication Extended Statistics Improvements in Postgres 1…
Continue readingIntroducing New Charts & Date Picker in pganalyze
29 April, 2020Clear and flexible presentation of data is the bread and butter of a monitoring service. A good one will display the right data, but a great one can guide you toward meaningful insights. Visual representation of data in a clear and concise way can help you make decisions quickly. Today we're releasing multiple updates to pganalyze that will help you get to insights more effectively, and keep your database running smoothly. Date range selection as a first-class concept Consistent charts across…
Continue readingPostgres Connection Tracing, Wait Event Analysis & Vacuum Monitoring go into GA on pganalyze
14 April, 2019We’re excited to announce the general availability of three new pganalyze features: Connection Tracing, Wait Event Analysis, as well as Vacuum Monitoring. These features have been developed based on the feedback of hundreds of customers monitoring their production Postgres databases using pganalyze. Thanks so much for consistently taking the time to provide us with valuable information on how you’d like to see pganalyze evolve! Postgres Connection Tracing & Wait Event Analysis One of the most…
Continue readingPostgres Log Monitoring with pganalyze: Introducing Log Insights 2.0
24 July, 2018TLDR: We recently released substantial improvements to our Log Insights feature, including up to 30 day history, support for Heroku Postgres, as well as support for monitoring the log files of PostgreSQL servers running on-premise. How pganalyze parses Postgres log files Its now been a bit over a year since we first released the log monitoring functionality in pganalyze, and we would like to share a major update with you today. Before diving in, a quick review how the pganalyze collector works…
Continue readingPostgres Log Monitoring 101: Deadlocks, Checkpoint Tuning & Blocked Queries
12 February, 2018Those of us who operate production PostgreSQL databases have many jobs to do - and often there isn't enough time to take a regular look at the Postgres log files. However, often times those logs contain critical details on how new application code is affecting the database due to locking issues, or how certain configuration parameters cause the database to produce I/O spikes. This post highlights three common performance problems you can find by looking at, and automatically filtering your…
Continue readingIntroducing Log Insights: Realtime Analysis of Postgres Logs
07 June, 2017After significant development effort, we're excited to introduce you to a new part of pganalyze that we believe every production Postgres database needs: pganalyze Log Insights UPDATE: We released pganalyze Log Insights 2.0 - read more about it in our article: Postgres Log Monitoring with pganalyze: Introducing Log Insights. In the past you used generic log management systems and setup your own filtering and altering rules, which required a lot of manual effort, as well as knowledge of all…
Continue readingMonitoring PostgreSQL 9.5 & Improved Weekly Reports
06 July, 2015Last week the first official alpha version of PostgreSQL 9.5 was released. Whilst the stable release is still 2-3 months away, now is a good time to review what is upcoming, and which changes and improvements we can expect. Here is an overview of the most important changes for monitoring tools: pg_stat_statements gets new columns min_time, max_time, mean_time & stddev_time - making it much easier to identify outliers in the query statistics New pg_stat_ssl view that shows active SSL connections…
Continue readingAnnouncing The All-New Database Check-Up
20 March, 2014We’ve just launched our new version of Database Check-Up - allowing you to see more quickly what could be relevant to look at in your database. In addition we’ve also revamped the detail pages of queries, tables, indices and config settings to match the new style: Improved Check-Up: Config Settings When working with other people's PostgreSQL databases, we’ve seen a lot of things, from fsync=off (which you really only want if you don’t care about your data or have no writes) to simple…
Continue reading