Sql-Server

Postgres 堆與 SQL Server 聚集索引

  • September 3, 2019

我正在從 SQL Server 過渡到 Postgres,我要消化的最重要的事情之一是不存在對 Postgres 中的數據進行排序的“聚集鍵”。

有人可以分享他們對 Postgres 如何避免內部排序數據集的需求以及它如何與大型堆表一起工作並仍然提供卓越性能的想法嗎?

您可以嘗試 pg_repack 擴展以減少鎖定以線上集群

PostgreSQL 根本沒有實現這個特性。沒有不實施它的訣竅。它不是以直接、簡單的方式實現的,只是不這樣做。用一個術語來說,PostgreSQL 中的所有 btree 索引都是“二級索引”,而不是“主索引”。甚至主鍵的索引也是“二級索引”。

在某些情況下,聚集鍵(或索引組織的表,正如另一個產品所稱)很重要,在這些情況下,PostgreSQL 無法“提供卓越的性能”。當然,您可以爭論這些情況有多普遍,但它們確實存在,不幸的是 PostgreSQL 沒有為它們提供解決方案。有解決這個問題的建議,但我認為目前還沒有任何積極的努力。

在某些情況下,您可以通過使用 CLUSTER 命令、實現分區或使用覆蓋索引來改善問題,但這些都不能完全令人滿意地替代真正的集群。

引用自:https://dba.stackexchange.com/questions/233782