Thread: pg_restore and transaction id wraparound

pg_restore and transaction id wraparound

From
ow
Date:
Hi,

Hypothetical situation: a table containing, say, 10 billion rows is backed up
and then restored with pg_restore. Would this lead to the transaction id
wraparound issue since 10B rows are imported in one "batch"?

Thanks





__________________________________
Do you Yahoo!?
Free Pop-Up Blocker - Get it now
http://companion.yahoo.com/

Re: pg_restore and transaction id wraparound

From
Tom Lane
Date:
ow <oneway_111@yahoo.com> writes:
> Hypothetical situation: a table containing, say, 10 billion rows is backed up
> and then restored with pg_restore. Would this lead to the transaction id
> wraparound issue since 10B rows are imported in one "batch"?

No, because it'd only be one transaction.

            regards, tom lane

Re: pg_restore and transaction id wraparound

From
Christopher Browne
Date:
Quoth oneway_111@yahoo.com (ow):
> Hypothetical situation: a table containing, say, 10 billion rows is backed up
> and then restored with pg_restore. Would this lead to the transaction id
> wraparound issue since 10B rows are imported in one "batch"?

No.

Copying the 10 billion rows in only consumes one xid.

- If you're in "autocommit mode," then each SQL statement consumes one
  xid.

- If you type in BEGIN;, then you could have 10 billion SQL
  statements after that, and they would, altogether, consume 1 xid.
--
"aa454","@","freenet.carleton.ca"
http://www3.sympatico.ca/cbbrowne/sgml.html
To iterate is human; to recurse, divine.

Re: pg_restore and transaction id wraparound

From
Tom Lane
Date:
Christopher Browne <cbbrowne@acm.org> writes:
> - If you type in BEGIN;, then you could have 10 billion SQL
>   statements after that, and they would, altogether, consume 1 xid.

Actually you can only have 4 billion SQL commands per xid, because the
CommandId datatype is also just 32 bits.  I've never heard of anyone
running into that limit, though.

            regards, tom lane

Re: pg_restore and transaction id wraparound

From
ow
Date:
--- Tom Lane <tgl@sss.pgh.pa.us> wrote:
> Actually you can only have 4 billion SQL commands per xid, because the
> CommandId datatype is also just 32 bits.  I've never heard of anyone
> running into that limit, though.
>

Perhaps noone yet had a table with 4B records in pgSql. Otherwise, how would
they dump/restore it?

Thanks





__________________________________
Do you Yahoo!?
Free Pop-Up Blocker - Get it now
http://companion.yahoo.com/

Re: pg_restore and transaction id wraparound

From
Christopher Browne
Date:
A long time ago, in a galaxy far, far away, oneway_111@yahoo.com (ow) wrote:
> --- Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> Actually you can only have 4 billion SQL commands per xid, because the
>> CommandId datatype is also just 32 bits.  I've never heard of anyone
>> running into that limit, though.
>
> Perhaps noone yet had a table with 4B records in pgSql. Otherwise,
> how would they dump/restore it?

I may have been guilty of hyperbole, by using the number 10 billion,
but not of proving this impossible.

If you had a table that large, dump/restore wouldn't have any XID
problems because the normal dump/restore involves copying the data out
(ONE query, ONE XID), and then reading it via the COPY command (again,
ONE query, ONE XID).

And I think I would be quite displeased if I had a table with that
many records, in any case, because dump/restore would take an
enormously long time as would reindexing.
--
(format nil "~S@~S" "cbbrowne" "ntlug.org")
http://cbbrowne.com/info/linuxdistributions.html
16-inch Rotary Debugger: A highly effective tool for locating problems
in  computer   software.   Available   for  delivery  in   most  major
metropolitan areas.  Anchovies contribute to poor coding style.