This Domain(Admin5.com) is for Sale:

使用DB2look 重新创建优化器访问计划(4)

时间:2007-12-23  来源:不详  作者:迈克DB
生成db2exfmt输出:

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网友发表了评论 查看完整内容

24小时热门信息