Re: Lossy Index Tuple Enhancement (LITE) - Mailing list pgsql-hackers

From Claudio Freire
Subject Re: Lossy Index Tuple Enhancement (LITE)
Date
Msg-id CAGTBQpYB4kJ6uB+3PasqxTV6N34N1GAV6TftQZOQs13TVJKDVQ@mail.gmail.com
Whole thread Raw
In response to Re: Lossy Index Tuple Enhancement (LITE)  (Claudio Freire <klaussfreire@gmail.com>)
List pgsql-hackers
On Wed, Aug 3, 2016 at 4:37 PM, Claudio Freire <klaussfreire@gmail.com> wrote:
> On Wed, Aug 3, 2016 at 4:20 AM, Simon Riggs <simon@2ndquadrant.com> wrote:
>> == IndexScan ==
>>
>> Note that the executor code for IndexScan appears identical between
>> the two optimizations. The difference between duplicate and range LITE
>> tuples is needed only at INSERT time (or UPDATE indexed column to a
>> new value).
>>
>> When we do an IndexScan if we see a LITE tuple we do a scan of the
>> linepointer ranges covered by this index tuple (which might eventually
>> go to a full block scan). For example with bit1 set we would scan 16
>> linepointers (on an 8192 byte block) and with 2 bits set we would scan
>> 32 linepointers etc.., not necessarily consecutive ranges. So the
>> IndexScan can return potentially many heap rows per index entry, which
>> need to be re-checked and may also need to be sorted prior to
>> returning them. If no rows are returned we can kill the index pointer,
>> just as we do now for btrees, so they will be removed eventually from
>> the index without the need for VACUUM. An BitmapIndexScan that sees a
>> lossy pointer can also use the lossy TID concept, so we can have
>> partially lossy bitmaps.
>
> Wouldn't this risk scanning rows more than once unless it's part of a
> bitmap scan?

I think an alternative that would not have such a problem and would
have a smaller impact both in performance and code, would be to just
not add new index tuples when the update happens on the same page,
easily checked by comparing the old tuple's t_ctid against the new's.
Index scans would have to follow same-page update chains, and perhaps
vacuum would need some fixing too, but that would probably be less of
a performance hit than the proposed lossy item pointers.



pgsql-hackers by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Lossy Index Tuple Enhancement (LITE)
Next
From: Andres Freund
Date:
Subject: Re: Changed SRF in targetlist handling