Great idea ! This brought the time per INSERT into the parent table down to a consistent ~0.065ms again (compared to 0.05ms when completely removing the trigger, so penalty for the trigger is roughly ~20%).

On Sat, 17 Jul 2021 at 16:40, Justin Pryzby <pry...@telsasoft.com> wrote:
You could run a single UPDATE rather than 30k triggers.
Or switch to an INSERT on the table, with an index on it, and call
max(last_parent_table_change) from whatever needs to ingest it.  And prune the
old entries and vacuum it outside the transaction.  Maybe someone else will
have a better suggestion.
Maybe just change the UPDATE statement to:

UPDATE data_sync SET last_parent_table_change=CURRENT_TIMESTAMP WHERE
last_parent_table_change <> CURRENT_TIMESTAMP;

That should reduce the number of actual updates to 1 per transaction.

David


Reply via email to