On Feb 28, 2007, at 4:40 PM, Jonah H. Harris wrote:
> Oracle, Microsoft, IBM, Sybase, Teradata, MySQL, and Firebird have a
> clever feature called page checksumming which I think we should copy
> because it's simple and effective at detecting page-level corruption
> due to torn pages and/or faulty storage hardware.
Any system that does enough I/O will occasionally generate corrupted
pages in the complete absence of any other detectable fault or
hardware failure. A fair amount has been written about it with
respect to large-scale computing and it happens often enough when
systems start getting large that just about everyone implements
software I/O checksumming eventually to deal with the problem. I
simply assumed that PostgreSQL was doing the same since it is
definitely used for systems that are large enough that this becomes a
statistically significant issue.
A popular alternative to CRC32 for this purpose is the significantly
cheaper and almost as effective is the Adler32 algorithm. I know
Google used this algorithm when they added checksumming to their
database to tame inexplicable transient corruption.
Cheers,
J. Andrew Rogers