Re: Relation extension scalability
От | Amit Kapila |
---|---|
Тема | Re: Relation extension scalability |
Дата | |
Msg-id | CAA4eK1KFp78eSt+HV-20KH2JC_8+w7w2hr5T7uy1brZYqsb5wg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Relation extension scalability (Robert Haas <robertmhaas@gmail.com>) |
Ответы |
Re: Relation extension scalability
|
Список | pgsql-hackers |
On Mon, Mar 28, 2016 at 1:55 AM, Robert Haas <robertmhaas@gmail.com> wrote:
>
> On Sun, Mar 27, 2016 at 8:00 AM, Dilip Kumar <dilipbalaut@gmail.com> wrote:
>
> > Results:
> > ----------
> > 1. With this performance is little less than v14 but the problem of extra
> > relation size is solved.
> > 2. With this we can conclude that extra size of relation in v14 is because
> > some while extending the pages, its not immediately available and at end
> > some of the pages are left unused.
>
> I agree with that conclusion. I'm not quite sure where that leaves
> us, though. We can go back to v13, but why isn't that producing extra
> pages? It seems like it should: whenever a bulk extend rolls over to
> a new FSM page, concurrent backends will search either the old or the
> new one but not both.
>
>
> On Sun, Mar 27, 2016 at 8:00 AM, Dilip Kumar <dilipbalaut@gmail.com> wrote:
>
> > Results:
> > ----------
> > 1. With this performance is little less than v14 but the problem of extra
> > relation size is solved.
> > 2. With this we can conclude that extra size of relation in v14 is because
> > some while extending the pages, its not immediately available and at end
> > some of the pages are left unused.
>
> I agree with that conclusion. I'm not quite sure where that leaves
> us, though. We can go back to v13, but why isn't that producing extra
> pages? It seems like it should: whenever a bulk extend rolls over to
> a new FSM page, concurrent backends will search either the old or the
> new one but not both.
>
I have not debugged the flow, but by looking at v13 code, it looks like it will search both old and new. In function GetPageWithFreeSpaceExtended()->fsm_search_from_addr()->fsm_search_avail(), the basic idea of search is: Start the search from the target slot. At every step, move one
node to the right, then climb up to the parent. Stop when we reach a node with enough free space (as we must, since the root has enough space).So shouldn't it be able to find the new FSM page where the bulk extend rolls over?
В списке pgsql-hackers по дате отправления: