Attempting to delete excess rows from table with BATCH DELETE - Mailing list pgsql-general

From Gus Spier
Subject Attempting to delete excess rows from table with BATCH DELETE
Date
Msg-id CAG8xnif_jmRYAGUvtoQNsHA8UqGRDkwuSffO55-3wGMLQArA8g@mail.gmail.com
Whole thread Raw
Responses Re: Attempting to delete excess rows from table with BATCH DELETE
Re: Attempting to delete excess rows from table with BATCH DELETE
Re: Attempting to delete excess rows from table with BATCH DELETE
List pgsql-general
Environment: AWS RDS Aurora for PostgreSQL 15 hosting tables that
support scientific research. The development environment predominantly
uses JPA with Hibernate.

Years of neglect have allowed mission tables to accumulate hundreds of
millions of rows of excess data. The developers and the customer
decided we must delete all rows older than 75 days. Table partitioning
was briefly considered but discarded because of the effort needed to
refactor the codebase.

I proposed the straight-forward course of action: delete by batches
from the victim tables.

The solution seemed obvious:

For candidate tables:
- Determine timestamp column iwith the most relevant value and call it
the Discriminator.
- Delete any row whose Discriminator value is 60 days older than the
Discriminator, with a LIMIT of 50000,
- Get the results of the batch by querying GET DIAGNOSTICS. That value
held aside for later use.
- COMMIT the delete transaction
- Loop to the top and continue deleting batches until there are no
more rows older than 60 days.

- Before running a test, I ensure that the Discriminator column is indexed

I write a procedure to accomplish all this work but it persists in
returning a error to the effect that a COMMIT is not valid in a block
tht tries to DELETE data.

Has anybody seen this before? Is there a solution?

Thanks in advance for any help you may be able to offer.

Regards,

Gus Spier



pgsql-general by date:

Previous
From: Adrian Klaver
Date:
Subject: Re: Index (primary key) corrupt?
Next
From: "David G. Johnston"
Date:
Subject: Re: Attempting to delete excess rows from table with BATCH DELETE