打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
DB2 SQL语句性能调优利器- explain tool (部分转载)
userphoto

2010.04.05

关注
DB2 SQL语句性能调优利器- explain tool (部分转载)
当我们发现某个SQL语句执行很慢时,可以通过查看它的访问计划来定位原因,如是否执行了合适的索引、是否采用了正确的连接方法等。但是我们发现很多用户对访问计划的生成和解释工具的使用存在很多疑惑,本文通过一些实例来解释具体的用法,希望对大家有所帮助。(文中后段引用的文章虽然有些翻译的比较拗口,但总体上还是不错的,可以参考)
 
步骤1. 创建explain表
访问计划的采集和评估是通过一些explain命令和工具实现的,在采集和评估之前需要先创建一些数据表来存放解释数据。在<db2_inst>/sqllib/misc下有个文件叫EXPLAIN.DDL
db2 connect to <db>
db2 -tvf <db2_inst>/sqllib/misc/EXPLAIN.DDL (unix和linux下注意大小写)
在当前数据库中会生成9张解释表,第2步采集的解释数据会存放到这些表中。
 
步骤2. 采集explain数据和explain snapshot数据
explain数据包含关于一条 SQL 语句的访问计划的详细信息。此信息跨多个不同的解释表存储。
explain shapshot数据包含一条 SQL 语句的当前内部表示以及所有相关信息。此信息存储在 EXPLAIN_STATEMENT 解释表的 SNAPSHOT 列中。
explain和explain snapshot的解释数据采集有如下几种方法:
执行 EXPLAIN SQL 语句
设置 CURRENT EXPLAIN MODE 特殊寄存器/CURRENT EXPLAIN SNAPSHOT 特殊寄存器  
在 PRECOMPILE 或 BIND 命令中使用 EXPLAIN 或 EXPLSNAP 绑定选项 Explain SQL:
explain语句为单条动态SQL语句收集解释数据,如
explain plan for "select * from employee"
-------------------------------------------
Current explain mode为多条动态SQL语句收集解释数据:
>db2 set current explain mode explain (打开注册变量为explain模式)
>db2 "select * from employee"
>db2 "select * from department"
>...
>db2 set current explain mode no (关闭解释模式)
-------------------------------------------
Prep(或延迟bind) ...explain为嵌入式(如SQLC等)SQL语句收集解释数据:
>db2 prep myapp.sqc explain yes explsnap yes
 
步骤3. 查看和评估解释数据
DB2提供了如下几个查看工具,其中db2exfmt最为强大,其余两个可辅助。
 db2expln  db2exfmt  Visual Explain
db2exfmt -d <db> -g tic -s % -n % -# 0 -w -1 -o explain1.txt
具体命令的使用请参看DB2 command reference或信息中心

转载请注明源自www.DB2China.net,请保留版权.
原文地址:http://www.db2china.net/club/thread-6500-1-1.html
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
使用Explain分析SQL
数据架构师:DB2 数据仓库性能,第 2 部分
IBM developerWorks 中国 : 数据库性能调优专题
DB2 for z/OS 应用程序性能分析
关于SQL固定服务器角色和固定数据库角色
SQL 性能调优 set statistics io
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服