From: Craig Ringer <ringerc@ringerc.id.au>
To: A J <s5aly@yahoo.com>
Cc: PG Admin <pgsql-admin@postgresql.org>
Subject: Re: Question on Postgres Index internals
Date: Fri, 19 Aug 2011 14:40:51 +0800
Message-ID: <4E4E0573.2010508@ringerc.id.au> (raw)
In-Reply-To: <1313703964.54877.YahooMailNeo@web120001.mail.ne1.yahoo.com>
References: <1313703964.54877.YahooMailNeo@web120001.mail.ne1.yahoo.com>
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-admin@postgresql.org
Cc: ringerc@ringerc.id.au, s5aly@yahoo.com
Subject: Re: Question on Postgres Index internals
In-Reply-To: <4E4E0573.2010508@ringerc.id.au>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox