zoukankan      html  css  js  c++  java
  • 哄骗DB2look 重新创立优化器访问筹划(3)

     
    在测试系统上重新创立优化器/盘问筹划问题标示例:
     
    示例 1:
     
    OS:Windows 2000
     
    DB2LEVEL:V8.2 Fixpack 8 ESE 单分区
     
     
    测试并复制相同的 OS 和 db2level。
     
    数据库:
     
    消耗数据库:SAMPLE
     
    测试数据库:DUMMYDB
     
    哄骗下列呼吁创立 Sample 数据库:db2sampl
     
    哄骗下列呼吁创立 Dummy 数据库:
     
    db2 create db DUMMYDB
     
    注重:用与消耗中相同的代码页、地区和排序序列创立 TEST 数据库。
     
    消耗环境:
     
    ---------------------------------------
    -- Database SAMPLE and Database Manager
    configuration parameters
    ---------------------------------------
    UPDATE DBM CFG USING cpuspeed 9.446886e-007;
    UPDATE DBM CFG USING intra_parallel NO;
    UPDATE DBM CFG USING federated NO;
    UPDATE DBM CFG USING fed_noauth NO;
    !db2fopt SAMPLE update opt_buffpage 250;
    !db2fopt SAMPLE update opt_sortheap 256;
    UPDATE DB CFG FOR SAMPLE USING locklist 50;
    UPDATE DB CFG FOR SAMPLE USING dft_degree 1;
    UPDATE DB CFG FOR SAMPLE USING maxlocks 22;
    UPDATE DB CFG FOR SAMPLE USING avg_appls 1;
    UPDATE DB CFG FOR SAMPLE USING stmtheap 2048;
    UPDATE DB CFG FOR SAMPLE USING dft_queryopt 5;
    ---------------------------------
    -- Environment Variables settings
    ---------------------------------
    !db2set DB2_INLIST_TO_NLJN=yes;
    !db2set DB2_HASH_JOIN=yes;
    除了以上设置,还应在数据库设置中注重下列设置:
     
    db2 get db cfg for sample > dbcfg_sample.out
    Database heap (4KB) (DBHEAP) = 600
    SQL statement heap (4KB) (STMTHEAP) = 2048
    Number of frequent values retained (NUM_FREQVALUES) = 10
    Number of quantiles retained (NUM_QUANTILES) = 20
     
     
    确保在修负数据库治理器设置(dbm cfg)之后终了并启动该实例。
    关于 sample 数据库,按下列方式对 ORG 和 SALES 表运转 runstats:
     
    db2 connect to sample
    db2 runstats on table <schema>.org with distribution
    and indexes all
    db2 runstats on table <schema>.sales with distribution
    and indexes all
    db2 terminate
     
     
     
    目前,经过实验 EXPLAIN.DDL 文件生成 EXPLAIN 表,
    该文件在 \sqllib\misc 目次下:
     
    db2 connect to sample
    db2 -tvf <intall path>\EXPLAIN.DDL
    db2 terminate
     
     
     
    在名为 query.sql 的文件中保存下列呼吁:
     
    connect to sample
    set current explain mode explain
    select * from org a, staff b where
    a.deptnumb=b.dept and b.dept=15
    set current explain mode no
    terminate
     
     
     
    目前,按下列方式实验该文件:
     
    db2 -tvf query.sql
     
     
    下面将仅仅以正文形式编译盘问。您将在屏幕上看到:
     
    C:\>db2 -tvf query.sql
    connect to sample
    Database Connection Information
    Database server = DB2/NT 8.2.1
    SQL authorization ID = SKAPOOR
    Local database alias = SAMPLE
    set current explain mode explain
    DB20000I The SQL command completed
    successfully.
    select * from org a, staff b where
    a.deptnumb=b.dept and b.dept=15
    SQL0217W The statement was not executed
    as only Explain information requests
    are being processed. SQLSTATE=01604
    set current explain mode no
    DB20000I The SQL command completed successfully.
    C:\>db2 terminate
    DB20000I The TERMINATE command completed successfully
    哄骗 db2exfmt 生成访问筹划,如下:
     
    db2exfmt -d SAMPLE -g TIC -w -1
    -n % -s % -# 0
    -o prod_sample_exfmt.txt
     
     
     
    反省 prod_sample_exfmt.txt 文件的内容。
    您将看到生成了下面的访问筹划:
     
    Access Plan:
    -----------
    Total Cost: 25.8823
    Query Degree: 1
    Rows
    RETURN
    ( 1)
    Cost
    I/O
    |
    4
    HSJOIN
    ( 2)
    25.8823
    2
    /----- -----\
    4 1
    TBSCAN TBSCAN
    ( 3) ( 4)
    12.9682 12.913
    1 1
    | |
    35 8
    TABLE: SKAPOOR TABLE: SKAPOOR
    STAFF ORG
     
    目前,这便是您要在消耗 sample 数据库上延续的筹划。您需求在测试环境中模拟该筹划。
     
    从消耗 sample 数据库中搜集下列信息:
     
    db2look -d SAMPLE -l -o storage.out
    db2look -d SAMPLE -f -fd -o config.out
    db2look -d SAMPLE -e -a -m -t ORG SALES -o table.ddl
     
     
     
    测试环境:
     
    修正下面将数据库从 SAMPLE 邻接到 DUMMYDB 时所搜集的每个文件中的数据库名。
     
    比方,要是您搜查了 3 个文件的内容,就会注重到:
     
    CONNECT TO SAMPLE;
     
     
     
    将它修正为:
     
    CONNECT TO DUMMYDB;
     
     
     
    在测试环境中领受这些文件。本例中,完好绝对的表都是在默许的表空间 USERSPACE1 中创立的。因此,它们也应在测试系统上相同的 SMS 表空间中用 storage.out 直达储的相同设置(包括 PREFETCHSIZE、EXTENTSIZE 等)举行创立。
     
    在 config.out 文件中举行大批修正。将下列内容:
     
    UPDATE DB CFG FOR SAMPLE USING dft_queryopt 5;
     
     
     
    修正为
     
    UPDATE DB CFG FOR SAMPLE USING dft_queryopt 3;
     
     
     
    并保存 config.out 文件。
     
    目前,实验 storage.out、config.out 和 table.ddl,如下:
     
    db2 -tvf storage.out > storage_output.out
    db2 -tvf config.out > config_output.out
    db2 -tvf table.ddl > table.out
     
     
     
    反省输入文件以确保完好绝对呼吁都乐成运转了。并且遵照消耗环境设置中所体现的用于 SAMPLE DB 的设置来修正 DBHEAP、STMTHEAP、NUM_FREQVALUES、NUM_QUANTILES,使它们实用于 DUMMYDB。同时,反省注册表变量设置可否尽大约地相同。
     
    哄骗 db2stop 和 db2start 终了并启动该实例。重新为 DUMMYDB 数据库创立正文表:
     
    db2 connect to dummydb;
    <install path>\sqllib\misc\db2 -tvf EXPLAIN.DDL
    db2 terminate;
     
     
     
    目前,对 DUMMYDB 数据库运转盘问,在前面临 SAMPLE 数据库运转盘问时所生成的 query.sql 文件中将数据库名从 SAMPLE 修正为 DUMMYDB。
     
    C:\>db2 -tvf query.sql
    connect to dummydb
    Database Connection Information
    Database server = DB2/NT 8.2.1
    SQL authorization ID = SKAPOOR
    Local database alias = DUMMYDB
    set current explain mode explain
    DB20000I The SQL command completed
    successfully.
    select * from org a, staff b where
    a.deptnumb=b.dept and b.dept=15
    SQL0217W The statement was not executed as only
    Explain information requests
    are being processed. SQLSTATE=01604
    set current explain mode no
    DB20000I The SQL command completed successfully.
    C:\>db2 terminate
    DB20000I The TERMINATE command completed
    successfully
     
     
     
    来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2007/0730/28321.html


    版权声明: 原创作品,承诺转载,转载时请务必以超链接情势标明文章 原始情由 、作者信息和本声明。否则将深究法律责任。

  • 相关阅读:
    针对动态加载方式的C/C++动态链接库编写
    Delphi无法正确动态调用C++ dll库的几个原因
    Windows下VC++显示UTF-8编码中文
    小型C/C++项目的makefile编写
    树状树组(Binary Indexed Tree (BIT))的C++部分实现
    PLSQL创建Oracle定时任务
    Oracle:trunc()函数简介 时间处理及数字小数位处理
    Chrome inspect学习(四)本地环境/测试环境前端与客户端交互,涉及客户端代码报错,如何调试
    Chrome inspect学习(三)如何查看本地环境/测试环境下移动端内嵌H5页面在手机中真实渲染的DOM结构、CSS样式、接口调用
    Chrome inspect学习(二)如何查看线上环境移动端内嵌H5页面在手机中真实渲染的DOM结构、CSS样式、接口调用
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975359.html
Copyright © 2011-2022 走看看