Re: Minor necessary/sufficient slip-up?
От | Peter Eisentraut |
---|---|
Тема | Re: Minor necessary/sufficient slip-up? |
Дата | |
Msg-id | 278b0a93-78df-498b-9284-162230e7db90@eisentraut.org обсуждение исходный текст |
Ответ на | Re: Minor necessary/sufficient slip-up? (Laurenz Albe <laurenz.albe@cybertec.at>) |
Список | pgsql-docs |
On 03.09.25 09:52, Laurenz Albe wrote: > On Tue, 2025-09-02 at 08:22 +0000, PG Doc comments form wrote: >> Page: https://www.postgresql.org/docs/17/routine-vacuuming.html >> >> This is a most pedantic point, but since the postgres documentation is >> incredibly accurate and well written I indulge my pedantry this one time: >> >> Regarding the last sentence of the first paragraph of 24.1.5: I sure hope >> vacuuming every table in every database at least once every two billion >> transactions is not only necessary to avoid catastrophic data loss, but also >> sufficient. Indeed if I understand the subsequent explanation, it is >> sufficient but not necessary. >> >> Here is the full paragraph: >> >> 24.1.5. Preventing Transaction ID Wraparound Failures >> PostgreSQL's MVCC transaction semantics depend on being able to compare >> transaction ID (XID) numbers: a row version with an insertion XID greater >> than the current transaction's XID is “in the future” and should not be >> visible to the current transaction. But since transaction IDs have limited >> size (32 bits) a cluster that runs for a long time (more than 4 billion >> transactions) would suffer transaction ID wraparound: the XID counter wraps >> around to zero, and all of a sudden transactions that were in the past >> appear to be in the future — which means their output become invisible. In >> short, catastrophic data loss. (Actually the data is still there, but that's >> cold comfort if you cannot get at it.) To avoid this, it is necessary to >> vacuum every table in every database at least once every two billion >> transactions. >> >> Suggested change for the last sentence: >> To avoid this, it suffices to vacuum every table in every database at least >> once every two billion transactions. > > I don't think that that would be an improvement. Yes, it is sufficient, but > it is also necessary. And the "necessary" part is the more important one. > As reader, I would implicitly assume that VACUUM is sufficient, otherwise > the nice writers of the documentation would surely have told me what else I > have to do to avoid that scary eventuality. > > I'd be OK with writing "necessary and sufficient". Or is that too much > legalese? I think this introductory sentence establishes the necessity only. The rest of the section and chapter establishes the sufficiency.
В списке pgsql-docs по дате отправления: