pgsql: Improve vacuum code to track minimum Xids per table instead of

Поиск
Список
Период
Сортировка
От alvherre@postgresql.org (Alvaro Herrera)
Тема pgsql: Improve vacuum code to track minimum Xids per table instead of
Дата
Msg-id 20060710162052.552849FB330@postgresql.org
обсуждение исходный текст
Список pgsql-committers
Log Message:
-----------
Improve vacuum code to track minimum Xids per table instead of per database.
To this end, add a couple of columns to pg_class, relminxid and relvacuumxid,
based on which we calculate the pg_database columns after each vacuum.

We now force all databases to be vacuumed, even template ones.  A backend
noticing too old a database (meaning pg_database.datminxid is in danger of
falling behind Xid wraparound) will signal the postmaster, which in turn will
start an autovacuum iteration to process the offending database.  In principle
this is only there to cope with frozen (non-connectable) databases without
forcing users to set them to connectable, but it could force regular user
database to go through a database-wide vacuum at any time.  Maybe we should
warn users about this somehow.  Of course the real solution will be to use
autovacuum all the time ;-)

There are some additional improvements we could have in this area: for example
the vacuum code could be smarter about not updating pg_database for each table
when called by autovacuum, and do it only once the whole autovacuum iteration
is done.

I updated the system catalogs documentation, but I didn't modify the
maintenance section.  Also having some regression tests for this would be nice
but it's not really a very straightforward thing to do.

Catalog version bumped due to system catalog changes.

Modified Files:
--------------
    pgsql/doc/src/sgml:
        catalogs.sgml (r2.125 -> r2.126)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/doc/src/sgml/catalogs.sgml.diff?r1=2.125&r2=2.126)
    pgsql/src/backend/access/transam:
        varsup.c (r1.70 -> r1.71)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/access/transam/varsup.c.diff?r1=1.70&r2=1.71)
    pgsql/src/backend/catalog:
        heap.c (r1.305 -> r1.306)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/catalog/heap.c.diff?r1=1.305&r2=1.306)
    pgsql/src/backend/commands:
        analyze.c (r1.93 -> r1.94)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/analyze.c.diff?r1=1.93&r2=1.94)
        dbcommands.c (r1.181 -> r1.182)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/dbcommands.c.diff?r1=1.181&r2=1.182)
        vacuum.c (r1.332 -> r1.333)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuum.c.diff?r1=1.332&r2=1.333)
        vacuumlazy.c (r1.72 -> r1.73)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/commands/vacuumlazy.c.diff?r1=1.72&r2=1.73)
    pgsql/src/backend/libpq:
        hba.c (r1.152 -> r1.153)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/libpq/hba.c.diff?r1=1.152&r2=1.153)
    pgsql/src/backend/postmaster:
        autovacuum.c (r1.21 -> r1.22)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/postmaster/autovacuum.c.diff?r1=1.21&r2=1.22)
        postmaster.c (r1.490 -> r1.491)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/postmaster/postmaster.c.diff?r1=1.490&r2=1.491)
    pgsql/src/backend/utils/init:
        flatfiles.c (r1.18 -> r1.19)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/backend/utils/init/flatfiles.c.diff?r1=1.18&r2=1.19)
    pgsql/src/include/access:
        transam.h (r1.57 -> r1.58)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/access/transam.h.diff?r1=1.57&r2=1.58)
    pgsql/src/include/catalog:
        catversion.h (r1.336 -> r1.337)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/catversion.h.diff?r1=1.336&r2=1.337)
        pg_attribute.h (r1.122 -> r1.123)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_attribute.h.diff?r1=1.122&r2=1.123)
        pg_class.h (r1.94 -> r1.95)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_class.h.diff?r1=1.94&r2=1.95)
        pg_database.h (r1.40 -> r1.41)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/catalog/pg_database.h.diff?r1=1.40&r2=1.41)
    pgsql/src/include/commands:
        vacuum.h (r1.63 -> r1.64)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/commands/vacuum.h.diff?r1=1.63&r2=1.64)
    pgsql/src/include/libpq:
        hba.h (r1.42 -> r1.43)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/libpq/hba.h.diff?r1=1.42&r2=1.43)
    pgsql/src/include/storage:
        pmsignal.h (r1.14 -> r1.15)
        (http://developer.postgresql.org/cvsweb.cgi/pgsql/src/include/storage/pmsignal.h.diff?r1=1.14&r2=1.15)

В списке pgsql-committers по дате отправления:

Предыдущее
От: momjian@postgresql.org (Bruce Momjian)
Дата:
Сообщение: pgsql: Improve script by processing only C files.
Следующее
От: momjian@postgresql.org (Bruce Momjian)
Дата:
Сообщение: pgsql: Improve tool coding.