Re: jsonb on-disk size calculation
От | Adrian Klaver |
---|---|
Тема | Re: jsonb on-disk size calculation |
Дата | |
Msg-id | 96442938-89cb-f0a3-882e-3f6272a1648a@aklaver.com обсуждение исходный текст |
Ответ на | jsonb on-disk size calculation (jian he <jian.universality@gmail.com>) |
Список | pgsql-general |
On 7/31/23 04:10, jian he wrote: > > hi. > > drop table x; > create table x(js jsonb); > insert into x select '{"Hello world":1}'::jsonb; > select pg_column_size(js) from x;-- return 33. > > based on src/include/utils/jsonb.h > The key and value part is 20 bytes (is it correct?), Jsonb->vl_len_ is > 4 byte, JsonbContainer->header is 4 bytes. That's 28 bytes. > > but now on-disk is 33 bytes. > so I am not sure where the remaining bytes are. I don't claim to understand all this but from jsonb.h /* * JsonbValue: In-memory representation of Jsonb. This is a convenient * deserialized representation, that can easily support using the "val" * union across underlying types during manipulation. The Jsonb on-disk * representation has various alignment considerations. */ /* * Key/value pair within an Object. * * This struct type is only used briefly while constructing a Jsonb; it is * *not* the on-disk representation. * * Pairs with duplicate keys are de-duplicated. We store the originally * observed pair ordering for the purpose of removing duplicates in a * well-defined way (which is "last observed wins"). */ > > > > > -- Adrian Klaver adrian.klaver@aklaver.com
В списке pgsql-general по дате отправления: