天地不仁,以万物为刍狗!
profile使用入门 :)--pub精华!
上一篇 / 下一篇 2007-12-28 00:00:00 / 个人分类:db2
profile使用入门 :)
Wrf6V/U2a&^0ITPUB个人空间ETO.d-f^.kP
Wrf6V/U2a&^0ITPUB个人空间ETO.d-f^.kP
很多开发和数据库管理人员都在为优化器问题烦恼不已。尽管很多时候优化器问题都是可以通过常规手段解决的,但是在某些特殊情况下,或者紧急情况(没有时间完整地分析问题)下,用户可以使用profile暂时强制优化器使用某些特定的操作。。。ITPUB个人空间z$}/_c/~kF X
{1_
D
下面是一个step by step的例子,简单地说明了怎样强制优化器使用table scanITPUB个人空间C&d9D!ez"W7\[ dW?
DB21085I Instance "DB2" uses "32" bits and DB2 code release "SQL09010" with
O5G\o\V%\0level identifier "02010107".
/i6|1t;GW0dBvo0Informational tokens are "DB2 v9.1.0.356", "s060629", "NT32", and Fix Pack "0".ITPUB个人空间 T;W0uBo!nZ5u.r
Product is installed at "D:PROGRA~1IBMSQLLIB" with DB2 Copy NameITPUB个人空间vJ7y p NZ
"DB2COPY1".ITPUB个人空间L+M`&Pm'_
ITPUB个人空间rN6I7['m _ a1wa U
<---------------创建一个数据库
yYIv~0D:TEMPdb2service.perf1>db2 create db sampel2DB20000I The CREATE DATABASE command completed successfully.ITPUB个人空间P;LIDwK;G IV t
6Lb!d;L,w D0D:TEMPdb2service.perf1>db2 connect to sampel2ITPUB个人空间hTVb?_"kl]t
d2Ur"Px}W"c0 Database Connection InformationITPUB个人空间 n~FsFP'k&Q~
/O/A'M/O%Om2p.G0Database server = DB2/NT 9.1.0ITPUB个人空间 a me I3ct/@5m.HE
SQL authorization ID = TAOEWANGITPUB个人空间#_f-ZHa0aW U+cR6A(Pd
Local database alias = SAMPEL2ITPUB个人空间*r'H{/zl[q
ITPUB个人空间5}'v!Z#S,fnn]d] Q
<----------创建优化器系统表
"]*ZC'W8@qwT?5wS0D:TEMPdb2service.perf1>db2 "create table systools.opt_profile (schema VARCHAR(128) not null, name varchar(128) not null, profile blob (2M) not null, primary key (schema, name))"ITPUB个人空间SB6^Z [ aA
DB20000I The SQL command completed successfully.ITPUB个人空间4L]I*}:C.b
ITPUB个人空间p1Z5j?6]Ss:ic
D:TEMPdb2service.perf1>cd ..
|5ZZr0P n Fr0
\4cz,v? h+mN0<----------创建用户表
+V[1? cA0D:TEMP>db2 "create table mytable (name varchar(128), id integer, salary float,phone varchar(20))"
_"xU#AI:pp0DB20000I The SQL command completed successfully.ITPUB个人空间1aJ2bi1zXUl:i
ITPUB个人空间&I(e.Vv)d;K"nP
<-----------插入一些数据
TTHC0M&Yw+Ac0D:TEMP>db2 "insert into mytable values ('tao wang', 12345, 100, '123-456')"ITPUB个人空间ZX B7Pwb9y@
DB20000I The SQL command completed successfully.
(]!C.og w&f@%]0ITPUB个人空间Y]g@/o2b"Q
D:TEMP>db2 "insert into mytable values ('diablo2', 12346, 101, '123-457')"ITPUB个人空间(jZ#g2eUJ0~D
DB20000I The SQL command completed successfully.ITPUB个人空间1\5dzsrc Up
ITPUB个人空间\&C [!S l{ w|%N
D:TEMP>db2 "insert into mytable values ('whiterain', 123, 102, '123-458')"
$_Fr!k7O'ln0DB20000I The SQL command completed successfully.
MW [/BRm&lYM0
fuO3p8?k0F0D:TEMP>db2 "insert into mytable values ('ganquan', 1255, 104, '123-459')"
ne)JS0au0DB20000I The SQL command completed successfully.
Bb*Ov/M6G_*R"sR,n0
t4K|C5U5{.p0<---------别忘了runstats
6gR/d W'`z)rf eGsm0D:TEMP>db2 "runstats on table taoewang.mytable"ITPUB个人空间4lm,A%t b&t8c
DB20000I The RUNSTATS command completed successfully.
t7F&] d gQ1`0ITPUB个人空间EU[`8E1eS
D:TEMP>db2 "runstats on table taoewang.mytable for indexes all"ITPUB个人空间.m(R:QV.F
DB20000I The RUNSTATS command completed successfully.
E8] r5hoz x5a0
6m!fm:@RAx:S1g0ITPUB个人空间3W/gEXS [ G.g s
<-----------试试看ITPUB个人空间-C1V(X\&hv.oc3j S|9xx
D:TEMP>db2 "SELECT * FROM TAOEWANG.MYTABLE WHERE ID < 1000"
$P;@"jMX#q3r0
t q#VLv&l~0NAMEITPUB个人空间 S3BN2z a8j/v&c/c"j
ID SALARY
Ihl[5g?0 PHONEITPUB个人空间~fIs5@-^"zl
-------------------------------------------------------------------------------------------------------------------------------- ----------- ------------------------ --------------------ITPUB个人空间r*\ N-_0KJd
whiterain
.w-fx D;c6h?t0 123 +1.02000000000000E+002 123-458ITPUB个人空间jeG |EQy+i;M
Wc9zT^Z T6IZ0 1 record(s) selected.
?tf%vF6A0ITPUB个人空间LaS$cEq%S
<--------创建explain表ITPUB个人空间#iHE6rzi
D:TEMP>cd D:Program FilesIBMSQLLIBMISCITPUB个人空间e,Tu0d2J ~;|
B!s!n9g,_-j]0D:Program FilesIBMSQLLIBMISC>db2 -tvf EXPLAIN.DDL
:AN,a(k['a ~"j+A0.....
U&}K Y]$?X0ITPUB个人空间'S7dF!TE0K jI
D:Program FilesIBMSQLLIBMISC>cd D:tempITPUB个人空间RB#r)NZI5~}YP#~
uFn~!J u-e0<----------看一看现在的访问计划ITPUB个人空间D`Y6M pb+jRQ#N
D:TEMP>db2 set current explain mode explain
"_^?%Bg0DB20000I The SQL command completed successfully.ITPUB个人空间#kis`,v+?J
ITPUB个人空间d-~afBk+C
D:TEMP>db2 "SELECT * FROM TAOEWANG.MYTABLE WHERE ID < 1000"
g8~b&c d2[7w7]0SQL0217W The statement was not executed as only Explain information requestsITPUB个人空间XO Xiy!S
are being processed. SQLSTATE=01604ITPUB个人空间7}{&p q%u6[ dv(\
ITPUB个人空间q4h5pyZn&cN`3RG
D:TEMP>db2 set current explain mode no
MT1i(zs }*\ ]}~R0DB20000I The SQL command completed successfully.
.?Hx6`T*s0ITPUB个人空间9Ia0]:Fit
D:TEMP>db2exfmt -d sampel2 -g TIC -w -1 -n % -s % -# 0 -o output.txtITPUB个人空间f,^dGt~
DB2 Universal Database Version 9.1, 5622-044 (c) Copyright IBM Corp. 1991, 2006ITPUB个人空间1yS:~SBn[Q
Licensed Material - Program Property of IBM
/n&\NJ;k+`0IBM DATABASE 2 Explain Table Format ToolITPUB个人空间 N@5HF|[I
ITPUB个人空间p[1P"]['p!Go
Connecting to the Database.ITPUB个人空间g~2qE XAZ
Connect to Database Successful.ITPUB个人空间q#~+MoqxV6d
Binding package - Bind was Successful
2i^[~"GU!S,b0Output is in output.txt.
\ZX \ C\0Executing Connect Reset -- Connect Reset was Successful.ITPUB个人空间!UcSlW1^.i y
ITPUB个人空间KmoT$M8kY
D:TEMP>uedit32 output.txtITPUB个人空间'?^,_uO h
/Y ] h%m;d*@F-fm0<-------------现在优化器用了index scan
.Pc,v1D.h5y0Original Statement:
i&S^6x\ ^!hfQ0------------------ITPUB个人空间A o5| z/b6M]
SELECT * ITPUB个人空间-v i o5?-u7H
FROM TAOEWANG.MYTABLE ITPUB个人空间(\~ NS-?V
WHERE ID < 1000
j U/vN3^8yn0ITPUB个人空间&Yx)So F~:^5W+@
ITPUB个人空间p["n8`,MS-d
Optimized Statement:ITPUB个人空间U]3}-m0\q
-------------------ITPUB个人空间_;MN.EC.dE?y
SELECT Q1.NAME AS "NAME", Q1.ID AS "ID", Q1.SALARY AS "SALARY", Q1.PHONE AS ITPUB个人空间#n%X u*Zz{F
"PHONE"
.b}t5KX-L0FROM TAOEWANG.MYTABLE AS Q1 ITPUB个人空间0[t/p QC|&uR-nQ
WHERE (Q1.ID < 1000)ITPUB个人空间&},w/~ zmWp$E;r,K;j9S(N
.b0`YZEt5W0Access Plan:ITPUB个人空间+\5Z#Y nbfT7t ll
-----------ITPUB个人空间+XLk] V!YE
Total Cost: 7.56853ITPUB个人空间3lG9[c!Fr R4a;\p8_ v
Query Degree: 1ITPUB个人空间f$| []S
下面是一个step by step的例子,简单地说明了怎样强制优化器使用table scanITPUB个人空间C&d9D!ez"W7\[ dW?
DB21085I Instance "DB2" uses "32" bits and DB2 code release "SQL09010" with
O5G\o\V%\0level identifier "02010107".
/i6|1t;GW0dBvo0Informational tokens are "DB2 v9.1.0.356", "s060629", "NT32", and Fix Pack "0".ITPUB个人空间 T;W0uBo!nZ5u.r
Product is installed at "D:PROGRA~1IBMSQLLIB" with DB2 Copy NameITPUB个人空间vJ7y p NZ
"DB2COPY1".ITPUB个人空间L+M`&Pm'_
ITPUB个人空间rN6I7['m _ a1wa U
<---------------创建一个数据库
yYIv~0D:TEMPdb2service.perf1>db2 create db sampel2DB20000I The CREATE DATABASE command completed successfully.ITPUB个人空间P;LIDwK;G IV t
6Lb!d;L,w D0D:TEMPdb2service.perf1>db2 connect to sampel2ITPUB个人空间hTVb?_"kl]t
d2Ur"Px}W"c0 Database Connection InformationITPUB个人空间 n~FsFP'k&Q~
/O/A'M/O%Om2p.G0Database server = DB2/NT 9.1.0ITPUB个人空间 a me I3ct/@5m.HE
SQL authorization ID = TAOEWANGITPUB个人空间#_f-ZHa0aW U+cR6A(Pd
Local database alias = SAMPEL2ITPUB个人空间*r'H{/zl[q
ITPUB个人空间5}'v!Z#S,fnn]d] Q
<----------创建优化器系统表
"]*ZC'W8@qwT?5wS0D:TEMPdb2service.perf1>db2 "create table systools.opt_profile (schema VARCHAR(128) not null, name varchar(128) not null, profile blob (2M) not null, primary key (schema, name))"ITPUB个人空间SB6^Z [ aA
DB20000I The SQL command completed successfully.ITPUB个人空间4L]I*}:C.b
ITPUB个人空间p1Z5j?6]Ss:ic
D:TEMPdb2service.perf1>cd ..
|5ZZr0P n Fr0
\4cz,v? h+mN0<----------创建用户表
+V[1? cA0D:TEMP>db2 "create table mytable (name varchar(128), id integer, salary float,phone varchar(20))"
_"xU#AI:pp0DB20000I The SQL command completed successfully.ITPUB个人空间1aJ2bi1zXUl:i
ITPUB个人空间&I(e.Vv)d;K"nP
<-----------插入一些数据
TTHC0M&Yw+Ac0D:TEMP>db2 "insert into mytable values ('tao wang', 12345, 100, '123-456')"ITPUB个人空间ZX B7Pwb9y@
DB20000I The SQL command completed successfully.
(]!C.og w&f@%]0ITPUB个人空间Y]g@/o2b"Q
D:TEMP>db2 "insert into mytable values ('diablo2', 12346, 101, '123-457')"ITPUB个人空间(jZ#g2eUJ0~D
DB20000I The SQL command completed successfully.ITPUB个人空间1\5dzsrc Up
ITPUB个人空间\&C [!S l{ w|%N
D:TEMP>db2 "insert into mytable values ('whiterain', 123, 102, '123-458')"
$_Fr!k7O'ln0DB20000I The SQL command completed successfully.
MW [/BRm&lYM0
fuO3p8?k0F0D:TEMP>db2 "insert into mytable values ('ganquan', 1255, 104, '123-459')"
ne)JS0au0DB20000I The SQL command completed successfully.
Bb*Ov/M6G_*R"sR,n0
t4K|C5U5{.p0<---------别忘了runstats
6gR/d W'`z)rf eGsm0D:TEMP>db2 "runstats on table taoewang.mytable"ITPUB个人空间4lm,A%t b&t8c
DB20000I The RUNSTATS command completed successfully.
t7F&] d gQ1`0ITPUB个人空间EU[`8E1eS
D:TEMP>db2 "runstats on table taoewang.mytable for indexes all"ITPUB个人空间.m(R:QV.F
DB20000I The RUNSTATS command completed successfully.
E8] r5hoz x5a0
6m!fm:@RAx:S1g0ITPUB个人空间3W/gEXS [ G.g s
<-----------试试看ITPUB个人空间-C1V(X\&hv.oc3j S|9xx
D:TEMP>db2 "SELECT * FROM TAOEWANG.MYTABLE WHERE ID < 1000"
$P;@"jMX#q3r0
t q#VLv&l~0NAMEITPUB个人空间 S3BN2z a8j/v&c/c"j
ID SALARY
Ihl[5g?0 PHONEITPUB个人空间~fIs5@-^"zl
-------------------------------------------------------------------------------------------------------------------------------- ----------- ------------------------ --------------------ITPUB个人空间r*\ N-_0KJd
whiterain
.w-fx D;c6h?t0 123 +1.02000000000000E+002 123-458ITPUB个人空间jeG |EQy+i;M
Wc9zT^Z T6IZ0 1 record(s) selected.
?tf%vF6A0ITPUB个人空间LaS$cEq%S
<--------创建explain表ITPUB个人空间#iHE6rzi
D:TEMP>cd D:Program FilesIBMSQLLIBMISCITPUB个人空间e,Tu0d2J ~;|
B!s!n9g,_-j]0D:Program FilesIBMSQLLIBMISC>db2 -tvf EXPLAIN.DDL
:AN,a(k['a ~"j+A0.....
U&}K Y]$?X0ITPUB个人空间'S7dF!TE0K jI
D:Program FilesIBMSQLLIBMISC>cd D:tempITPUB个人空间RB#r)NZI5~}YP#~
uFn~!J u-e0<----------看一看现在的访问计划ITPUB个人空间D`Y6M pb+jRQ#N
D:TEMP>db2 set current explain mode explain
"_^?%Bg0DB20000I The SQL command completed successfully.ITPUB个人空间#kis`,v+?J
ITPUB个人空间d-~afBk+C
D:TEMP>db2 "SELECT * FROM TAOEWANG.MYTABLE WHERE ID < 1000"
g8~b&c d2[7w7]0SQL0217W The statement was not executed as only Explain information requestsITPUB个人空间XO Xiy!S
are being processed. SQLSTATE=01604ITPUB个人空间7}{&p q%u6[ dv(\
ITPUB个人空间q4h5pyZn&cN`3RG
D:TEMP>db2 set current explain mode no
MT1i(zs }*\ ]}~R0DB20000I The SQL command completed successfully.
.?Hx6`T*s0ITPUB个人空间9Ia0]:Fit
D:TEMP>db2exfmt -d sampel2 -g TIC -w -1 -n % -s % -# 0 -o output.txtITPUB个人空间f,^dGt~
DB2 Universal Database Version 9.1, 5622-044 (c) Copyright IBM Corp. 1991, 2006ITPUB个人空间1yS:~SBn[Q
Licensed Material - Program Property of IBM
/n&\NJ;k+`0IBM DATABASE 2 Explain Table Format ToolITPUB个人空间 N@5HF|[I
ITPUB个人空间p[1P"]['p!Go
Connecting to the Database.ITPUB个人空间g~2qE XAZ
Connect to Database Successful.ITPUB个人空间q#~+MoqxV6d
Binding package - Bind was Successful
2i^[~"GU!S,b0Output is in output.txt.
\ZX \ C\0Executing Connect Reset -- Connect Reset was Successful.ITPUB个人空间!UcSlW1^.i y
ITPUB个人空间KmoT$M8kY
D:TEMP>uedit32 output.txtITPUB个人空间'?^,_uO h
/Y ] h%m;d*@F-fm0<-------------现在优化器用了index scan
.Pc,v1D.h5y0Original Statement:
i&S^6x\ ^!hfQ0------------------ITPUB个人空间A o5| z/b6M]
SELECT * ITPUB个人空间-v i o5?-u7H
FROM TAOEWANG.MYTABLE ITPUB个人空间(\~ NS-?V
WHERE ID < 1000
j U/vN3^8yn0ITPUB个人空间&Yx)So F~:^5W+@
ITPUB个人空间p["n8`,MS-d
Optimized Statement:ITPUB个人空间U]3}-m0\q
-------------------ITPUB个人空间_;MN.EC.dE?y
SELECT Q1.NAME AS "NAME", Q1.ID AS "ID", Q1.SALARY AS "SALARY", Q1.PHONE AS ITPUB个人空间#n%X u*Zz{F
"PHONE"
.b}t5KX-L0FROM TAOEWANG.MYTABLE AS Q1 ITPUB个人空间0[t/p QC|&uR-nQ
WHERE (Q1.ID < 1000)ITPUB个人空间&},w/~ zmWp$E;r,K;j9S(N
.b0`YZEt5W0Access Plan:ITPUB个人空间+\5Z#Y nbfT7t ll
-----------ITPUB个人空间+XLk] V!YE
Total Cost: 7.56853ITPUB个人空间3lG9[c!Fr R4a;\p8_ v
Query Degree: 1ITPUB个人空间f$| []S