From: | Jian He <hejian(dot)mark(at)gmail(dot)com> |
---|---|
To: | Troy Frericks <troy(dot)frericks(at)gmail(dot)com> |
Cc: | Bruce Momjian <bruce(at)momjian(dot)us>, troy(at)frericks(dot)us, pgsql-docs(at)lists(dot)postgresql(dot)org |
Subject: | Re: Data Type Size Calculation |
Date: | 2022-02-16 04:24:12 |
Message-ID: | CAMV54g1zQO8HaH97SEaNLkrGAPgdh+bu0BK+maAAYUPy1R1KEQ@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-docs |
Hope this link is useful.
create table testb as select 'true'::bool as b from
generate_series(1,1000000) i;SELECT 1000000
$ \dt+ testb
List of relations
Schema │ Name │ Type │ Owner │ Persistence │ Access method │ Size
│ Description
────────┼───────┼───────┼────────┼─────────────┼───────────────┼───────┼─────────────
public │ testb │ table │ depesz │ permanent │ heap │ 35 MB │
Why is that, though? From what I gather the answer is: performance. I don't
> know low-level details, but based on what I understand, processors process
> data in arch-dependent block sizes. 64bit processor works on 64 bits. And
> this means that if you want to do something on int4 value, that is part of
> 8 byte block, you have to add operation to zero the other 32 bits.
>
On Wed, Feb 16, 2022 at 12:26 AM Troy Frericks <troy(dot)frericks(at)gmail(dot)com>
wrote:
> For now, yes... I'm suggesting that the documentation be completed by
> adding a few sentences few extra sentences.
> Troy.
> #
>
>
> On Mon, Feb 14, 2022, 12:51 Bruce Momjian <bruce(at)momjian(dot)us> wrote:
>
>> On Fri, Feb 11, 2022 at 08:12:08PM +0000, PG Doc comments form wrote:
>> > The following documentation comment has been logged on the website:
>> >
>> > Page: https://www.postgresql.org/docs/13/datatype-numeric.html
>> > Description:
>> >
>> > > The actual storage requirement is two bytes for each group of four
>> decimal
>> > digits, plus three to eight bytes overhead.
>> >
>> > Please describe what 'overhead' means.
>> >
>> > I'd like to be able to calculate the data size of NUMBER(19,4). I can
>> > calculate 2 bytes per 4 digits... with 19 digits, I have 5 groups of 4
>> > digits,
>> >
>> > so the data length I seek is 5 bytes + overhead... then I'm left
>> hanging.
>> > :(
>>
>> Well, you can create it and then call pg_column_size():
>>
>> CREATE TABLE test (x NUMERIC(19,4));
>>
>> SELECT pg_column_size('test.x');
>> pg_column_size
>> ----------------
>> 7
>>
>> If you want more details, you will need to look at the source code.
>>
>> --
>> Bruce Momjian <bruce(at)momjian(dot)us> https://momjian.us
>> EDB https://enterprisedb.com
>>
>> If only the physical world exists, free will is an illusion.
>>
>>
From | Date | Subject | |
---|---|---|---|
Next Message | Peter Eisentraut | 2022-02-16 10:56:17 | Re: Does the POSITION() function takes into account the COLLATION... or not ?!? |
Previous Message | Swaha Miller | 2022-02-15 21:39:29 | Re: Question about role attributes docs |