On Wed, Oct 31, 2018 at 9:34 PM Dmitry Dolgov <9erthali...@gmail.com> wrote:
> > On Mon, 29 Oct 2018 at 05:56, Haribabu Kommi <kommi.harib...@gmail.com> > wrote: > > > >> This problem couldn't be reproduced on the master branch, so I've tried > to > >> investigate it. It comes from nodeModifyTable.c:1267, when we've got > >> HeapTupleInvisible as a result, and this value in turn comes from > >> table_lock_tuple. Everything points to the new way of handling > HeapTupleUpdated > >> result from heap_update, when table_lock_tuple call was introduced. > Since I > >> don't see anything similar in the master branch, can anyone clarify why > is this > >> lock necessary here? > > > > > > In the master branch code also, there is a tuple lock that is happening > in > > EvalPlanQual() function, but pluggable-storage code, the lock is kept > outside > > and also function call rearrangements, to make it easier for the table > access > > methods to provide their own MVCC implementation. > > Yes, now I see it, thanks. Also I can confirm that the attached patch > solves > this issue. > Thanks for the testing and confirmation. > FYI, alongside with reviewing the code changes I've ran few performance > tests > (that's why I hit this issue with pgbench in the first place). In case of > high > concurrecy so far I see small performance degradation in comparison with > the > master branch (about 2-5% of average latency, depending on the level of > concurrency), but can't really say why exactly (perf just shows barely > noticeable overhead there and there, maybe what I see is actually a > cumulative > impact). > Thanks for sharing your observation, I will also analyze and try to find out performance bottlenecks that are causing the overhead. Here I attached the cumulative fixes of the patches, new API additions for zheap and basic outline of the documentation. Regards, Haribabu Kommi Fujitsu Australia
0003-First-draft-of-pluggable-storage-documentation.patch
Description: Binary data
0002-New-API-s-are-added.patch
Description: Binary data
0001-Further-fixes-and-cleanup.patch
Description: Binary data