Search Postgresql Archives

Re: questions about wraparound

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, Mar 20, 2021 at 12:07 PM Luca Ferrari <fluca1978@xxxxxxxxx> wrote:
> I suspect freezing is doing it "totally" for a idatistemplate
> database, even if I don't understand why.

I can confirm that freezing a template database is done by means of
setting it age to zero. I've set the datistempalte flag for testdb and
reissued a wraparong (I'm torturing my postgresql!), and after a
vacuum its age went to zero.
I'm not able to find this behavior in the documentation however, and
still don't understand why a template database should have a different
behavior (at least, I can imagine only to reduce the future workload
of vacuuming a template database).
Here it is, again, what I did in single user mode:

backend> select datname, age( datfrozenxid), current_setting(
'vacuum_freeze_min_age' ) from pg_database;
         1: datname     (typeid = 19, len = 64, typmod = -1, byval = f)
         2: age (typeid = 23, len = 4, typmod = -1, byval = t)
         3: current_setting     (typeid = 25, len = -1, typmod = -1, byval = f)
        ----
         1: datname = "postgres"        (typeid = 19, len = 64, typmod
= -1, byval = f)
         2: age = "2138438218"  (typeid = 23, len = 4, typmod = -1, byval = t)
         3: current_setting = "50000000"        (typeid = 25, len =
-1, typmod = -1, byval = f)
        ----
         1: datname = "backupdb"        (typeid = 19, len = 64, typmod
= -1, byval = f)
         2: age = "2138438218"  (typeid = 23, len = 4, typmod = -1, byval = t)
         3: current_setting = "50000000"        (typeid = 25, len =
-1, typmod = -1, byval = f)
        ----
         1: datname = "template1"       (typeid = 19, len = 64, typmod
= -1, byval = f)
         2: age = "2138438218"  (typeid = 23, len = 4, typmod = -1, byval = t)
         3: current_setting = "50000000"        (typeid = 25, len =
-1, typmod = -1, byval = f)
        ----
         1: datname = "template0"       (typeid = 19, len = 64, typmod
= -1, byval = f)
         2: age = "2138438218"  (typeid = 23, len = 4, typmod = -1, byval = t)
         3: current_setting = "50000000"        (typeid = 25, len =
-1, typmod = -1, byval = f)
        ----
         1: datname = "testdb"  (typeid = 19, len = 64, typmod = -1, byval = f)
         2: age = "2138438218"  (typeid = 23, len = 4, typmod = -1, byval = t)
         3: current_setting = "50000000"        (typeid = 25, len =
-1, typmod = -1, byval = f)
        ----
         1: datname = "pgbench" (typeid = 19, len = 64, typmod = -1, byval = f)
         2: age = "2138438218"  (typeid = 23, len = 4, typmod = -1, byval = t)
         3: current_setting = "50000000"        (typeid = 25, len =
-1, typmod = -1, byval = f)
        ----
backend> set vacuum_freeze_min_age to 1234
backend> vacuum
 WARNING:  database "backupdb" must be vacuumed within 9045429 transactions
 HINT:  To avoid a database shutdown, execute a database-wide VACUUM
in that database.
        You might also need to commit or roll back old prepared
transactions, or drop stale replication slots.
backend>


and here it is the situation after a restart:

testdb=> select datname, age( datfrozenxid ) from pg_database;
  datname  |   age
-----------+----------
 postgres  |     1234
 backupdb  | 50000000
 template1 |        0
 template0 |        0
 testdb    |        0
 pgbench   | 50000000





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]

  Powered by Linux