Jud*_*ude 5 postgresql sql-server clustered-index database-internals heap
我正在从 SQL Server 过渡到 Postgres,对我来说最需要消化的事情之一是不存在用于对 Postgres 中的数据进行排序的“聚集键”。
有人可以分享一下他们对 Postgres 如何避免内部排序数据集的需要以及它如何与大型堆表一起工作并仍然提供卓越性能的想法吗?
PostgreSQL 根本就没有实现这个功能。没有什么窍门可以不实施它。它并不是以直接、简单的方式来实现的,只是不这样做。用一点行话来说,PostgreSQL 中的所有 btree 索引都是“二级索引”,而不是“主索引”。甚至主键的索引也是“辅助索引”。
在某些情况下,聚集键(或索引组织表,如另一个产品所称)很重要,在这些情况下 PostgreSQL 无法“提供卓越的性能”。当然,您可以争论这些情况有多常见,但它们确实存在,并且不幸的是 PostgreSQL 没有为它们提供解决方案。有一些建议可以解决这个问题,但我认为目前这些努力都没有积极实施。
在某些情况下,您可以通过使用 CLUSTER 命令、实现分区或使用覆盖索引来改善问题,但这些都不能完全令人满意地替代真正的集群。
| 归档时间: |
|
| 查看次数: |
3174 次 |
| 最近记录: |