索引的第二威力(the second power of indexing)。
「叢集」一詞的歧義#
「叢集(cluster)」這個詞用在很多領域:星團是一群恆星;電腦叢集則是一群緊密協作的電腦——或為解決複雜問題(高效能運算叢集),或為提高可用性(failover 叢集)。廣義而言,叢集就是聚在一起的相關事物。
在計算領域還有一種常被誤解的叢集:資料叢集(data cluster)。
資料叢集對資料庫調校極為重要。但由於電腦叢集在資料庫脈絡中也很常見,「cluster」一詞變得非常曖昧——「我們用個 cluster 來改善資料庫效能吧」這句話,可能指電腦叢集,也可能指資料叢集。本章中的 cluster 一律指資料叢集。
最簡單的資料叢集:列#
SQL 資料庫中最簡單的資料叢集就是列:資料庫會盡可能把同一列的所有欄位存在同一個資料庫區塊中。例外情況是該列裝不進單一區塊時——例如涉及 LOB 型別。
延伸:欄式儲存(column store)
欄導向資料庫(column-store)以「欄」為單位組織資料表。這個模型在「存取許多列、但只取少數欄位」時特別有利——這正是資料倉儲(OLAP)中極常見的模式。
索引即叢集工具#
索引讓我們得以叢集資料。基礎在第 1 章已經說過:索引葉節點以有序方式存放被索引的欄位,因此相近的值彼此緊鄰。換句話說,索引建立了「值相近的列」的叢集。
這個叢集資料的能力如此重要,作者稱之為索引的第二威力。接下來各節說明如何用索引叢集資料、改善查詢效能。