public inbox for [email protected]
help / color / mirror / Atom feedFrom: yudhi s <[email protected]>
To: Sushrut Shivaswamy <[email protected]>
Cc: sud <[email protected]>
Cc: pgsql-general <[email protected]>
Subject: Re: Design for dashboard query
Date: Sun, 16 Jun 2024 01:39:11 +0530
Message-ID: <CAEzWdqe94+n79xTgxBzsW-M4FDbcxRYbLck7EhUPbqLsrH_JOg@mail.gmail.com> (raw)
In-Reply-To: <CAH5mb99Q7+VxroUeHcxQxtti8KjbzFR64jt7B_x28+XyXh-TcQ@mail.gmail.com>
References: <CAD=mzVUQUyM6H2O4WqVF=1tgrEMuxPq0QU+DbpG6vOBxzA8LbQ@mail.gmail.com>
<CAH5mb99Q7+VxroUeHcxQxtti8KjbzFR64jt7B_x28+XyXh-TcQ@mail.gmail.com>
>
>
> On Sat, 15 Jun 2024 at 6:54 PM, sud <[email protected]> wrote:
>
>> Hello All,
>>
>> Its postgres version 15.4. We are having a requirement in which
>> aggregated information for all the users has to be displayed on the UI
>> screen. It should show that information on the screen. So basically, it
>> would be scanning the full table data which is billions of rows across many
>> months and then join with other master tables and aggregate those and then
>> display the results based on the input "user id" filter.
>>
>> In such a scenario we are thinking of using a materialized view on top of
>> the base tables which will store the base information and refresh those
>> periodically to show the data based on the input user id. However i am
>> seeing , postgres not supporting incremental refresh of materialized view
>> and full refresh can take longer. So , do we have any other option
>> available? Additionally , It should not impact or block the online users
>> querying the same materialized view when the refresh is happening.
>>
>>
>>
Yes incremental refresh is by default not available but you can do the
refresh using "concurrently" keyword which will be online i believe and
won't block your ongoing queries if any.
And there are some other ways like create another view(say mv_new) with
exactly the same definition and refresh that with whatever interval you
want and then switch the views with the original one using the rename
command.
ALTER MATERIALIZED VIEW mv RENAME TO mv_old;
ALTER MATERIALIZED VIEW mv_new RENAME TO mv;
DROP MATERIALIZED VIEW mv_old;
Or
have a log table created (say transaction_log) and populate it using
triggers with each delta insert/update/delete on the transaction table. And
then schedule a cron job which will periodically flush the rows from the
transaction_log table to the materialized view. This will achieve your
incremental refresh.
view thread (2+ messages)
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: [email protected]
Cc: [email protected], [email protected], [email protected], [email protected]
Subject: Re: Design for dashboard query
In-Reply-To: <CAEzWdqe94+n79xTgxBzsW-M4FDbcxRYbLck7EhUPbqLsrH_JOg@mail.gmail.com>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox