仅具有索引存储的 Postgresql

use*_*172 8 postgresql performance postgresql-performance

我有一个带有(bigint) 和(double)的 PostgreSQL 表。该表有数百亿行。我在 ( key , value )上有一个 btree 用于按键辅助查找。该表永远不会更新。

我在这个表上执行的唯一查询是在上的相等谓词以获取相应的value,它利用了 B 树。

PostgreSQL 消耗的存储在这里很糟糕。它将OIDkeyvalue存储在表中,并将keyvalue存储在索引中。我本质上是将所有东西存储两次!

如何配置此表以节省空间?理想情况下,如何在 B 树中只存储一次元组。

小智 -1

我认为你应该尝试一下 TimescaleDB。它是大型表的 Postgres 扩展。按键将表拆分为 1000 个部分,每个部分中有数千万条记录。根本不需要索引,它就能快速工作。

  • 扫描分区将比索引查找慢得多,除非每个分区的条目少于 128 个。(假设页面大小为 8KB。) (2认同)