Re: [DESIGN] Incremental checksums

Поиск
Список
Период
Сортировка
От Jim Nasby
Тема Re: [DESIGN] Incremental checksums
Дата
Msg-id 55A44070.7040802@BlueTreble.com
обсуждение исходный текст
Ответ на Re: [DESIGN] Incremental checksums  (David Christensen <david@endpoint.com>)
Список pgsql-hackers
On 7/13/15 4:02 PM, David Christensen wrote:
>
>> On Jul 13, 2015, at 3:50 PM, Jim Nasby <Jim.Nasby@BlueTreble.com> wrote:
>>
>> On 7/13/15 3:26 PM, David Christensen wrote:
>>> * Incremental Checksums
>>>
>>> PostgreSQL users should have a way up upgrading their cluster to use data checksums without having to do a costly
pg_dump/pg_restore;in particular, checksums should be able to be enabled/disabled at will, with the database enforcing
thelogic of whether the pages considered for a given database are valid.
 
>>>
>>> Considered approaches for this are having additional flags to pg_upgrade to set up the new cluster to use checksums
wherethey did not before (or optionally turning these off).  This approach is a nice tool to have, but in order to be
ableto support this process in a manner which has the database online while the database is going throught the initial
checksumprocess.
 
>>
>> It would be really nice if this could be extended to handle different page formats as well, something that keeps
rearingit's head. Perhaps that could be done with the cycle idea you've described.
 
>
> I had had this thought too, but the main issues I saw were that new page formats were not guaranteed to take up the
samespace/storage, so there was an inherent limitation on the ability to restructure things out *arbitrarily*; that
beingsaid, there may be a use-case for the types of modifications that this approach *would* be able to handle.
 

After some discussion on IRC, I there's 2 main points to consider.

First, we're currently unhappy with how relfrozenxid works, and this 
proposal follows the same pattern of having essentially a counter field 
in pg_class. Perhaps this is OK because things like checksum really 
shouldn't change that often. (My inclination is that fields in pg_class 
are OK for now.)

Second, there are 4 use cases here that are very similar. We should 
*consider* them now, while designing this. That doesn't mean the first 
patch needs to support anything other than checksums.

1) Page layout changes
2) Page run-time changes (currently only checksums)
3) Tuple layout changes (ie: HEAP_MOVED_IN)
4) Tuple run-time changes (ie: DROP COLUMN)

1 is currently handled in pg_upgrade by forcing a page-by-by-page copy 
during upgrade. Doing this online would require the same kind of 
conversion plugin pg_upgrade uses. If we want to support conversions 
that need extra free space on a page we'd also need support for that.

2 is similar to 1, except this can change via GUC or similar. Checksums 
are an example of this, as is creating extra free space on a page to 
support an upgrade.

3 & 4 are tuple-level equivalents to 1 & 2.

I think the bigger challenge to these things is how to track the status 
of a conversion (as opposed to the conversion function itself).

- Do we want each of these to have a separate counter in pg_class? 
(rellastchecksum, reloldestpageversion, etc)

- Should that info be combined?
-- 
Jim Nasby, Data Architect, Blue Treble Consulting, Austin TX
Data in Trouble? Get it in Treble! http://BlueTreble.com



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

Предыдущее
От: Robert Haas
Дата:
Сообщение: Re: Minor issue with BRIN regression tests
Следующее
От: Ted Toth
Дата:
Сообщение: Re: security labels on databases are bad for dump & restore