Re: Efficiently query for the most recent record for a given user - Mailing list pgsql-performance

From Claudio Freire
Subject Re: Efficiently query for the most recent record for a given user
Date
Msg-id CAGTBQpZyYxwXg2gy1RXEx2_3sSS6Ht=vDDpVUXTWiq5C5VN2GQ@mail.gmail.com
Whole thread Raw
In response to Efficiently query for the most recent record for a given user  (Robert DiFalco <robert.difalco@gmail.com>)
List pgsql-performance
On Thu, Aug 8, 2013 at 5:01 PM, Kevin Grittner <kgrittn@ymail.com> wrote:
> Claudio Freire <klaussfreire@gmail.com> wrote:
>> On Wed, Aug 7, 2013 at 4:04 PM, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>>>> Yeah, but it's faster if it's in the same direction, because the
>>>> kernel read-ahead code detects sequential reads, whereas it doesn't
>>>> when it goes backwards. The difference can be up to a factor of 10 for
>>>> long index scans.
>>>
>>> Color me skeptical.  Index searches are seldom purely sequential block
>>> accesses.  Maybe if you had a freshly built index that'd never yet
>>> suffered any inserts/updates, but in practice any advantage would
>>> disappear very quickly after a few index page splits.
>>
>> Maybe.
>>
>> I've tested on pgbench test databases, which I'm not sure whether
>> they're freshly built indexes or incrementally built ones, and it
>> applies there (in fact backward index-only scans was one of the
>> workloads the read-ahead patch improved the most).
>
> It's been a while, but when I was touching the btree code for the
> SSI implementation I thought I saw something about a reverse scan
> needing to visit the parent page in cases where a forward scan
> doesn't, due to the locking techniques used in btree.  I don't know
> how significant those extra trips up and down the tree are, but
> they must cost *something*.

From my benchmarks at the time (with pgbench), they seldom ever
happen, so even if they cost a lot, they don't add up to much.


pgsql-performance by date:

Previous
From: Robert DiFalco
Date:
Subject: Efficient Correlated Update
Next
From: Vik Fearing
Date:
Subject: Re: subselect requires offset 0 for good performance.