Re: documentation question regarding REFRESH MATERIALIZED VIEW CONCURRENTLY

From: Greg Sabino Mullane <htamfids(at)gmail(dot)com>
To: Tobias McNulty <tobias(at)caktusgroup(dot)com>
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: documentation question regarding REFRESH MATERIALIZED VIEW CONCURRENTLY
Date: 2025-02-23 15:21:14
Message-ID: CAKAnmm+14y_3HyHOcZwcHkqAvmZedXLSm97uVZHVr8eWg__W+Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Sat, Feb 22, 2025 at 8:58 PM Tobias McNulty <tobias(at)caktusgroup(dot)com>
wrote:

> "Without this option a refresh which affects a lot of rows will tend to
> use fewer resources"

...

> either that (1) the refresh operation actually updates the contents of a
> lot of rows in the materialized view

This is the correct interpretation. A regular refresh simply runs the query
and replaces the old view, regardless of the number of rows that have
changed. A concurrent refresh runs the query and updates the rows in place,
so it is very sensitive as to how many of those rows have changed. This
also means that many concurrent refreshes can lead to table bloat. And it
will generate more WAL than a regular refresh.

My takeaway: use regular refresh when you can. Switch to concurrent if the
number of changes is very small, or if constant client access to the view
is very important.

--
Cheers,
Greg

--
Crunchy Data - https://www.crunchydata.com
Enterprise Postgres Software Products & Tech Support

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tobias McNulty 2025-02-23 15:34:25 Re: documentation question regarding REFRESH MATERIALIZED VIEW CONCURRENTLY
Previous Message Tobias McNulty 2025-02-23 01:57:52 documentation question regarding REFRESH MATERIALIZED VIEW CONCURRENTLY