CBO
上一篇 / 下一篇 2014-05-28 09:34:32 / 个人分类:甲骨文
-RT Cc2C_0CBO是Cost-Based Optimization英文的缩写,相对于我们通常所用的RBO(Rule-Based Optimization)。实际上CBO很早就在ORACLE V7版本中引入,由于技术原因,一直不够稳定和成熟,因此,从Oracle 10g开始才得以较大规模的使用。同时ORACLE 也已经从10g开始,不再对RBO引擎进行任何的改进和BUG修补,因此选择CBO 是必然的趋势。
XT+L!Q:xz0g'hQ]*@w Ug0注:这里不要误解为从10g开始RBO就不支持了,只是Oracle不再对RBO引擎进行任何的改进和BUG修补。在某些CBO无法正确选择执行计划的情况下,还需要手工使用RBO强制Oracle选择合适的执行计划。
WN Yv+q051Testing软件测试网B)}:eF(B#d51Testing软件测试网&Whme)i&a6sN"b
51Testing软件测试网C Z4H1b`Feo1Gs5lCBO算法的基础就是统计信息。Oracle CBO优化器的统计信息是数据库和数据库对象详细资料的集合,这些统计信息是查询优化器选择最优执行计划的依据。51Testing软件测试网0pJ{Dn_0@O
4w8m3F*VT}:c0主要包括以下信息:
s jT \M!k+[:`#I{0;]K"K,j6Fh~T01. Table statistics(表统计)
9[#@#b`*J"ZBt0s-Duru*S#et0Ø Number of rows(行数)51Testing软件测试网 cYZ&CpaVf
51Testing软件测试网 rj"d;[ZtkØ Number of blocks(块数)
bZM7AM.b2{0\!A#{,RZ(H2D0Ø Average row length(平均行长度)51Testing软件测试网~^|!N^s(U
51Testing软件测试网+KG!i2_eE,w2. Column statistics(列统计)51Testing软件测试网7YVxM5[ ~!? `
a0NoXh/f"^6d0Ø Number of distinct values (NDV) in column(列中唯一值的数目)
3]+E;Iui;[8s&P,M04yH5TjvK+@0Ø Number of nulls in column(列中空字符的数目)
1s Pp2T~M;Z09L v4q mJv0Ø Data distribution (histogram) (数据分布)51Testing软件测试网,u0T4pMtGM/]T/|
5?*f @`TEg0Ø Extended statistics(扩展统计信息)51Testing软件测试网w!Eq+t*z3s!j
#ED0b-I-BY03. Index statistics(索引统计)51Testing软件测试网D F:z%x!e`!]7fI
51Testing软件测试网4{3bJj ]5pezØ Number of leaf blocks(叶子块的数目)
9X.K/M.X3kr1AI051Testing软件测试网 g{c]CulØ Levels(树的高度)51Testing软件测试网/k l(l:tS0D6R
bg"\B!P;J0Ø Clustering factor(聚集因子)
8[N-I%z:u051Testing软件测试网 a)l,_*sXa Ih4. System statistics(系统统计)51Testing软件测试网@d%S3WLB"x
51Testing软件测试网HI-v6{k"k&y}Ø I/O performance and utilization(I/O性能和利用率)
4^,yO w$T7ca0I,_P\~t8qf0Ø CPU performance and utilization(CPU性能和利用率)51Testing软件测试网AA l^!M
第1章 常用DBMS_STATS命令及示例通常用到的命令按照用途的不同,大致分下面几类:51Testing软件测试网`+EN[G!A}.F;pBzW0/E0T.T] [0
#O&Ks,C8V#F3p,q,d `+Pq01、收集统计信息:51Testing软件测试网_m7d:w]@51Testing软件测试网#|U(UQ1z E
51Testing软件测试网\"vZn5[!d9n命令
7wmY"s;XZ,DF0作用'q+|5^:FB;O%up![!p051Testing软件测试网O$Th(p@"S3^ N
8uxA%z f)BBB#J7m0GATHER_INDEX_STATS
1r%_.u$~f8]0"zf0X-b!vA1?3a4t0收集索引统计信息51Testing软件测试网w{lVt&W
]4^uV^0GATHER_TABLE_STATS
(PK.xOpZ&B0"_xA kk$m? thC0收集表、列、索引统计信息51Testing软件测试网6@ bwK8IKN
Z0[fU)Q5D0GATHER_SCHEMA_STATS51Testing软件测试网!Kz g*NR?TV!u)A
sb` ~`p1D9P0收集用户下所有对象的统计信息51Testing软件测试网tB_'n ngFx
n0p)AiJd1}'x[#|Z0GATHER_DICTIONARY_STATS
1je:b[AL0-U_dO3H;p9B4bsk0收集数据字典统计信息(不建议手工收集)51Testing软件测试网&o!RITR
nw*D_v@$I;G+\C)?0GATHER_DATABASE_STATS51Testing软件测试网ROUA$g&Kw
51Testing软件测试网,zP!l5s$GC'aH(t收集数据库中所有对象的统计信息
2P'G Uq'|7j"p#q0(CnR:ut{bJp M(G0GATHER_FIXED_OBJECTS_STATS
p.M W!ep)H] Qt"q0r8VIx M/GHE0收集固定表统计信息(不建议手工收集)51Testing软件测试网ESi-d1j$r
1o1k t\|0GATHER_SYSTEM_STATS
X9ptsTpsB;H6{})t0OTauu"X0收集系统统计信息51Testing软件测试网'S ~\/ArSL
'p)H~'g|m051Testing软件测试网2s;t7|O-Ld,npz"Fl;n
51Testing软件测试网M]7n0K$t5H0f*mK7nU"dR5n-vV]DY02、删除统计信息x|2n%B9} ^;zm0
BVv"]P2e03@-WI J+lb)YD&b}0命令51Testing软件测试网9`B$D c!Ya(h
作用51Testing软件测试网jz ~*r:C;z#nvf1tJ)G/d*Q4\qa051Testing软件测试网 {oTX$B4RDELETE_INDEX_STATS
?l4_5?+^%c(A_~051Testing软件测试网 b8[-C G#z N删除索引统计信息51Testing软件测试网'd;O4`0Qt2w9r1e_ \ V {
51Testing软件测试网N/o)ldDDELETE_TABLE_STATS
$h1SCg_#B&f![t0T1}S*OWU'o6N0删除表、列、索引统计信息
9C:\GS2j8G0\|Au!Zv0DELETE_SCHEMA_STATS
5@o`dr%\Pj051Testing软件测试网6TS)v2J9F1Wo/k删除用户下所有对象的统计信息51Testing软件测试网9^"EE.LQv*r
51Testing软件测试网2Q`*C%m)Qb9KDELETE_DICTIONARY_STATS51Testing软件测试网B%L@8h3c1vU
/~l'Nh hI!y0删除数据字典统计信息(不建议使用)
)G:g ~S1r9}W@B051Testing软件测试网U$m6UI8k0Zqh&x!rDELETE_DATABASE_STATS51Testing软件测试网4m/F!k6Y7T-VV
{5B SOj K\pl!N\0删除数据库中所有对象的统计信息
"VMK2?9I051Testing软件测试网EpCgb3X#CE2rDELETE_FIXED_OBJECTS_STATS51Testing软件测试网{ { xcH$W0?
51Testing软件测试网_A7Y1Ti'w0c"o7h收集固定表统计信息(不建议使用)51Testing软件测试网1FE1?!P m%} \
'dz&`2n6P~^0DELETE_SYSTEM_STATS
l ^ O0z{6r$dO*GFf0\!k3|Px+Ck;J0删除系统统计信息
+w Br"y.}Bk-F051Testing软件测试网E(|EGP5h&ucDELETE_COLUMN_STATS51Testing软件测试网%p}*u&b!B8F1n0\;{
51Testing软件测试网.v+D|)b0Q3t\[,lNE2d*Z删除某列统计信息51Testing软件测试网U#D GK A,G
51Testing软件测试网!zf ezwi }(e#on1\6OgK8EWxLMU0|*bc-X5BQfZu051Testing软件测试网O#T^-qkd
3、锁定和解锁统计信息laM1sh#l\(|0
n`ca4~%cZ9J_051Testing软件测试网rr]{ a[L命令
A%FH1y iC7D0作用51Testing软件测试网B{;H!dri#t'MBks3o5o*x,`4~0h_051Testing软件测试网;u,EeWLLOCK_TABLE_STATS
srOB6b051Testing软件测试网Utr:Mvkz锁定表统计信息51Testing软件测试网F&Y I*m s i!i#Kg
!ZjMP4K,U0LOCK_PARTITION_STATS51Testing软件测试网3E A%ol6x2[!Jk.wc]
51Testing软件测试网.\2X]*a%U4?H)pw n2y锁定表分区统计信息51Testing软件测试网E)]mL `MU q&rI%d
51Testing软件测试网B_tI1bR9n*Y6k&SLOCK_SCHEMA_STATS51Testing软件测试网[c/c7?(jM!\&sg
51Testing软件测试网:gTg5MU?(^锁定用户下所有对象的统计信息
],y1p_ B02Mm-\Q*HUC^0UNLOCK_TABLE_STATS
(y"a/R%k(~5@j051Testing软件测试网d\"Z'OE,Rcp解锁表统计信息51Testing软件测试网hlU/}"B&t\
h[Gr-N9AyRW1Q0UNLOCK_PARTITION_STATS
+w?+e!n\9F%qY/B051Testing软件测试网p0Q,sT sJG6Y*c解锁表分区统计信息
:G0|^azc1O051Testing软件测试网RIq;W[/V8v-mUNLOCK_SCHEMA_STATS
1k(?,nT {051Testing软件测试网0Yf(G;ic解锁用户下所有对象的统计信息51Testing软件测试网2q5r'Z~_p]
j5^ W;[:sE7a051Testing软件测试网dC CRZr-e*cZzj*ai
K;nz-An!zu'k5F051Testing软件测试网~:bpj'l4{t
4、查看统计信息51Testing软件测试网5v["S,]X@%@.q~e.w/o51Testing软件测试网Y)sB-C9{E8N)S
51Testing软件测试网bk"dK&~e lT|4x#D4~命令51Testing软件测试网DaF/k:J5zn
作用51Testing软件测试网`:}&Nr$K2\6Kv xkm)n'?Xb [Y m00cqq-[;qg0WvFN0GET_COLUMN_STATS
:V@ t}Y@051Testing软件测试网Y j.D&Pm c!t查看所有与列相关的统计信息
4G}!q4s"f4C2b!VTE051Testing软件测试网0Y#`~dl;tG9Z EGET_INDEX_STATS51Testing软件测试网5Uir~TdiT
51Testing软件测试网p,xm2[xOR R查看所有与索引相关的统计信息51Testing软件测试网]$T^A"nVJ|&R
)]"z'x2^ ht3F0GET_TABLE_STATS51Testing软件测试网[Tn+ey H
51Testing软件测试网"`'F#{`c:o.wt查看所有与表相关的统计信息
#}0y.X`se3g:tEi0{051Testing软件测试网1g,J\jD~1`$};[GET_SYSTEM_STATS
7oLSwO7E04a"Y2}8z rb'_"m0查看系统级的统计信息51Testing软件测试网jE)a#H`-e3}H
51Testing软件测试网^y;Vm9e m#G_I ?e3AS&`Tq1d%}051Testing软件测试网 Hn.}1Yg
第2章 统计信息有关视图平时可以通过查询以下视图查看数据库对象的统计信息:51Testing软件测试网a0Tvf8qw51Testing软件测试网"{ E&Y7uQ.J.K}
AxwQQ2j0
2Kv_V+\ O01、表统计信息:51Testing软件测试网4k Ve6?m`8wv.W51Testing软件测试网] w kTr&}L N/{(`
9w5cGQ*z es8i0视图名称51Testing软件测试网'p)g,W KyKOK$I
说明51Testing软件测试网+mc0V|0osbf^*\P%oY)kn8^0DBA_ALL_TABLES / USER_*?_.]:~s:y_-O9u0
CTbT1y0所有表和视图的统计信息k1?"Ak l$v051Testing软件测试网Z\^%zZ1N
DBA_TAB_HISTOGRAMS / USER_*51Testing软件测试网 d4?4Cf`U'E#e51Testing软件测试网K1L'X&Q}&DS1s"q-h.@
所有表的直方图统计信息51Testing软件测试网X(u!k1yU _,ll&OM6\*cYua0DBA_TAB_MODIFICATIONS / USER_*51Testing软件测试网jc2{[M#E"Z&\&a4n4S`:x:ND0所有表的修改信息(插入、删除、更新))Kj9nicL6c&a0
0O&{/dS_-I1uF0DBA_TAB_PARTITIONS / USER_*51Testing软件测试网{D:`!XS%mR;l6\BV6L B|w0所有表分区的统计信息51Testing软件测试网1IP8E(\V Lq]ACg!S S t9f5gx0DBA_TAB_STATISTICS / USER_*51Testing软件测试网,`~zzT,{~,\/J?.S)o:xm0所有表、表分区、子分区的统计信息51Testing软件测试网z{)Q[k2T51Testing软件测试网.qq_3JIyB0?
DBA_TAB_SUBPARTITIONS / USER_*d:N4y[blM051Testing软件测试网T9VZ-m TK
所有表分区的子分区的统计信息i6Q ZDB-HV r051Testing软件测试网M p/Du7B#h#@
3?,Um;|+b051Testing软件测试网IWi)xxe{^
0~k/xi7H~t C0
AcDp1c"f[k0J02、索引统计信息:EM/JF%F'_1]u3g.s5l051Testing软件测试网E-uc*PjA
6^,V*])?N&XA4b0视图名称51Testing软件测试网 D*UD6L b2r.sI3T @
说明z7w#lfD0
y!V'Oa`2C8R#?0T0DBA_INDEXES / USER_*"J0{Hk#n&d.K!Tt051Testing软件测试网"wzn^4]
所有索引的统计信息51Testing软件测试网 } s(e9e-P'xgt51Testing软件测试网w[`V%IKG D
DBA_IND_PARTITIONS / USER_*p[*n3Z4E;dc0
9@+EQ0{a|;^)U"{EX0所有分区索引的统计信息Q%^!E%`[b0
;x&dT:@\zef3K-p0DBA_IND_STATISTICS / USER_*51Testing软件测试网,Dx(MxKesiG2n&] a,nKp e7N!x0所有索引、分区索引、子分区索引的统计信息51Testing软件测试网[!V h`N VB7mjRCh$o'JZP0DBA_IND_SUBPARTITIONS / USER_*F)E*Y#PR051Testing软件测试网$Y'C%Nx)LFK?
所有子分区索引的统计信息51Testing软件测试网0n ql4Vn`Zd}@P1op(dO0c }e h!Sh I ]0
tIr/YJoO0Z V2Mf0&iB:x}1q%v t S(S#@051Testing软件测试网%B:h)}C}5Y1i9B
51Testing软件测试网$k)y&V1Us^Q6j$sg4b5um+CY lv_w5^0第3章 手动收集统计信息对于表的数据进行大规模导入或删除操作之后,要对表进行手工统计信息收集,防止统计信息变得陈旧,命令如下:51Testing软件测试网]u"jS$U1\`h'W51Testing软件测试网7q%V[Qr
BEGINmx$~UY.{$w+o0