Re: documentation question regarding REFRESH MATERIALIZED VIEW CONCURRENTLY - Mailing list pgsql-general

From Greg Sabino Mullane
Subject Re: documentation question regarding REFRESH MATERIALIZED VIEW CONCURRENTLY
Date
Msg-id CAKAnmm+14y_3HyHOcZwcHkqAvmZedXLSm97uVZHVr8eWg__W+Q@mail.gmail.com
Whole thread Raw
In response to documentation question regarding REFRESH MATERIALIZED VIEW CONCURRENTLY  (Tobias McNulty <tobias@caktusgroup.com>)
Responses Re: documentation question regarding REFRESH MATERIALIZED VIEW CONCURRENTLY
List pgsql-general
On Sat, Feb 22, 2025 at 8:58 PM Tobias McNulty <tobias@caktusgroup.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

--
Enterprise Postgres Software Products & Tech Support

pgsql-general by date:

Previous
From: Tobias McNulty
Date:
Subject: documentation question regarding REFRESH MATERIALIZED VIEW CONCURRENTLY
Next
From: Tobias McNulty
Date:
Subject: Re: documentation question regarding REFRESH MATERIALIZED VIEW CONCURRENTLY