From: | Merlin Moncure <mmoncure(at)gmail(dot)com> |
---|---|
To: | Jim Nasby <jnasby(at)enova(dot)com> |
Cc: | Jeff Janes <jeff(dot)janes(at)gmail(dot)com>, Daniel Farina <daniel(at)heroku(dot)com>, "pgsql-performance(at)postgresql(dot)org" <pgsql-performance(at)postgresql(dot)org> |
Subject: | Re: Horrific time for getting 1 record from an index? |
Date: | 2013-11-13 15:03:05 |
Message-ID: | CAHyXU0yE+RUSTJ4PPteqG9q5KPSu1ZQZDW2qzPJq_P+y008ZEA@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
On Tue, Nov 12, 2013 at 6:22 PM, Jim Nasby <jnasby(at)enova(dot)com> wrote:
> On 11/12/13 6:17 PM, Jeff Janes wrote:
>>
>> I verified that this is the case--the empty pages remain linked in the
>> tree until a vacuum removes them. But walking through empty leaf pages is
>> way faster than resolving pages full of pointers to dead-to-all tuple, so
>> the kill code still gives a huge benefit. But of course nothing will do
>> much good until the transaction horizon advances.
>
>
> Aaaand... that gets to the other problem... our SAN performance is pretty
> abysmal. It took ~270 seconds to read 80MB of index pages (+ whatever heap)
> to get to the first live tuple. (This was run close enough to the vacuum
> that I don't think visibility of these tuples would have changed
> mid-stream).
That's awful, but 'par for the course' for SANs in my experience. If
my math is right, that works out to 27ms / page read. But each index
page read can cause multiple heap page reads depending on how the data
is organized so I think you are up against the laws of physics. All
we can do is to try and organize data so that access patterns are less
radom and/or invest in modern hardware.
merlin
From | Date | Subject | |
---|---|---|---|
Next Message | Josh Berkus | 2013-11-13 19:34:11 | Re: Performance bug in prepared statement binding in 9.2? |
Previous Message | Marc Mamin | 2013-11-13 10:29:14 | CREATE TABLE AS WITH FREEZE ? |