文档章节

DB2 v8 db2look导出统计信息问题

N0body
 N0body
发布于 2016/08/30 09:30
字数 733
阅读 33
收藏 0

DB2 v8 db2look生成的用与构造统计信息的SQL有重复语句

DB2 v8 db2look提供了-m参数用于导出统计信息,可用于还原或构造测试优化器行为。 但是我们发现一个很奇怪的问题。db2look生成的用于构造统计信息的SQL语句有完全重复的语句存在。

db2inst1[@db2](http://my.oschina.net/u/736168):>db2look -d sample -m -t orders 

-- No userid was specified, db2look tries to use Environment variable USER
-- USER is: DB2INST1
-- The db2look utility will consider only the specified tables 
-- Running db2look in mimic mode
-- This CLP file was created using DB2LOOK Version 8.2
-- Timestamp: Tue Aug 30 08:58:16 BEIST 2016
-- Database Name: SAMPLE         
-- Database Manager Version: DB2/AIX64 Version 8.2.9       
-- Database Codepage: 1386
-- Database Collating Sequence is: UNIQUE


CONNECT TO SAMPLE;

---------------------------------------------

-- Mimic Tables, Columns, Indexes and Column Distribution

---------------------------------------------

-- Mimic table ORDERS


# 这里开始是第一部分
RUNSTATS ON TABLE "DB2INST1    "."ORDERS" ;

UPDATE SYSSTAT.INDEXES
SET NLEAF=-1,
    NLEVELS=-1,
    FIRSTKEYCARD=-1,
    FIRST2KEYCARD=-1,
    FIRST3KEYCARD=-1,
    FIRST4KEYCARD=-1,
    FULLKEYCARD=-1,
    CLUSTERFACTOR=-1,
    CLUSTERRATIO=-1,
    SEQUENTIAL_PAGES=-1,
    PAGE_FETCH_PAIRS='',
    DENSITY=-1,
    AVERAGE_SEQUENCE_GAP=-1,
    AVERAGE_SEQUENCE_FETCH_GAP=-1,
    AVERAGE_SEQUENCE_PAGES=-1,
    AVERAGE_SEQUENCE_FETCH_PAGES=-1,
    AVERAGE_RANDOM_PAGES=-1,
    AVERAGE_RANDOM_FETCH_PAGES=-1,
    NUMRIDS=-1,
    NUMRIDS_DELETED=-1,
    NUM_EMPTY_LEAFS=-1
WHERE TABNAME = 'ORDERS' AND TABSCHEMA = 'DB2INST1    ';

...
# 奇怪的问题在这里,输出中,完全一致的SQL语句出现了两次

-- Mimic table ORDERS 

# 这里开始是第二部分
RUNSTATS ON TABLE "KGDB    "."ORDERS" ;

UPDATE SYSSTAT.INDEXES
SET NLEAF=-1,
    NLEVELS=-1,
    FIRSTKEYCARD=-1,
    FIRST2KEYCARD=-1,
    FIRST3KEYCARD=-1,

我们通过逐条对比第一部分和第二部分的SQL语句,发现它们是完全一样的。

这里有两个问题,我们导入统计信息,除了还原原有的统计信息外,还有一个目的是节省时间,用runstats收集统计信息,对大表来说,时间还是非常可观的。

但生成的SQL语句的最开始却是进行runstats,这是为什么呢?接下来的SQL语句给了我们答案,这里用 了update语句来’导入‘旧的统计信息。假设,我们不在开始的部分进行runstats的操作,如果恰好表完全没有收集过统计信息,我们可以预见,update的操作会失败,统计信息导入操作也会失败。

第二个问题是,为什么需要执行两次runstats和两次的update操作。 这个问题,没有找到确切的答案,但是我们从v9.7上发现一些蛛丝马迹。

DB2 v9.7 db2look生成的用与构造统计信息的SQL正常

我们通过在v9.7上用db2look生成的用与构造统计信息的SQL语句,发现该SQL语句正常,只有一次runstats和一次的upate操作。因此我们猜测v8生成重复的SQL语句,可能是v8的bug。

是否可以做的更好

db2look生成的用于构造SQL语句的脚本,是否可以不包含runstats语句,我们可以把update语句换成一个delete和一个update语句?直接写入统计信息数据,减少runstats的时间。

© 著作权归作者所有

N0body
粉丝 5
博文 54
码字总数 16700
作品 0
深圳
数据库管理员
私信 提问
db2look和db2move简单实例

db2look和db2move简单实例 --- 建库 create database dbname on filesystemlocation using codeset utf-8 territory cn --- 删库 db2 drop db db_name (若数据库正在使用, 需要先执行以下命令......

huazhixu123
2017/11/02
0
0
db2look导出ddl 详细用法(转)

DB2的db2look命令诠释如下: db2look 版本 8.2 db2look:生成 DDL 以便重新创建在数据库中定义的对象 语法: db2look -d DBname [-e] [-u Creator] [-z Schema] [-t Tname1 Tname2...TnameN]...

wangxuwei
2018/05/18
206
0
【玩转DB2】一、DB2常用命令

首先自我介绍:我是小可!哈哈,我看云栖关于DB2文章很少,正好我也是在做数据仓库,平时用到的一些东西给大家分享一下!有问题记得评论提出哦!也可以加我的技术交流群:127591054和企鹅联系...

小可同学
2018/02/09
0
0
DB2 SQL 命令集锦

DB2 SQL 命令集锦 摘自:http://m.blog.csdn.net/article/details?id=7449035 如有侵权请留言删除,谢谢! 1、数据操作语言(DML:select,delete,insert,update) <1>查询数据库目录: db2 li...

飞雪无痕
2016/07/10
73
0
DB2数据库从Linux备份到Win7里还原

概述:用 db2look + db2move 进行数据库迁移 涉及的两个操作系统:Redhat6.5win7 db2inst[@localhost ~]$ uname -aLinux localhost.localdomain 2.6.32-431.el6.x8664 #1 SMP Sun Nov 10 22:......

BG2KNT
2018/10/25
29
0

没有更多内容

加载失败,请刷新页面

加载更多

一起来学Java8(五)——接口默认方法

Java8新加入一个特性,允许在接口方法中给定一个默认实现。前提是在方法前面加一个default关键字。 public interface InterfaceMethod {default void say() {System.out.println("hello...

猿敲月下码
13分钟前
7
0
weed3-2.3.3.查询之缓存控制

Weed3 一个超轻量级ORM框架(只有0.1Mb哦) 源码:https://github.com/noear/weed3 源码:https://gitee.com/noear/weed3 缓存控制,是查询中的重点 框架提供的是控制服务。而非缓存服务本身...

刘之西东
17分钟前
9
0
Java Web 中对 ServletRequest 的一些非常规操作解决方案

1. 前言 ServletRequest 是我们搞 Java Web 经常接触的 Servlet Api 。有些时候我们要经常对其进行一些操作。这里列举一些经常的难点操作。 2. 提取 body 中的数据 前后端交互我们会在 body...

码农小胖哥
今天
33
0
《Dual Encoding U-Net for Retinal Vessel Segmentation》阅读笔记-MICCAI2019

作者:Bo Wang1,2, Shuang Qiu2, and Huiguang He1,2,3 目的:Retinal Vessel Segmentation is an essential step for the early diagnosis of eye-related diseases, such as diabetes and ......

JungleKing
今天
32
0
一次看懂 Https 证书认证

TLS > 传输层安全性协定 TLS(Transport Layer Security),及其前身安全套接层 SSL(Secure Sockets Layer)是一种安全协议,目的是为网际网路通信,提供安全及数据完整性保障。 如图,TLS...

极客收藏夹
今天
36
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部