Re: Block-level CRC checks
От | pgsql@mohawksoft.com |
---|---|
Тема | Re: Block-level CRC checks |
Дата | |
Msg-id | 40651.71.232.149.185.1222867741.squirrel@mail.mohawksoft.com обсуждение исходный текст |
Ответ на | Re: Block-level CRC checks (Hannu Krosing <hannu@2ndQuadrant.com>) |
Список | pgsql-hackers |
> On Tue, 2008-09-30 at 17:13 -0400, pgsql@mohawksoft.com wrote: >> > >> > I believe the idea was to make this as non-invasive as possible. And >> > it would be really nice if this could be enabled without a dump/ >> > reload (maybe the upgrade stuff would make this possible?) >> > -- >> >> It's all about the probability of a duplicate check being generated. If >> you use a 32 bit checksum, then you have a theoretical probability of 1 >> in >> 4 billion that a corrupt block will be missed (probably much lower >> depending on your algorithm). If you use a short, then a 1 in 65 >> thousand >> probability. If you use an 8 bit number, then 1 in 256. >> >> Why am I going on? Well, if there are any spare bits in a block header, >> they could be used for the check value. > > Even and 64-bit integer is just 0.1% of 8k page size, and it is even > less than 0.1% likely that page will be 100% full and thus that 64bits > wastes any real space at all. > > So I don't think that this is a space issue. > Oh, I don't think it is a space issue either, the question was could there be a way to do it without a dump and restore. The only way that occurs to me is if there are some unused bits in the block header. I haven't looked at that code in years. The numerics of it are just a description of the probability of a duplicate sum or crc, meaning a false OK. Also, regardless of whether or not the block is full, the block is read and written as a block and that the underlying data unimportant.
В списке pgsql-hackers по дате отправления: