On Thu, Jun 12, 2014 at 9:31 AM, Gurjeet Singh <gurj...@singh.im> wrote:
> I don't have intimate knowledge of recovery but I think the above
> assessment of recovery's operations holds true. If you still think
> this is a concern, can you please provide a bit firm example using
> which I can visualize the problem you're talking about.

Okay, let me try with an example:

Assume No. of shared buffers = 5
Before Crash:

1. Pages in shared buffers numbered 3, 4, 5 have write operations
    performed on them, followed by lot of reads which makes their
    usage_count as 5.
2. Write operation happened on pages in shared buffers numbered
    1, 2. Usage_count of these buffers is 1.
3. Now one read operation needs some different pages and evict
    pages in shared buffers numbered 1 and 2 and read the required
    pages, so buffers 1 and 2 will have usage count as 1.
4. At this moment shutdown initiated.
5. Bgwriter saved just buffers 1 and 2 and crashed.

After Crash:

1. Recovery will read in pages on which operations happened in
step-1 and 2 above.
2. Buffer loader (pg_hibernator) will load buffers on which operations
happened in step-3, so here it might needs to evict buffers which are
corresponding to buffers of step-1 before crash.  So what this
essentially means is that pg_hibernator can lead to eviction of more
useful pages.

With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com

Reply via email to