Postgresql

PostgreSQL 如何對磁碟上的新記錄進行物理排序(在主鍵上的集群之後)?

  • March 27, 2013

需要知道 PostgreSQL 如何對磁碟上的記錄進行排序。在這種情況下,我想利用文件中所述的索引組合,據我所知,它使用點陣圖來獲取匹配的行並根據它們的物理位置返回它們。有問題的表已按其主鍵聚集。

據我了解,PostgreSQL 在集群完成後不會自動繼續進行集群(儘管它確實記得它是根據某個索引進行集群的)。現在,由於這是主鍵,我想知道物理儲存順序是否會按照這個順序(如果是真的,我想利用我們的優勢進行特定查詢)。

總之,PostgreSQL 如何對其新記錄進行排序,尤其是在集群之後?

非常感謝!

postgresql 中的行沒有固定的順序。不僅記錄放置在有空閒空間的地方,記錄也可以四處移動。這是因為當更新行時,會在新位置創建該行的新版本,而舊版本繼續存在於其舊位置,直到它被真空移除。

CLUSTER 操作對所有行進行排序,但確實不影響 postgresql 添加行的方式。所以數據不會保持排序。但是 postgresql 會保留統計資訊,其中包括表中行的順序與該列的排序順序之間的每一列的相關性。因此,即使在集群操作之後添加了一些行(或已通過更新移動),規劃器仍然可以根據告訴它表仍然大部分排序的統計資訊來優化它的計劃。

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