我有一个大型表格(约200万行),每一行代表一张图片。我想为每个图像以JSON格式存储EXIF元数据。 每个图像的JSON blob大小约为6KB。
这些EXIF元数据不会经常查询/使用,我想知道将其存储在具有两列(imageid,exifjson)的单独表中是否更有效,还是PostgreSQL可以将其作为现有表上的text
列处理。 我不希望添加列显著减慢普通查询表格的速度,也不希望数百万个6KB文本值拖慢PostgreSQL。
我有一个大型表格(约200万行),每一行代表一张图片。我想为每个图像以JSON格式存储EXIF元数据。 每个图像的JSON blob大小约为6KB。
这些EXIF元数据不会经常查询/使用,我想知道将其存储在具有两列(imageid,exifjson)的单独表中是否更有效,还是PostgreSQL可以将其作为现有表上的text
列处理。 我不希望添加列显著减慢普通查询表格的速度,也不希望数百万个6KB文本值拖慢PostgreSQL。
我会将那一列进行TOAST处理。
ALTER TABLE ... ALTER <column> SET STORAGE <EXTERNAL|EXTENDED>;
-- EXTERNAL - out-of-line storage, not compression[1]
-- EXTENDED - both compression and out-of-line storage
PostgreSQL已经尝试使用它来存储大于~2kB的数据。
[1] "所使用的压缩技术是LZ家族中一种相当简单且非常快速的成员。"
http://www.postgresql.org/about/
关于在选择其他列数据时的干扰:http://www.postgresql.org/docs/current/static/datatype-character.html