Re: Enabling Checksums - Mailing list pgsql-hackers

From Amit Kapila
Subject Re: Enabling Checksums
Date
Msg-id 000001cdbe37$df23da80$9d6b8f80$@kapila@huawei.com
Whole thread Raw
In response to Enabling Checksums  (Jeff Davis <pgsql@j-davis.com>)
List pgsql-hackers
On Friday, November 09, 2012 6:32 AM Jeff Davis wrote:
> As I understand it, the main part of the remaining work to be done for
> the checksums patch (at least the first commit) is to have a better way
> to enable/disable them.
> 
> For the sake of simplicity (implementation as well as usability), it
> seems like there is agreement that checksums should be enabled or
> disabled for the entire instance, not per-table.
> 
> I don't think a GUC entirely makes sense (in its current form, anyway).
> We basically care about 3 states:
>   1. Off: checksums are not written, nor are they verified. Pages that
> are newly dirtied have the checksum information in the header cleared.
>   2. Enabling: checksums are written for every dirty page, but only
> verified for pages where the checksum is present (as determined by
> information in the page header).
>   3. On: checksums are written for every dirty page, and verified for
> every page that's read. If a page does not have a checksum, it's
> corrupt.
> 
> Does it make sense to store this information in pg_control? That doesn't
> require adding any new file, and it has the benefit that it's already
> checksummed. It's available during recovery and can be made available
> pretty easily in the places where we write data.
> 
> And the next question is what commands to add to change state. Ideas:
> 
>    CHECKSUMS ENABLE; -- set state to "Enabling"
>    CHECKSUMS DISABLE; -- set state to "Off"
> 
> And then to get to the "On" state, you have to run a system-wide VACUUM
> while in the "Enabling" state. Or, if the above syntax causes problems,
> we can make all of these into VACUUM options.

I think one thing may needs to be taken care during such a VACUUM operation
is not to allow user to say
CHECKSUM DISABLE.

Also how about following ways :
1. Allow CHECKSUM Enable only during initdb as mentioned by Robert.  Allow user to only do CHECKSUM DISABLE after
initdb.
2. Do the Checksum only for particular pages (SRLU) or to do for System
tables only.


With Regards,
Amit Kapila.




pgsql-hackers by date:

Previous
From: Jeff Janes
Date:
Subject: Re: Further pg_upgrade analysis for many tables
Next
From: Jesper Krogh
Date:
Subject: Re: Enabling Checksums