Re: TOASTing smaller things

From: "Luke Lonergan" <llonergan(at)greenplum(dot)com>
To: "Bruce Momjian" <bruce(at)momjian(dot)us>, "Jan Wieck" <JanWieck(at)Yahoo(dot)com>
Cc: "Tom Lane" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "Chris Browne" <cbbrowne(at)acm(dot)org>, pgsql-hackers(at)postgresql(dot)org
Subject: Re: TOASTing smaller things
Date: 2007-03-22 15:05:15
Message-ID: C227E93B.2A1E5%llonergan@greenplum.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

I advocate the following:

- Enable specification of TOAST policy on a per column basis

As a first step, then:

- Enable vertical partitioning of tables using per-column specification of
storage policy.

- Luke

On 3/21/07 1:12 PM, "Bruce Momjian" <bruce(at)momjian(dot)us> wrote:

>
> Is this a TODO?
>
> ---------------------------------------------------------------------------
>
> Jan Wieck wrote:
>> On 3/21/2007 2:05 PM, Tom Lane wrote:
>>> Chris Browne <cbbrowne(at)acm(dot)org> writes:
>>>> #define TOAST_DENOMINATOR 17
>>>> /* Use this as the divisor; current default behaviour falls from
>>>> TOAST_DENOMINATOR = 4 */
>>>
>>>> #define TOAST_TUPLE_THRESHOLD^I\
>>>> ^IMAXALIGN_DOWN((BLCKSZ - \
>>>> ^I^I^I^I MAXALIGN(sizeof(PageHeaderData) + 3 * sizeof(ItemIdData))) \
>>>> ^I^I^I^I / TOAST_DENOMINATOR)
>>>
>>> Given that you are quoting code that was demonstrably broken since the
>>> original coding of TOAST up till a month or two back, "it passes
>>> regression" is not adequate proof of "it's right". In fact I think
>>> it's not right; you have not got the roundoff condition straight.
>>>
>>>> 4. A different mechanism would be to add a fifth storage column
>>>> strategy (the present four are PLAIN, EXTENDED, EXTERNAL, MAIN), let's
>>>> say, TOAST.
>>
>> FORCE_COMPRESSION, FORCE_EXTERNAL and FORCE_EXTERNAL_UNCOMPRESSED.
>>
>>>
>>> Anything along this line would require invoking the toaster on every
>>> single tuple, since we'd always have to crawl through all the columns
>>> to see if toasting was supposed to happen. No thanks.
>>
>> Not necessarily. A flag in Relation telling if the table has any column
>> marked like that could be set while constructing the relcache entry.
>>
>>>
>>>> Which of these sounds preferable?
>>>
>>> It's a bit late in the cycle to be proposing any of these for 8.3.
>>
>> Certainly.
>>
>>
>> Jan
>>
>> --
>> #======================================================================#
>> # It's easier to get forgiveness for being wrong than for being right. #
>> # Let's break this rule - forgive me. #
>> #================================================== JanWieck(at)Yahoo(dot)com #
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 2: Don't 'kill -9' the postmaster

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2007-03-22 15:05:52 Re: "Relation not found" error but table exits.
Previous Message Tom Lane 2007-03-22 14:59:15 Re: Function cache regeneration