Re: WAL logging freezing

Поиск
Список
Период
Сортировка
От Alvaro Herrera
Тема Re: WAL logging freezing
Дата
Msg-id 20061030162056.GA26493@alvh.no-ip.org
обсуждение исходный текст
Ответ на Re: WAL logging freezing  ("Heikki Linnakangas" <heikki@enterprisedb.com>)
Ответы Re: WAL logging freezing  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-patches
Heikki Linnakangas wrote:
> We just discussed this in detail with Simon, and it looks like we have
> 5 (!) different but related problems:

Wow, four of them are mine :-(

> 2) vactuple_get_minxid doesn't take into account xmax's of tuples that
> have HEAP_XMAX_INVALID set. That's a problem:
>
> transaction 1001 - BEGIN; DELETE FROM foo where key = 1;
> transaction 1001 - ROLLBACK;
> transaction 1002 - VACUUM foo;
> crash
>
> VACUUM foo will set relminxid to 1002, because HEAP_XMAX_INVALID was set
> on the tuple (possibly by vacuum itself) that the deletion that rolled
> back touched. However, that hint-bit update hasn't hit the disk yet, so
> after recovery, the tuple will have an xmax of 1001 with no hint-bit,
> and relminxid is 1002.
>
> The simplest fix for this issue is to ignore the HEAP_XMAX_INVALID hint
> bit, and take any xmax other than InvalidXid into account when
> calculating the relminxid.

Ugh.  Is there another solution to this?  Say, sync the buffer so that
the hint bits are written to disk?  The bug (4) below is problematic if
you take this approach; basically it removes all the optimization won by
the relminxid patch.


> Simon volunteered to make the clog changes for 3 because it's a PITR
> related issue. I can write a patch/patches for the other changes if it
> helps.

I'm swamped at the moment, so I'd appreciate it.

--
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

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

Предыдущее
От: "Heikki Linnakangas"
Дата:
Сообщение: Re: WAL logging freezing
Следующее
От: Tom Lane
Дата:
Сообщение: Re: WAL logging freezing