Re: NUMERIC type efficiency problem

Поиск
Список
Период
Сортировка
От Tom Lane
Тема Re: NUMERIC type efficiency problem
Дата
Msg-id 3077.987145046@sss.pgh.pa.us
обсуждение исходный текст
Ответ на NUMERIC type efficiency problem  (Mark Butler <butlerm@middle.net>)
Список pgsql-hackers
Mark Butler <butlerm@middle.net> writes:
> I noticed the storage format for the numeric type is rather inefficient: 
> ...
> A zero value uses two bytes total in Oracle, where in the current version of
> PostgreSQL it uses ten bytes.

Yawn ... given row overhead, alignment padding, etc, this is not nearly
as big a deal as you make it ...

> Is there a reason why varlen has to be an int32?

Yes.  That's what all varlena types use.

> The other three fields could be int8 as well.

If we were willing to restrict numeric values to a much tighter range,
perhaps so.  I rather like a numeric type that can handle ranges wider
than double precision, however.

> Having a reasonable maximum precision would allow a fixed
> length internal representation which make processing *much* faster* by using
> binary arithmetic and eliminating the necessity to palloc() buffers for every
> temporary result.  

I don't have any objection in principle to an additional datatype "small
numeric", or some such name, with a different representation.  I do
object to emasculating the type we have.

A more significant point is that you have presented no evidence to back
up your claim that this would be materially faster than the existing
type.  I doubt that the extra pallocs are all that expensive.  (I think
it'd be far more helpful to reimplement numeric using base-10000
representation --- four decimal digits per int16 --- and then eliminate
the distinction between storage format and computation format.  See past
discussions in the pghackers archives.)
        regards, tom lane


В списке pgsql-hackers по дате отправления:

Предыдущее
От: Tom Lane
Дата:
Сообщение: Re: ALTER TABLE MODIFY COLUMN
Следующее
От: Mark Butler
Дата:
Сообщение: Re: NUMERIC type efficiency problem