Connect Claude Code, Codex & Cursor to your Postgres statistics: pganalyze MCP Server is now in Public Preview

Monitoring & Observability

Log insights, alerting, metrics, and pg_stat_statements — approaches and tools for understanding what Postgres is doing in production.

All categories

Postgres in Production, Special Series: Deep Dive into pg_stat_statements (Part 3)

19 May, 2026

In 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 reading

Postgres in Production, Special Series: Deep Dive into pg_stat_statements (Part 2)

06 May, 2026

In 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 reading

Postgres in Production, Special Series: Deep Dive into pg_stat_statements (Part 1)

13 April, 2026

In 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 reading

Extended 100 day retention in pganalyze, and the new storage format that made it work

09 January, 2026

When 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 reading

AWS Performance Insights has been deprecated: What to know about CloudWatch Database Insights

06 November, 2025

Editor'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 reading

Tracking Postgres Buffer Cache Statistics over time with pganalyze

05 December, 2024

When 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 reading

Exploring Postgres VACUUM with the VACUUM Simulator

04 December, 2023

For 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 reading

Introducing pganalyze VACUUM Advisor: Workload-aware autovacuum tuning for Postgres

25 July, 2023

VACUUM 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 reading

Lock monitoring in Postgres: Find blocking queries in a lock tree with pganalyze

01 December, 2022

Postgres 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 reading

A look at Postgres 14: Performance and Monitoring Improvements

21 May, 2021

The 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 reading

Lessons Learned from Running Postgres 13: Better Performance, Monitoring & More

21 September, 2020

Postgres 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 reading

Introducing New Charts & Date Picker in pganalyze

29 April, 2020

Clear 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 reading

Postgres Connection Tracing, Wait Event Analysis & Vacuum Monitoring go into GA on pganalyze

14 April, 2019

We’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 reading

Postgres Log Monitoring with pganalyze: Introducing Log Insights 2.0

24 July, 2018

TLDR: 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 reading

Postgres Log Monitoring 101: Deadlocks, Checkpoint Tuning & Blocked Queries

12 February, 2018

Those 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 reading

Introducing Log Insights: Realtime Analysis of Postgres Logs

07 June, 2017

After 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 reading

Monitoring PostgreSQL 9.5 & Improved Weekly Reports

06 July, 2015

Last 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 reading

Announcing The All-New Database Check-Up

20 March, 2014

We’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