首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 資料庫基礎

Oracle 叢集索引與雜湊叢集完整應用指南

     編輯:Oracle 資料庫基礎

叢集為將關聯緊密的多表依共同鍵值混合儲存同一區塊,透過叢集索引或雜湊函數快速定位。本文詳細說明叢集索引建立流程、雜湊叢集適用場景、兩者選型判斷。

一、什麼是叢集

  • 依 叢集鍵 將多表資料按鍵值順序混合存放,葉節點即資料節點(索引叢集)或透過雜湊算法直接算出物理位置(雜湊叢集)。
  • 一張表最多歸屬一個叢集;叢集鍵可為單欄或多欄。

二、索引叢集建立步驟

-- 1. 建立叢集(配置空間、定義鍵)
CREATE CLUSTER book_author (title VARCHAR2(100));

-- 2. 建立屬於叢集的表
CREATE TABLE bookshelf (
    title VARCHAR2(100) PRIMARY KEY,
    publisher VARCHAR2(20),
    category VARCHAR2(20)
)
CLUSTER book_author (title);

CREATE TABLE bookshelf_author (
    title VARCHAR2(100),
    author VARCHAR2(50),
    CONSTRAINT fk_title FOREIGN KEY (title) REFERENCES bookshelf(title)
)
CLUSTER book_author (title);

-- 3. **必須**建立叢集索引才能插入資料
CREATE INDEX book_author_idx ON CLUSTER book_author;

插入資料後,相同 title 在叢集中僅存一次,兩表欄位緊鄰,連接查詢零 I/O 成本。

三、雜湊叢集

CREATE CLUSTER hash_cluster (id NUMBER)
HASHKEYS 10000  -- 預估唯一鍵值數
SIZE 200;       -- 每筆資料預估大小

CREATE TABLE t (id NUMBER PRIMARY KEY, data VARCHAR2(100))
CLUSTER hash_cluster (id);
  • 適用場景:絕大多數查詢為等值主鍵存取(WHERE id = :x)。
  • 優勢:無需索引,一次雜湊計算 + 一次表存取,極致快速。
  • 風險:鍵值分布不均導致溢出區塊,效能驟降;不支援範圍掃描。

四、選型決策樹

  1. 需多表頻繁連接、共同鍵值存取 → 索引叢集。
  2. 單表、純等值主鍵查詢、資料量穩定 → 雜湊叢集。
  3. 需範圍查詢、全表掃描、頻繁 DML → 一般堆積表 + 索引。

五、維護提醒

  • 叢集表無法獨立 TRUNCATE,需 TRUNCATE CLUSTER。
  • 叢集索引不可 REBUILD,需 DROP/CREATE。
  • 雜湊叢集 HASHKEYS 設定過小會大量溢出,建議預留 20~30% 餘量。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved