On 2/6/07, Alvaro Herrera <[EMAIL PROTECTED]> wrote:
Merlin Moncure wrote:
> On 2/6/07, Alvaro Herrera <[EMAIL PROTECTED]> wrote:
> >> actually, here is some more relevant bits from the log.
> >> Feb  6 06:31:33 mojo postgres[1088]: [1-1] :: LOG:  autovacuum:
> >> processing database "template0"
> >> Feb  6 06:31:33 mojo postgres[1088]: [2-1] :: ERROR:  could not access
> >> status of transaction 544441911
> >> Feb  6 06:31:33 mojo postgres[1088]: [2-2] :: DETAIL:  could not open
> >> file "pg_clog/0207": No such file or directory
> >
> Latest checkpoint's NextXID:         2162841139
> 2^31:                                           2147483648

I think the relevant arithmetic here is

echo "2162841139 544441911 - p" | dc
1618399228

That's a billion and a half transactions.  Autovacuum uses the formula

        this_whole_db = (tmp->age >
                         (int32) ((MaxTransactionId >> 3) * 3 - 100000));

to determine whether it needs database-wide vacuum.
(MaxTransactionId >> 3) is 536870911, so the calculation is
536870911 * 3 - 100000

echo "536870911 3 * 100000 - p" | dc
1610512733

which looks awfully close to the number above.  About 7 million
transactions must have passed since the first time the error showed up
-- does that sound likely?

Well, scratch that -- what's the _current_ Xid? (not lastest
checkpoint's)

I don't know any better way to get that than this:
postgres=# insert into foo default values;
INSERT 0 1
postgres=# select xmin,xmax from foo;
   xmin    | xmax
------------+------
2163877346 |    0
(1 row)

merlin

---------------------------(end of broadcast)---------------------------
TIP 5: don't forget to increase your free space map settings

Reply via email to