Re: Document efficient self-joins / UPDATE LIMIT techniques.
Joel Jacobson <joel@compiler.org>
From: "Joel Jacobson" <joel@compiler.org>
To: "Corey Huinker" <corey.huinker@gmail.com>
Cc: "Laurenz Albe" <laurenz.albe@cybertec.at>,
"vignesh C" <vignesh21@gmail.com>, pgsql-hackers@lists.postgresql.org,
"Marko Tiikkaja" <marko@joh.to>
Date: 2024-02-14T16:55:07Z
Lists: pgsql-hackers
On Tue, Feb 13, 2024, at 23:56, Corey Huinker wrote: > This patch came out of a discussion at the last PgCon with the person > who made the "fringe feature" quote, who seemed quite supportive of > documenting the technique. The comment may have been in regards to > actually implementing a LIMIT clause on UPDATE and DELETE, which isn't > in the SQL standard and would be difficult to implement as the two > statements have no concept of ordering. Documenting the workaround > would alleviate some interest in implementing a nonstandard feature. Thanks for sharing the background story. > As for whether it's commonplace, when I was a consultant I had a number > of customers that I had who bemoaned how large updates caused big > replica lag, basically punishing access to records they did care about > in order to properly archive or backfill records they don't care about. > I used the technique a lot, putting the update/delete in a loop, and > often running multiple copies of the same script at times when I/O > contention was low, but if load levels rose it was trivial to just kill > a few of the scripts until things calmed down. I've also used the technique quite a lot, but only using the PK, didn't know about the ctid trick, so many thanks for documenting it. /Joel
Commits
-
Doc: show how to get the equivalent of LIMIT for UPDATE/DELETE.
- 2daeba6a4e49 17.0 landed