DB2提供了3個命令工具,重組和分析table中的數據:
REORGCHK
REORG
RUNSTAT
在(一)中收集了對象的統計信息,這里,可以用這些統計信息來診斷對象的物理存儲了。
具體內容見:http://blog.csdn.net/dlinger/archive/2004/10/12/133178.aspx
2.REORGCHK ,診斷對象的物理存儲
>>-REORGCHK----+-------------------------------+----------------------------------+<<
???????????????????????? |? |-UPDATE--|????????????????????????|??? |???????????????? .-USER-------??.--|
?????????????????????????'--+-CURRENT-+---STATISTICS--'???? '-ON TABLE--+-SYSTEM-----+--'
????????????????????????????????????????????????????????????????????????????????????????????? +-ALL--------+
?????????????????????????????????????????????????????????????????????????????????????????????? '-table-name-'
在UDB的V8版本中增加了on schema 的選項。
UPDATE STATISTICS:先調用RUNSTATS來對table進行分析,
??????????????????????????????然后根據分析的統計信息診斷是否需要重組table
CURRENT STATISTICS:使用現有的統計信息診斷是否需要重組table
ON TABLE USER:? 當前USER的所有table
ON TABLE SYSTEM:SYSTEM的所有table
ON TABLE ALL:??? 當前db的所有table
ON TABLE table-name:指定名稱的table
我們分析SYSIBM.SYSTABLES,看看具體的執行結果:
db2 => reorgchk update statistics on table SYSIBM.SYSTABLES
執行 RUNSTATS ....
表統計信息:
F1: 100 * OVERFLOW / CARD < 5
F2: 100 * (Effective Space Utilization of Data Pages) > 70
F3: 100 * (Required Pages / Total Pages) > 80
SCHEMA??? NAME????????????????? CARD??? OV??? NP??? FP ACTBLK??? TSIZE?? ?F1? F2? F3 REORG
----------------------------------------------------------------------------------------
SYSIBM??? SYSTABLES????????????2988???? 0?? 290?? 290????? -???? 4774824?? 0? 100 100 ---
----------------------------------------------------------------------------------------
索引統計信息:
F4: CLUSTERRATIO 或正常化的 CLUSTERFACTOR > 80
F5: 100 * (KEYS * (ISIZE + 9) + (CARD - KEYS) * 5) / ((NLEAF - NUM EMPTY LEAFS) * INDEXPAGESIZE) > 50
F6: (100 - PCTFREE) * ((INDEXPAGESIZE - 96) / (ISIZE + 12)) ** (NLEVELS - 2) * (INDEXPAGESIZE - 96)
??? / (KEYS * (ISIZE + 9) + (CARD - KEYS) * 5) < 100
F7: 100 * (NUMRIDS DELETED / (NUMRIDS DELETED + CARD)) < 20
F8: 100 * (NUM EMPTY LEAFS / NLEAF) < 20
SCHEMA?? NAME???????????????? CARD? LEAF ELEAF? LVLS ISIZE? NDEL?? KEYS? F4? F5? F6? F7? F8 REORG
-------------------------------------------------------------------------------------------------
表:SYSIBM.SYSTABLES
SYSIBM?? IBM00??????????????? ?2988??? 55???? 0???????? 2???? 27?????? 42??? 2988?? 95? 47?? 3?? 1?? 0? -*---
SYSIBM?? IBM137??????????????? 2988??? 18???? 0??????? 2???? 4???????? 52???? 2845? 98? 51?? 9?? 1?? 0? -----
SYSIBM?? IBM21??????????????? ?2988???? 5????? 0??????? 2???? 3???????? ?26????? 3???? 99? 73? 24?? 0?? 0? -----
SYSIBM?? IBM22??????????????? ?2988???? 5???? ?0??????? 2???? 3????????? 22????? 1????100? 72? 24?? 0?? 0? -----
SYSIBM?? IBM23???????????????? 2988???? 5????? 0??????? 2???? 3?????????? 2????? ?1??? 100? 72? 24?? 0?? 0? -----
SYSIBM?? IBM78???????????????? 2988???? 62???? 0?????? ?2??? 33???????? 17??? 2988? 95?? 49?? 2?? 0?? 0 -*---
-------------------------------------------------------------------------------------------------
CLUSTERRATIO 或正常化的 CLUSTERFACTOR(F4)將指示索引需要
REORG,該索引與基本表不在相同的序列中。當在表中定義了多個索引時,一個或多個索引
可能被標記為需要 REORG。指定 REORG 順序的最重要索引。
使用 ORGANIZE BY 子句和相應的維索引定義的表的名稱有 '*'
后綴。維索引的基數等價于表的“活動的塊數”統計信息。
先來說明一下上面的信息:
CARD:基表中的數據行數
OV(OVERFLOW): 遷移行的數量
NP(NPAGES):? 包含數據的page的數量
FP(FPAGES): 該表總共分配的page數量
TSIZE:table的實際數據的大小,以字節為單位。
TABLEPAGESIZE:table所在表空間的page size
F1: 處理溢出行。在溢出行超過總行數的5%時,該報告建議對table進行重組。
F2:處理空間使用率。在TSIZE小于等于該表分配總空間的70%時,該報告建議對table進行重組。
F3:處理空白頁。所謂空白頁,就是沒有數據的頁。當table中空白頁大于20%時,該報告建議對table進行重組。
LEAF:index上葉節點的數量
LVLS(LEVELS):index級數
ISIZE:index的平均行長。
KEYS:唯一取值的數量
INDEXPAGESIZE:index所在表空間的page size
PCTFREE:index page中預留空間(%)
F4:聚簇因子
F5:為index key預留的空間。這個值應小于50%,否則該報告建議對index進行重組
F6:估算index頁的用量,應大于總數的90%,否則該報告建議對index進行重組
F7:偽刪除RID的數量。應小于總數的20%,否則該報告建議對index進行重組
F8: 偽空頁的數量。應小于總數的20%,否則該報告建議對index進行重組
我們根據報告中REORG的值中有“*”來決定是否對table或index進行數據重組。當然,F1-F8的閥值只是建議值。
第三部分,我們將介紹在DB2中如何對數據進行重組。
posted on 2006-09-14 09:42
水煮三國 閱讀(1009)
評論(0) 編輯 收藏 所屬分類:
Database