Thread: BUG #18384: It's not bug just question about documentation
The following bug has been logged on the website: Bug reference: 18384 Logged by: Jun Kang Email address: junhkang91@gmail.com PostgreSQL version: 16.2 Operating system: Linux Description: I am a big PostgreSQL lover and keep reading documents and implying to postgresql with bigdata service. while I am reading https://www.postgresql.org/docs/16/transaction-id.html and https://www.postgresql.org/docs/16/routine-vacuuming.html#VACUUM-FOR-WRAPAROUND, i have a question. "The internal transaction ID type xid is 32 bits wide and wraps around every 4 billion transactions." "it is necessary to vacuum every table in every database at least once every two billion transactions." why Postgresql needs to vacuum in every 2B transactions even though txid wraps on every 4 billion transactions (double time)? as the freezing issue, isnt it better to reduce vacuum count?
PG Bug reporting form <noreply@postgresql.org> writes: > "The internal transaction ID type xid is 32 bits wide and wraps around every > 4 billion transactions." > "it is necessary to vacuum every table in every database at least once every > two billion transactions." > why Postgresql needs to vacuum in every 2B transactions even though txid > wraps on every 4 billion transactions (double time)? Because an XID that's more than 2B transactions in the past will wrap around and be seen as a bit less than 2B transactions in the future, causing any rows bearing that XID to become invisible to current transactions. regards, tom lane