Обсуждение: Remove header lock BufferGetLSNAtomic() on architectures with 64 bit atomic operations

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

Remove header lock BufferGetLSNAtomic() on architectures with 64 bit atomic operations

От
Andreas Karlsson
Дата:
Hi,

Andres pointed out this possible optimization on Discord so I hacked up 
a quick patch which avoids taking a lock when reading the LSN from a 
page on architectures where we can be sure to not get a torn value. It 
is always nice to remove a lock from a reasonably hot code path.

I thought about using our functions for atomics but did not do so since 
I did not want to introduce any extra overhead on platforms which do not 
support 64-bit atomic operations.

I decided to just remove the struct to make the code simpler and more 
consistent but I can also see an argument for keeping it to get some 
degree of type safety.

I have not properly benchmarked it yet but plan to do so when I am back 
from my vacation.

I have also included a cleanup patch where I change a macro into an 
inline function which I think improves code readability. Feel free to 
ignore that one if you want.

--
Andreas
Percona

Вложения