DB2提供了3个命令工具,重组和分析table中的数据:
M:rA&yo
Sv&@'_0REORGCHK
@'[
e"Mx!}0REORG
IA_H:wF0RUNSTAT
ITPUB个人空间'r1b9A2X{6IC!yK!}+[I0在(一)中收集了对象的统计信息,这里,可以用这些统计信息来诊断对象的物理存储了。
ITPUB个人空间9v g:Q$z-z!}/S r具体内容见:
http://blog.csdn.net/dlinger/archive/2004/10/12/133178.aspxe;R]Z1['H0ITPUB个人空间kI[yD#C`9m2.REORGCHK ,诊断对象的物理存储
4r-`#n9cw2va0d3WKE o*ti1[Q0>>-REORGCHK----+-------------------------------+----------------------------------+<<
ITPUB个人空间%?y/}l:b8q{ | |-UPDATE--| | | .-USER------- .--|
ITPUB个人空间 j!wT
\3R:P"N$AP0[~.T '--+-CURRENT-+---STATISTICS--' '-ON TABLE--+-SYSTEM-----+--'
ITPUB个人空间 S%wxB7~S7s +-ALL--------+
ITPUB个人空间T4B1Kw+j)t '-table-name-'
+U6uStg1u^3?)D0ITPUB个人空间h;T8EOQs在UDB的V8版本中增加了on schema 的选项。
x#|}(v |4P0ITPUB个人空间8IN j3[5p
}UPDATE STATISTICS:先调用RUNSTATS来对table进行分析,
o2nl:FQS/G#Z+_}sFD0 然后根据分析的统计信息诊断是否需要重组table
ITPUB个人空间d:^"ID$\vu
jNYCURRENT STATISTICS:使用现有的统计信息诊断是否需要重组table
ITPUB个人空间&|wL6F elITPUB个人空间;A@8Ig~&v&kON TABLE USER: 当前USER的所有table
ITPUB个人空间+`zY#~&C
AWKd N'}ON TABLE SYSTEM:SYSTEM的所有table
ITPUB个人空间/gX]4{qU:kXWON TABLE ALL: 当前db的所有table
ITPUB个人空间#O(^+bCd&u)VON TABLE table-name:指定名称的table
,uDX+Y!`vl4uq?Z0ITPUB个人空间@|8{ ?5C我们分析SYSIBM.SYSTABLES,看看具体的执行结果:
V-R8?,r6PQ:Gs%P0ITPUB个人空间1x7n;p%vHlKdb2 => reorgchk update statistics on table SYSIBM.SYSTABLES
l)| r6R!v5C#C0ITPUB个人空间-F2Al!~XaK执行 RUNSTATS ....
ITPUB个人空间4Au UYS#ZITPUB个人空间I4e![t.^{表统计信息:
ITPUB个人空间q.va-@.nCH-R6v` at0F1: 100 * OVERFLOW / CARD < 5
ITPUB个人空间n+n;Ph!x0`x-s&owF2: 100 * (Effective Space Utilization of Data Pages) > 70
ITPUB个人空间0RGk4F5WF3: 100 * (Required Pages / Total Pages) > 80
&i'd2}FU,p0ITPUB个人空间Qh]%lP#rW-QnSCHEMA NAME CARD OV NP FP ACTBLK TSIZE F1 F2 F3 REORG
ITPUB个人空间VZ(J,of5B*p7UOR----------------------------------------------------------------------------------------
ITPUB个人空间e3GGSmAdSYSIBM SYSTABLES 2988 0 290 290 - 4774824 0 100 100 ---
ITPUB个人空间RT&m@r/yi4s----------------------------------------------------------------------------------------
ITPUB个人空间@Y}o&\ITPUB个人空间`2E+V G(hQ;Y:f;y,p索引统计信息:
#G9]+IT'Nn&opoT0`%d
vKZ-y(]M0F4: CLUSTERRATIO 或正常化的 CLUSTERFACTOR > 80
3w4vk0Zg'Jf4Y6zz0F5: 100 * (KEYS * (ISIZE + 9) + (CARD - KEYS) * 5) / ((NLEAF - NUM EMPTY LEAFS) * INDEXPAGESIZE) > 50
ITPUB个人空间eXY_QF6: (100 - PCTFREE) * ((INDEXPAGESIZE - 96) / (ISIZE + 12)) ** (NLEVELS - 2) * (INDEXPAGESIZE - 96)
#h@(O9B)r9P9F
^q0 / (KEYS * (ISIZE + 9) + (CARD - KEYS) * 5) < 100
P5KM[uS%nU0F7: 100 * (NUMRIDS DELETED / (NUMRIDS DELETED + CARD)) < 20
aM3K}M9d\a0F8: 100 * (NUM EMPTY LEAFS / NLEAF) < 20
6?X7dyO1@ ^F0ITPUB个人空间5Q k3v(L$KNqlSCHEMA NAME CARD LEAF ELEAF LVLS ISIZE NDEL KEYS F4 F5 F6 F7 F8 REORG
2Y@Pua~7h9W8X0-------------------------------------------------------------------------------------------------
ITPUB个人空间a]_O)mm4Lh Fd/m'Y表:SYSIBM.SYSTABLES
ITPUB个人空间6TC*v`B]P
MSYSIBM IBM00 2988 55 0 2 27 42 2988 95 47 3 1 0 -*---
OD6?#r*K0SYSIBM IBM137 2988 18 0 2 4 52 2845 98 51 9 1 0 -----
ITPUB个人空间(aV.E^ A(H2}2WUSYSIBM IBM21 2988 5 0 2 3 26 3 99 73 24 0 0 -----
&}U/b6l$\/]GP0SYSIBM IBM22 2988 5 0 2 3 22 1 100 72 24 0 0 -----
ITPUB个人空间 Q]$\@D+}'\GSYSIBM IBM23 2988 5 0 2 3 2 1 100 72 24 0 0 -----
N)A]:pN8K)E0SYSIBM IBM78 2988 62 0 2 33 17 2988 95 49 2 0 0 -*---
ITPUB个人空间*PW#GN;a+U#_u-------------------------------------------------------------------------------------------------
@'nr;X;ua"o [`
p%gE0ITPUB个人空间W2x{k0i4P6x*ACLUSTERRATIO 或正常化的 CLUSTERFACTOR(F4)将指示索引需要
)T0E0~rmCLe0REORG,该索引与基本表不在相同的序列中。当在表中定义了多个索引时,一个或多个索引
ITPUB个人空间/HpQPi#W5@可能被标记为需要 REORG。指定 REORG 顺序的最重要索引。
M.{A3fZ1wTv0ITPUB个人空间%LJ
V,Z+?1RX\)Eg:q使用 ORGANIZE BY 子句和相应的维索引定义的表的名称有 '*'
ITPUB个人空间0~K At^]"]
|4z后缀。维索引的基数等价于表的“活动的块数”统计信息。
ITPUB个人空间9xsI%s0?(DP_v;]$nis^0?u
A2Uj ?1QwZ0先来说明一下上面的信息:
'L
q1{.Q,}0I2o g~Ks0CARD:基表中的数据行数
ITPUB个人空间!x3n;m,q5[%jOV(OVERFLOW): 迁移行的数量
ITPUB个人空间+\6Be
W&J9s cJN+rc\NP(NPAGES): 包含数据的page的数量
z0j-gi%m*~| oPJ0FP(FPAGES): 该表总共分配的page数量
(wJrtsl'w+Q5~0TSIZE:table的实际数据的大小,以字节为单位。
:G!ZD
ty6V4[9X0TABLEPAGESIZE:table所在表空间的page size
HbN$^M0F1: 处理溢出行。在溢出行超过总行数的5%时,该报告建议对table进行重组。
ITPUB个人空间)`TJ-m"n8dBwiF2:处理空间使用率。在TSIZE小于等于该表分配总空间的70%时,该报告建议对table进行重组。
ITPUB个人空间!F,T$DankF3:处理空白页。所谓空白页,就是没有数据的页。当table中空白页大于20%时,该报告建议对table进行重组。
ITPUB个人空间/tSEO*U2Zc6TITPUB个人空间.k%K$eZ*Ni3Oe5yLEAF:index上叶节点的数量
ITPUB个人空间Y-SY"s&t]LVLS(LEVELS):index级数
ITPUB个人空间b)liq/P"yISIZE:index的平均行长。
ITPUB个人空间0{!\Pt"IQLL%IKEYS:唯一取值的数量
ITPUB个人空间/?(~I)[UY9Aga6DINDEXPAGESIZE:index所在表空间的page size
ITPUB个人空间T1S'}(a%\PCTFREE:index page中预留空间(%)
ITPUB个人空间 b
\:Q
Z
|!h.r5{9BglYF4:聚簇因子
ITPUB个人空间)RX3E T5_!l!l;MUF5:为index key预留的空间。这个值应小于50%,否则该报告建议对index进行重组
'r? z/N"xR0F6:估算index页的用量,应大于总数的90%,否则该报告建议对index进行重组
Y%S8Gm4F Yl0F7:伪删除RID的数量。应小于总数的20%,否则该报告建议对index进行重组
r4W8?!Q*` NP0F8: 伪空页的数量。应小于总数的20%,否则该报告建议对index进行重组
(Xzm'o{Z,@t#_0"aJ5A6G6QY
\01p'j8uU-|;~M9u1x0我们根据报告中REORG的值中有“*”来决定是否对table或index进行数据重组。当然,F1-F8的阀值只是建议值。
a/a'@;v!l/`o_2b4E2l0.me1}5Wt0n'}3q9A0ITPUB个人空间#Hh0h6x0c8v8T第三部分,我们将介绍在DB2中如何对数据进行重组。