使用DB2look 重新创建优化器访问计划(3)
时间:2007-12-23 来源:不详 作者:迈克DB
示例1:
OS:Windows2000
DB2LEVEL:V8.2Fixpack8ESE单分区
测试并复制相同的OS和db2level。
数据库:
生产数据库:SAMPLE
测试数据库:DUMMYDB
使用下列命令创建Sample数据库:db2sampl
使用下列命令创建Dummy数据库:
db2createdbDUMMYDB
注重:用与生产中相同的代码页、地区和排序序列创建TEST数据库。
生产环境:
--------------------------------------------------------
--DatabaseSAMPLEandDatabaseManagerconfigurationparameters
--------------------------------------------------------
UPDATEDBMCFGUSINGcpuspeed9.446886e-007;
UPDATEDBMCFGUSINGintra_parallelNO;
UPDATEDBMCFGUSINGfederatedNO;
UPDATEDBMCFGUSINGfed_noauthNO;
!db2foptSAMPLEupdateopt_buffpage250;
!db2foptSAMPLEupdateopt_sortheap256;
UPDATEDBCFGFORSAMPLEUSINGlocklist50;
UPDATEDBCFGFORSAMPLEUSINGdft_degree1;
UPDATEDBCFGFORSAMPLEUSINGmaxlocks22;
UPDATEDBCFGFORSAMPLEUSINGavg_appls1; 织梦内容管理系统
UPDATEDBCFGFORSAMPLEUSINGstmtheap2048;
UPDATEDBCFGFORSAMPLEUSINGdft_queryopt5;
---------------------------------
--EnvironmentVariablessettings
---------------------------------
!db2setDB2_INLIST_TO_NLJN=yes;
!db2setDB2_HASH_JOIN=yes;
除了以上设置,还应在数据库配置中注重下列配置:
db2getdbcfgforsample>dbcfg_sample.out
Databaseheap(4KB)(DBHEAP)=600
SQLstatementheap(4KB)(STMTHEAP)=2048
Numberoffrequentvaluesretained(NUM_FREQVALUES)=10
Numberofquantilesretained(NUM_QUANTILES)=20
确保在修改数据库治理器配置(dbmcfg)之后停止并启动该实例。对于sample数据库,按下列方式对ORG和SALES表运行runstats:
db2connecttosample
db2runstatsontable<schema>.orgwithdistributionandindexesall
db2runstatsontable<schema>.saleswithdistributionandindexesall
db2terminate
现在,通过执行EXPLAIN.DDL文件生成EXPLAIN表,该文件在<installdirectory>\sqllib\misc目录下:
db2connecttosample
db2-tvf<intallpath>\EXPLAIN.DDL dedecms.com
db2terminate
在名为query.sql的文件中保存下列命令:
connecttosample
setcurrentexplainmodeexplain
select*fromorga,staffbwherea.deptnumb=b.deptandb.dept=15
setcurrentexplainmodeno
terminate
现在,按下列方式执行该文件:
db2-tvfquery.sql
上面将仅仅以解释模式编译查询。您将在屏幕上看到:
C:\>db2-tvfquery.sql
connecttosample
DatabaseConnectionInformation
Databaseserver=DB2/NT8.2.1
SQLauthorizationID=SKAPOOR
Localdatabasealias=SAMPLE
setcurrentexplainmodeexplain
DB20000ITheSQLcommandcompletedsuccessfully.
select*fromorga,staffbwherea.deptnumb=b.deptandb.dept=15
SQL0217WThestatementwasnotexecutedasonlyExplaininformationrequests
arebeingprocessed.SQLSTATE=01604
setcurrentexplainmodeno
DB20000ITheSQLcommandcompletedsuccessfully.
C:\>db2terminate
DB20000ITheTERMINATEcommandcompletedsuccessfully.
使用db2exfmt生成访问计划,如下:
文章评论
共有位Admini5网友发表了评论 查看完整内容