Обсуждение: HOT Update || want to use a different page for updated tuple

Поиск
Список
Период
Сортировка

HOT Update || want to use a different page for updated tuple

От
Rohit Goyal
Дата:
Hi All, 

I was comparing postgresql performance and was just curious about performance in case i want to store the updated index tuple version on a different page. 
I was looking into the code of heapam.c, but was not able to find loop which i should remove so that postgresql use a different buffer for updated index tuple version.

Please guide me, about how i can achieve this.

Regards,
Rohit Goyal

Re: HOT Update || want to use a different page for updated tuple

От
Heikki Linnakangas
Дата:
On 04/04/2014 02:53 PM, Rohit Goyal wrote:
> Hi All,
>
> I was comparing postgresql performance and was just curious about
> performance in case i want to store the updated index tuple version on a
> different page.
> I was looking into the code of heapam.c, but was not able to find loop
> which i should remove so that postgresql use a different buffer for updated
> index tuple version.

Did you mean to:

1. Force the old and new tuple to always be stored on different pages?

Hack heap_update so that it chooses a new page. I think you'll also need 
to hack RelationGetBufferForTuple to not return the same buffer.

2. Disable the HOT optimization, so that HOT is not used even if the old 
and new tuple are stored on the same page?

In heap_update, force satisfies_hot variable to false.

3. Allow HOT to be used even though the old and new tuple are stored on 
different pages?

This is not feasible..

- Heikki



Re: HOT Update || want to use a different page for updated tuple

От
Rohit Goyal
Дата:
On Fri, Apr 4, 2014 at 2:03 PM, Heikki Linnakangas <hlinnakangas@vmware.com> wrote:
On 04/04/2014 02:53 PM, Rohit Goyal wrote:
Hi All,

I was comparing postgresql performance and was just curious about
performance in case i want to store the updated index tuple version on a
different page.
I was looking into the code of heapam.c, but was not able to find loop
which i should remove so that postgresql use a different buffer for updated
index tuple version.

Did you mean to:

1. Force the old and new tuple to always be stored on different pages?

Hack heap_update so that it chooses a new page. I think you'll also need to hack RelationGetBufferForTuple to not return the same buffer.

Can you explain a bit more from inside the code where i have to make the changes :)? my focus is just to store the index tuple of an updated tuple onto a different page or on a different buffer.
 
2. Disable the HOT optimization, so that HOT is not used even if the old and new tuple are stored on the same page?

In heap_update, force satisfies_hot variable to false. 
If I do change only this variable to false. then does it means, i have disabled the hot update.? 

3. Allow HOT to be used even though the old and new tuple are stored on different pages?

This is not feasible..

- Heikki

thanks in advance.!! :)

Regards,
Rohit Goyal


--
Regards,
Rohit Goyal