Reducing tuple overhead

Поиск
Список
Период
Сортировка
Искать
От
Andres Freund
Тема
Reducing tuple overhead
Дата
Msg-id
20150423162429.GG3055@alap3.anarazel.de
Список
Дерево обсуждения
Reducing tuple overhead Andres Freund <andres@anarazel.de>
Re: Reducing tuple overhead Jim Nasby <Jim.Nasby@BlueTreble.com>
Re: Reducing tuple overhead "Joshua D. Drake" <jd@commandprompt.com>
Re: Reducing tuple overhead Alvaro Herrera <alvherre@2ndquadrant.com>
Re: Reducing tuple overhead Petr Jelinek <petr@2ndquadrant.com>
Re: Reducing tuple overhead Jim Nasby <Jim.Nasby@BlueTreble.com>
Re: Reducing tuple overhead Amit Kapila <amit.kapila16@gmail.com>
Re: Reducing tuple overhead Jim Nasby <Jim.Nasby@BlueTreble.com>
Re: Reducing tuple overhead Amit Kapila <amit.kapila16@gmail.com>
Re: Reducing tuple overhead Jim Nasby <Jim.Nasby@BlueTreble.com>
Re: Reducing tuple overhead Robert Haas <robertmhaas@gmail.com>
Re: Reducing tuple overhead Alvaro Herrera <alvherre@2ndquadrant.com>
Re: Reducing tuple overhead Jim Nasby <Jim.Nasby@BlueTreble.com>
Re: Reducing tuple overhead Amit Kapila <amit.kapila16@gmail.com>
Re: Reducing tuple overhead Robert Haas <robertmhaas@gmail.com>
Re: Reducing tuple overhead Amit Kapila <amit.kapila16@gmail.com>
Re: Reducing tuple overhead Robert Haas <robertmhaas@gmail.com>
Re: Reducing tuple overhead Amit Kapila <amit.kapila16@gmail.com>
Re: Reducing tuple overhead Peter Geoghegan <pg@heroku.com>
Re: Reducing tuple overhead Simon Riggs <simon@2ndQuadrant.com>
Re: Reducing tuple overhead Robert Haas <robertmhaas@gmail.com>
Re: Reducing tuple overhead Jim Nasby <Jim.Nasby@BlueTreble.com>
Re: Reducing tuple overhead Amit Kapila <amit.kapila16@gmail.com>
Re: Reducing tuple overhead Amit Kapila <amit.kapila16@gmail.com>
Re: Reducing tuple overhead Simon Riggs <simon@2ndQuadrant.com>
Re: Reducing tuple overhead Amit Kapila <amit.kapila16@gmail.com>
Split into a new thread, the other one is already growing fast
enough. This discussion started at
http://archives.postgresql.org/message-id/55391469.5010506%40iki.fi

On April 23, 2015 6:48:57 PM GMT+03:00, Heikki Linnakangas  wrote:
>Stop right there. You need to reserve enough space on the page to store
>
>an xmax for *every* tuple on the page. Because if you don't, what are 
>you going to do when every tuple on the page is deleted by a different 
>transaction.
>
>Even if you store the xmax somewhere else than the page header, you
>need 
>to reserve the same amount of space for them, so it doesn't help at
>all.

Depends on how you do it and what you optimize for (disk space, runtime,
code complexity..).  You can e.g. use apply a somewhat similar trick to
xmin/xmax as done to cmin/cmax; only that the data structure needs to be
persistent.

In fact, we already have combocid like structure for xids that's
persistent - multixacts. We could just have one xid saved that's either
xmin or xmax (indicated by bits) or a multixact.  When a tuple is
updated/deleted whose xmin is still required we could replace the former
xmin with a multixact, otherwise just change the flag that it's now a
xmax without a xmin.  To check visibility and if the xid is a multixact
we'd just have to look for the relevant member for the actual xmin and
xmax.

To avoid exessive overhead when a tuple is repeatedly updated within one
session we could store some of the data in the combocid entry that we
anyway need in that case.

Whether that's feasible complexity wise is debatable, but it's certainly
possible.


I do wonder what, in realistic cases, is actually the bigger contributor
to the overhead. The tuple header or the padding we liberally add in
many cases...

Andres


В списке pgsql-hackers по дате отправления
От: Stephen Frost
Дата:
От: Jim Nasby
Дата:
FAQ