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

善用 Hash 分區優化 Oracle 分析函數效能:實測數據對比

     編輯:Oracle 資料庫基礎

核心原理

當分區鍵與分析函數 PARTITION BY 欄位一致時,各分區資料獨立運算、互不干擾,可大幅提升分析函數執行效率。

實測步驟

1. 建立測試表

  • t_partition_hash:8 個 Hash 分區(依 object_type),各置於 USERS 表空間
  • t_big_hash:同結構非分區表

2. 資料準備

從 DBA_OBJECTS 重複插入,總筆數 1,610,880 筆。

3. 執行 RANK 分析函數測試

INSERT INTO t_rank
SELECT object_id,
  RANK() OVER (PARTITION BY object_type ORDER BY object_id) r_object_id,
  RANK() OVER (PARTITION BY object_type ORDER BY subobject_name) r_subobject_name,
  RANK() OVER (PARTITION BY object_type ORDER BY created) r_created,
  RANK() OVER (PARTITION BY object_type ORDER BY last_ddl_time) r_last_ddl_time,
  RANK() OVER (PARTITION BY object_type ORDER BY status) r_object_type
FROM t_partition_hash;  -- 或 t_big_hash

實測結果(5 次平均)

表類型執行時間 (秒)
Hash 分區表33.4 ~ 46.2
非分區表75.9 ~ 142.0

分區表效能約為非分區表的 2~3 倍。預期資料量增長時差距更明顯。

結論

針對大量資料的分析函數查詢,將分區鍵與 PARTITION BY 欄位對齊的 Hash 分區策略,能有效平行化運算、降低跨分區干擾,是提升效能的關鍵手段。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved