DB2执行计划的创建使用和更新.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
DB2执行计划的创建使用和更新

我们发现某个SQL语句执行很慢时,可以通过查看它的访问计划来定位原因,如是否执行了合适的索引、是否采用了正确的连接方法等。但是我们发现很多用户对访问计划的生成和解释工具的使用存在很多疑惑,本文通过一些实例来解释具体的用法,希望对大家有所帮助。 -- 如果没有建立过执行计划表,要先建立执行计划表(连接数据库并执行脚本文件EXPLAIN.DDL) db2home=/tw1_db2home/db2inst1 db2 connect to dssdw db2 -tvf ${db2home}/sqllib/misc/EXPLAIN.DDL (在当前数据库中会生成9张解释表,采集的解释数据会存放到这些表中。) -- 解释表 EXPLAIN_ARGUMENT 包含所用各独立操作符的独特特征(如果存在的话)。 EXPLAIN_INSTANCE 包含所解释的 SQL 语句的源的基本信息,还有关于进行解释的环境的信息。(EXPLAIN_INSTANCE 表是所有解释信息的主要控制表。其它解释表中的各行数据显式地链接到该表中的各行。) EXPLAIN_OBJECT 包含关于为 SQL 语句生成的访问计划所需的数据对象的信息。 EXPLAIN_OPERATOR 包含 SQL 编译器为满足 SQL 语句而需的所有操作符。 EXPLAIN_PREDICATE 包含确定特定操作符应用哪些谓词的相关信息。 EXPLAIN_STATEMENT 包含在得到不同级别的解释信息时存在的 SQL 语句文本。用户输入的原始 SQL 语句存储在该表中,另外还有 DB2 Optimizer 用于选择满足 SQL 语句的访问计划的版本。(后一种版本可能与原始版本的语句略有差异,因为 SQL Precompiler 可能已通过额外的谓词重写和/或增强了该语句。) EXPLAIN_STREAM 包含关于各单独操作符和数据对象之间存在的输入输出数据流的信息。(数据对象本身显示于 EXPLAIN_OBJECT 表中,而数据流中涉及的操作符可在 EXPLAIN_OPERATOR 表中找到。) -- 开始和关闭执行计划模式 db2 connect to dssdw db2 set current explain mode explain (这点和Oracle里的10046及sql_trace一样,此过程中的sql执行将被trace) db2 set current explain mode no (这里和ORACLE的sql_trace false, event off一样了) -- 查找存储过程所对应的程序包的名称 SELECT CHAR(PROCSCHEMA,20) AS PROCSCHEMA, -- 模式名称 CHAR(PROCNAME,20) AS PROCNAME, -- 存储过程名称 CHAR(B.BNAME,20) AS PKGNAME -- 绑定包名称 FROM SYSCAT.PROCEDURES A JOIN SYSCAT.ROUTINEDEP B ON A.SPECIFICNAME = B.ROUTINENAME WHERE PROCSCHEMA=KF2 AND PROCNAME=EXPLAINPLAN_TEST WITH UR; -- 查看执行计划 (1) db2expln -d 数据库名 -c 模式名称 -p 绑定包名称 -s 0 -g -t -o 输出文件 如: db2 connect to dssdw db2 set current explain mode explain db2expln -d dssdw -c KF2 -p P0560833 -s 0 -g -t -o explainplan.out (-s 0 是指分析所有的SQL命令 -g 是指给出存取计划的图形输出(用字符模拟的) -t 是指同时打印到终端屏幕) db2 set current explain mode no (2) db2exfmt -d 数据库名 -g TIC -w -1 -n % -s % -# 0 -o 输出文件 如: db2 connect to dssdw db2 set current explain mode explain db2 -tvf Input file with an SQL statement ended with a semicolon, 如select * from t1; db2 set current explain mode no

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档