On 19/08/2011 5:46 AM, A J wrote:
How does Postgres detect corruption of index data files ?
If their structure doesn't make sense, they're corrupt. It doesn't
actively seek or detect corruption, because it shouldn't happen, and
cannot be reliably discovered if it has.
What is the exact mechanism by which it knows that the index is corrupt ?
Numerous different ways, depending on the nature of the damage and the
type of index. Often it won't know the index is damaged at all.
Can it happen that part of the index is corrupt but Postgres does not
realize because those specific rows are not accessed (but other rows
from that table are accessed)
Yes, that is possible. It is also possible that a damaged index could
cause issues like multiple instances of a value that's supposed to be
unique, or a foreign key reference to a non-existent tuple.
Index corruption should not happen. If you are facing index corruption,
either you have a hardware problem or you've hit a bug. The vast
majority of cases are hardware faults.
Perhaps it'd help if you'd supply a little more detail about the
background. Why you're asking this, and why you (presumably) suspect you
have index corruption.
--
Craig Ringer