我的问题主要与数据库存储/空间优化有关。我的数据库中有一个表以下列:
-
id:主键INTEGER
-
array_col: UNIQUE TEXT[]
该表是迄今为止数据库中最大的表(就存储空间而言),包含大约~2亿条记录。array_col有一些特点,让我怀疑我我没有以空间最优的方式存储它。它们如下:
-
大多数字符串都有合适的长度(平均25个字符)
-
文本数组的长度是可变的(通常每个数组100多个字符串)
-
单个字符串将以适当的频率在记录中重复自己。平均给定的字符串将出现在数千个其他记录中。(数组顺序趋于相似跨记录too)
id strong>array_col strong> 3[…,"20扭矩离合器settings",…], 如果你真的想优化存储空间,告诉PostgreSQL在列超过128字节时压缩列:
ALTER TABLE tab SET (toast_tuple_target = 128);
当然,对空间进行优化可能不利于性能。