決策支援系統 (DSS) 中的大型查詢通常為大量資料掃描的純 SELECT 語句。本系列將逐步介紹六種優化技術,並以同一 SQL 語句為基準,使用 db2batch 實測效能。示範環境:Windows 平台 DB2 9,啟用 Database Partitioning Feature (DPF) 模擬多分區。
星型結構:事實表 SALES_FACT (2006 年銷售明細) + 三個維度表 DATE_DIM、PRODUCT_DIM、STORE_DIM。
分區組:FACT_GROUP (分區 0-3) 存放事實表;DATE_GROUP (分區 1)、PRODUCT_GROUP (分區 2)、STORE_GROUP (分區 3) 各存一個維度表。
表空間:各表獨立 SMS 表空間,共用緩衝池 IBMDEFAULTBP (1000 × 4K 頁)。
比較 1 月與 11 月 10 家門市銷售額,使用 CTE (TMP1, TMP2) 並 LEFT OUTER JOIN。完整 SQL 請見清單 2。
db2ncrt /n:1 /u:user,pwd /i:DB2 /m:Machine /p:1 (分區 1-3)db2 create database dss_db on D:db2_all 同步設定 DBM/DATABASE CFG (CPU speed, intra_parallel, locklist, dft_queryopt 等)ALTER BUFFERPOOL IBMDEFAULTBP SIZE 1000db2batch -d DSS_DB -f QUERY1.SQL -i complete -iso CS -o p 5 o 5 r 0 -r results.txt
關鍵選項:-iso CS 符合應用預設隔離級別,-o p 5 取得詳細快照,-i complete 輸出編譯/執行/擷取時間。
db2 -td@ -vf date_insert.txt (365 筆)db2 -td@ -vf product_insert.txt (60,000 筆)db2 -td@ -vf store_insert.txt (201 筆)db2 -tvf EXPLAIN.DDL 用於後續存取計畫分析第二部分將依序實作六大優化方法:參考完整性約束、重複 MQT、MDC、表分區、表分區+MDC、預先彙總 MQT,並呈現完整效能對比數據。