zoukankan      html  css  js  c++  java
  • 哄骗DB2look重新设立建立优化器访谒操持(1)

     
    -
    简介
    在作为 DB2 UDB 支持阐发员(Support Analyst)任务时,我平日从处置优化器或盘问操持功效的客户哪里听到下列功效:
    我如何在接手斲丧情况的测试情况中重新设立建立不异的盘问访谒操持呢?
    我们经常需求将斲丧情况复制到测试情况中,包罗为盘问阐发方针重新设立建立不异的访谒操持。
    好比,在斲丧中,您大年夜概会遇到哄骗糟糕访谒操持的盘问所招致的功用功效,而且需求在测试细碎上复制该访谒操持以测验考试一些不合的计谋,好比操作统计数据,编削优化级别,对 DB2 注册表变量测验考试不合的设置等等,以便行进功用。
    在理想的全国中,您需求让测试情况尽大年夜概接近地婚配斲丧。也就是说,您需求在两个情况中哄骗完全不异的硬件、操作细碎维护级别和设置配备安置、DB2 级别和设置配备安置,以及在测试中哄骗与斲丧中不异的数据。可是,并非总是可以到达这种理想情况。如果斲丧情况具有极端大批的数据,您大年夜概就没有容量来保存斲丧细碎的测试副本。
    db2look 适用递次可以用于到达该方针,即便您无法复制全部的斲丧细节。
    本文将正文如何可以在测试细碎上模仿斲丧细碎,而无需真正的数据来重新设立建立盘问操持功效。该功用将协助您调试盘问和相识访谒操持功效,且不打断斲丧情况中的任务。可是请细心,如果需求测试成果访谒操持的执行,则依然需求将尽大年夜概多的数据从斲丧情况装入测试情况。测试细碎和斲丧细碎之间的不合依然总是大年夜概足以招致测试上的执行特征不婚配斲丧上的。这部分的阐发(功用调优)既是一门科学,又是一门艺术。
    优化器或盘问编译器领域中的其他功效,好比 SQL0901N 错误或实例溃逃,也可以哄骗本文中所正文的门径来重新设立建立。您可以测验考试种种计谋,如测试最新的补丁包(如果细碎是处于更老的补丁级别),测验考试不合的优化级别、不合的注册表变量等等,以便查看这些编削能否将操持功效。
    让我们看一看 db2look 顶用于到达该方针的选项。
     
    db2look 敕令及其选项
    下面是用于从斲丧细碎捕捉所需信息的敕令:
     
    清单 1. 重新设立建立优化器功效的敕令
     
    db2look -d <dbname> -l -o storage.out                         
    db2look -d <dbname> -f -fd -o config.out 
    db2look -d <dbname> -e -a -m -o db2look.out  
    db2look -d <dbname> -e -a -m -t table1 table2 ....
    tableX -o table.ddl
     
    而今,让我们更细致地看一看这些 db2look 敕令选项。
    天生缓冲池、表空间和数据库分区组信息。
     
    db2look -d <dbname> -l -o storage.out
     
    db2look -d -l -o storage.out

    下面是对以上 db2look 敕令中所用选项的刻画:
    -d:数据库名 —— 该选项必需指定。
    -l:天生数据库组织。这是用于数据库分区组、缓冲池和表空间的组织。
    -o:将输入重新定向到给定的文件名。如果未指定 -o 选项,然么输入将为标准输入(stdout),平日是输入到屏幕。
    -l 选项关于模仿斲丧情况非常主要。理想情况下,您需求具有不异的缓冲池、数据库分区组(如果处于多分区情况中)和表空间信息(包罗暂时表空间)。可是,如果您遭到了内存束缚,无法分派斲丧中所具有的大年夜型缓冲池,那么就哄骗 db2fopt 敕令。我稍后将在本大年夜节中更细致地接头该敕令。
    并非总是可以在测试中设置与斲丧中不异的表空间。好比,大年夜概设置了大年夜型配备,却无法无邪地在测试中设立建立不异的配备大年夜小。大概,大年夜概根底无法在测试情况中获得单独的表空间配备。其他,大年夜概无法在测试中设置与斲丧中不异的路子。需求恰外地更改路子、配备和文件以适应测试情况。
    下面是优化器为表空间所哄骗的主要信息。这就是您需求确保在测试和斲丧中不异的信息。(细心:这里所展现的数字是一个例子。您应在测试中哄骗与您斲丧中不异的设置。)
     
    PREFETCHSIZE 16 
    EXTENTSIZE 16 
    OVERHEAD 12.670000 
    TRANSFERRATE 0.180000
     
     
    如果斲丧中表空间是“由数据库处理的”,那么在测试中也应该是“由数据库处理的”。如果它在斲丧中是“由细碎处理的”,那在测试中也应该是多么的体例。
    细心:如果这是具有多个物理分区(MPP)的细碎,那么测试中数据库分区组中的分区数量就必需不异。可是,物理机器的数量不消不异。测试和斲丧中整个 MPP 情况中逻辑分区的数量必需不异。
    天生设置配备安置参数和注册表变量
     
    db2look -d <dbname> -f -fd -o config.out
     
     
     
    这里,我将哄骗下列参数:
    -f:提取设置配备安置参数和注册表变量。如果指定了该选项,就会忽略 -wrapper 和 -server 选项。
    -fd:为 opt_buffpage 和 opt_sortheap 天生 db2fopt 语句,以及其他设置配备安置和注册表设置。
    该敕令的输入如下所示:
     
    清单 2. db2look 敕令的示例输入:
     
    $ db2look -d sample -f -fd 
    -- No userid was specified, db2look tries to use
     Environment variable USER 
    -- USER is: SKAPOOR 
    -- This CLP file was created using DB2LOOK Version 8.2 
    -- Timestamp: Sat Mar 26 00:13:36 EST 2005 
    -- Database Name: SAMPLE 
    -- Database Manager Version: DB2/6000 Version 8.2.2 
    -- Database Codepage: 819 
    -- Database Collating Sequence is: UNIQUE 
    CONNECT TO SAMPLE;  
    --------------------------------------------------------  
    -- Database and Database Manager configuration parameters  
    --------------------------------------------------------  
    UPDATE DBM CFG USING cpuspeed 6.523521e-07;  
    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 50000;  
    !db2fopt SAMPLE update opt_sortheap 10000;  
    UPDATE DB CFG FOR SAMPLE USING locklist 1000;  
    UPDATE DB CFG FOR SAMPLE USING dft_degree 1; 
    UPDATE DB CFG FOR SAMPLE USING maxlocks 10;  
    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_ANTIJOIN=yes;  
    !db2set DB2_INLIST_TO_NLJN=yes;  
    COMMIT WORK; 
    CONNECT RESET;  
    TERMINATE;
     
     
     
    -f 和 -fd 选项是用于提取设置配备安置参数和注册表变量的环节选项,而优化器将在访谒操持阶段哄骗这些设置配备安置参数和情况。在下面的 清单 2 中,请细心下列 -fd 选项所发生的输入:
     
    !db2fopt SAMPLE update opt_buffpage 50000;  
    !db2fopt SAMPLE update opt_sortheap 10000;
     
    db2fopt 敕令陈说优化器为“缓冲池大年夜小(Buffer pool size)”哄骗指定的值,而非将可用缓冲池变量的页面加起来。(db2exfmt 输入中的缓冲池大年夜小将在下面的 缓冲池大年夜小 一节中遏制进一步的接头。)好比,假定因为测试细碎上的内存束缚,您无法获得大年夜型的缓冲池,而且希望将大年夜小设置配备安置得不异,实践上却不是真正有这么大年夜。哄骗将天生需求的 db2fopt 敕令的 -fd 选项来陈说优化器哄骗指定大年夜小,而非基于对该数据库可用的缓冲池遏制较量争论。

     
    来自: 新客网(www.xker.com) 详文参考:http://www.xker.com/page/e2007/0727/28246_2.html


    版权声明: 原创作品,允许转载,转载时请务必以超链接方式标明文章 原始起因 、作者信息和本声明。不然将深究法律责任。

  • 相关阅读:
    bzoj1593[Usaco2008 Feb]Hotel旅馆
    spoj1182 Sorted bit squence/[USACO2003 Dec]Cow Queueing
    [USACO2003 Dec]Cow Queueing数数的梦 (基础水数位DP带注释!)
    后缀数组模版+注释
    bzoj1690/poj3621[Usaco2007 Dec]奶牛的旅行
    bzoj1731/poj3169[Usaco2005 dec]Layout 排队布局
    bzoj2467[中山市选2010]生成树
    bzoj1594[Usaco2008 Jan]Haybale Guessing猜数游戏
    poj 1035 -- Spell checker
    poj 1611 -- The Suspects
  • 原文地址:https://www.cnblogs.com/zgqjymx/p/1975357.html
Copyright © 2011-2022 走看看