PostgreSQL 是不是支持表(片段)的透明压缩?
Posted
技术标签:
【中文标题】PostgreSQL 是不是支持表(片段)的透明压缩?【英文标题】:Does PostgreSQL support transparent compressing of tables (fragments)?PostgreSQL 是否支持表(片段)的透明压缩? 【发布时间】:2010-11-25 02:05:14 【问题描述】:我要将大量数据(日志)存储在碎片化的 PostgreSQL 表中(每天的表)。我想压缩其中一些以节省磁盘空间,但我不想失去以通常方式查询它们的能力。
PostgreSQL 是否支持这种透明压缩?我在哪里可以了解它的详细信息?我认为这样的功能应该有一些众所周知的神奇名称。
【问题讨论】:
还不是您所要求的,但可能对大型数据集有所帮助的是 PostgreSQL 支持表继承,允许您对数据进行分区,例如,按日期范围。或者其他一些逻辑。 【参考方案1】:是的,当它们超过一定大小时,PostgreSQL 会自动为您执行此操作。但是,压缩应用于每个单独的数据值 - 而不是在整个表级别。这意味着如果您有十亿行非常窄,它们将不会被压缩。或者,如果您有很多列,每列只有一个很小的值,它们就不会被压缩。关于这个方案的详细信息在manual。
如果您在全表级别需要它,一个解决方案是为您想要压缩的那些表创建一个 TABLESPACE,并将其指向一个压缩文件系统。只要文件系统仍然遵守 fsync() 和标准 POSIX 语义,这应该是完全安全的。详情请见manual。
【讨论】:
【参考方案2】:可能不是您想要的但仍然有用的信息 - 精美手册的Chapter 53. Database Physical Storage。 TOAST 部分值得进一步关注。
【讨论】:
优秀的答案。多见识。精美简洁。谢谢你。以上是关于PostgreSQL 是不是支持表(片段)的透明压缩?的主要内容,如果未能解决你的问题,请参考以下文章