使用DB2look 重新创建优化器访问计划(4)
时间:2007-12-23 来源:不详 作者:迈克DB
db2exfmt-dDUMMYDB-gTIC-w-1-n%-s%-#0-otest_dummydb_exfmt.txt
检查test_dummydb_exfmt.txt的内容并查看访问计划:
AccessPlan:
-----------
TotalCost:25.8843
QueryDegree:1
Rows
RETURN
(1)
Cost
I/O
|
4
MSJOIN
(2)
25.8843
2
/----- -----\
14
TBSCANTBSCAN
(3)(5)
12.91312.9682
11
||
835
TABLE:SKAPOORTABLE:SKAPOOR
ORGSTAFF
您在测试中获得了一个不同于生产中的访问计划。本例中,显然我们在测试系统上已经将DFT_QUERYOPT(默认的查询优化)从5修改为3。因此,您看到的是MergeJoin计划,而非HashJoin计划,以及有一点点区别的总成本(TotalCost)。
因为这些计划不匹配(假设您不确定为什么),所以要检查db2exfmt输出中的配置。见表2。
正如您可以看到的,测试(TEST)和生产(PRODUCTION)之间的惟一区别就是优化级别(OptimizationLevel),我们特意将之从5修改为3,只是为了显示在测试环境中复制生产访问计划为何会不成功。
本例中,您将使用下列UPDATE语句将DFT_QUERYOPT更新为5:
UPDATEDBCFGFORSAMPLEUSINGdft_queryopt5
织梦好,好织梦
然后,停止并重新连接数据库。再次对DUMMYDB发出query.sql,并使用db2exfmt命令生成访问计划。这次,您将看到相同的访问计划。否则,就进一步确保本文中所讨论的所有优化器相关的参数都是相同的。
示例2:
该示例显示了db2look命令中-m选项的重要性。前面用-m选项收集的统计数据在测试和生产中应该相同。本例中,我们将看到没有正确更新统计数据时计划是如何变化的。
数据库治理器配置、数据库配置和db2set注册表变量与上面示例1中的相同。这里的模式名是SKAPOOR。用您的表的模式替换它。数据库是相同的,与示例1中一样是SAMPLE和DUMMY。这里所使用的平台和db2level是AIX5.1和DB2UDBESEV8.2,Fixpack8,单分区。
在sample数据库上执行下列命令:
db2"connecttosample"
db2"createindexname_indonstaff(name,id)"
db2"runstatsontableskapoor.staffwithdistributionandindexesall"
db2"setcurrentexplainmodeexplain"
db2"selectnamefromstaffwhereid=10orderbyname"
db2"setcurrentexplainmodeno"
db2"terminate"
使用db2exfmt生成访问计划。您将看到下面的访问计划:
AccessPlan:
-----------
TotalCost:0.111065
QueryDegree:1 本文来自织梦
Rows
RETURN
(1)
Cost
I/O
|
1
IXSCAN
(2)
0.111065
0
|
35
INDEX:SKAPOOR
NAME_IND
从sample数据库中收集db2look信息:
db2look-dsample-l-ostorage.out
db2look-dsample-e-a-m-tSTAFF-odb2look.out
db2look-dsample-f-fd-oconfig.out
修改这些文件以使您连接dummy数据库,而非之前在上面示例1中所连接的sample数据库。
手工修改统计数据之一。在db2look.out文件中搜索下列语句(请注重,模式名、TABSCHEMA和INDSCHEMA可能与您的具体情况不同):
UPDATESYSSTAT.INDEXES
SETNLEAF=1,
NLEVELS=1,
FIRSTKEYCARD=35,
FIRST2KEYCARD=35,
FIRST3KEYCARD=-1,
FIRST4KEYCARD=-1,
FULLKEYCARD=35,
CLUSTERFACTOR=-1.000000,
CLUSTERRATIO=100,
SEQUENTIAL_PAGES=0,
DENSITY=0,
AVERAGE_SEQUENCE_GAP=0.000000,
AVERAGE_SEQUENCE_FETCH_GAP=0.000000,
AVERAGE_SEQUENCE_PAGES=0.000000,
AVERAGE_SEQUENCE_FETCH_PAGES=0.000000,
AVERAGE_RANDOM_PAGES=1.000000,
AVERAGE_RANDOM_FETCH_PAGES=0.000000,
文章评论
共有位Admini5网友发表了评论 查看完整内容