PostgreSQL分配了列长度

时间:2011-06-02 07:24:56

标签: database postgresql

我遇到一个问题,我在数据库中有一列可能是10到10,000字节的大小。你知道PostgreSQL是否支持稀疏数据(即它是否总是在列中的每个条目之前留出10,000个字节......或者只留下每个条目所需的空间)?

2 个答案:

答案 0 :(得分:2)

Postgres会将长varlena类型存储在名为TOAST的扩展存储中。

对于字符串,它保持内联up to 126 bytes(可能意味着多字节内容少于126个字符),然后将其发送到外部存储。

您可以使用psql查看数据的存储位置:

\dt+ yourtable

顺便说一下,请注意,从Postgres的角度来看,将列的类型声明为varcharvarchar(large_number)之间绝对没有区别(关于存储) - 它将存储在完全相同的方式。但是,由于字符串长度检查,使用varchar(large_number)时会有轻微的性能损失。

答案 1 :(得分:0)

使用varchartext类型 - 这些只使用实际存储数据所需的空间(加上每个值的2个字节的小开销来存储长度)