ACCESSdb2 reorg详解

reorgchk,检查table index 是否要做。reorg
重组,重新放置数位置。runstats 统计信息,可以优化查询器

 

 

一个整机的平凡维护规范好帮忙 DBA
理顺每天用的操作,以便更好之监控与维护数据库,保证数据库底健康、安全、高效运作,防止有破绽百出还发生。

由DB2使用CBO作为数据库的优化器,数据库对象的状态信息对数据库使用合理的
ACCESS PLAN至关重要。DB2
优化器使用目录统计信息来确定其他给一定查询的超级访问方案。如果有关说明要索引的统计信息已经不合时宜或者未完全,则会导致优化器选择无是最佳的方案,并且会落
执行查询的快慢。当数据库里某表中的笔录变化量很充分时,需要以表上做REORG操作来优化数据库性能

平等、完整的REORG表的经过

值得注意的是,针对数据库对象的大度操作,如反复地去表,存储过程,会滋生系统表中数据的往往转移,在这种状态下,也只要考虑针对系统阐明展开REORG操作。一个完的REORG表的经过应该是出于下的手续做的:

RUNSTATS ->   REORGCHK ->   REORG ->   RUNSTATS ->
BIND或REBIND

流动: 执行下发号施令前使先连续数据库

1 RUNSTATS

  
由于当其次步中REORGCHK时得本着点名的表进行RUNSTATS操作(在REORGCHK时指定UPDATE
STATISTICS),所以首先步事实上是可以简简单单的。

2 REORGCHK

  
在对表数据开展过多转后,逻辑上连续的多少或许会见放在不总是的情理数据页上,在不少安插操作创建了溢起记录时进一步如此。按这种办法组织数据经常,数据库管理器必须执行另外读操作才会顾顺序数据。另外,在剔除大量行后,也待实践另外的宣读操作。

申组成操作会整理数据碎片来减浪费之半空中,并对行进行再排序为联合溢起记录,从而加速数据访问速度并最后提高查询性能。还好指定根据特定索引来重新排序数据,以便查询时经至少软数据读取操作就足以拜数。

下列任何因素还或指示用户应重组表:

1)自上次重组表之后,对该表进行了汪洋底插入、更新和去活动 。

2)对于以具有高集群率的目录的查询,其性质有了家喻户晓变化 。

3)在执行 RUNSTATS 命令以刷新统计信息后,性能没得到改良。

4)REORGCHK 命令指示要重组表(注意:在某些情况下,REORGCHK
总是建议重组表,即使以实践了成后为是如此)。例如,如果用 32KB
页大小,并且平均记录长度为 15 字节且每页最多带有 253 长条记下,则每页具有
32700- (15 x 253)=28905 只非用字节。这表示大约 88%
的页面是可用空间。用户承诺分析 REORGCHK
的提议并对执行重组所待的工本平衡利益。

5)db.tb_reorg_req(需要组合)运行状况指示器处于 ATTENTION
状态。此运行状况指示器的集合详细信息描述通过结合可获取利益的表和索引的列表。

REORGCHK
命令归来有关数据组织的统计信息,并且可以建议乃是否需要组合特定表。然而,定期或者当特定时间针对目录统计信息表运行特定查询好提供性历史记录,该记录使用户可窥见可能拥有更宽广性能隐含的矛头。

DB2 V9.1
引入了自动重组效应,可以对表和目录进行机动重组。自动重组通过动用
REORGCHK
公式来规定何时要对表进行组合。它会定期评估曾更新了统计信息之申,以便了解是否用结合。

REORGCHK命令的语法如下:

.                           -UPDATE STATISTICS–.

>>-REORGCHK–+——————–+—————————–>

                         ‘-CURRENT STATISTICS-‘

            .-ON TABLE USER—————–.

>–+——————————-+—————————><

            ‘-ON–+-SCHEMA–schema-name—+-‘

                    | .-USER——-. | 

                    ‘-TABLE–+-SYSTEM—–+-‘ 

                       +-ALL——–+ 

                       ‘- table-name-‘

脚我们来拘禁一下梯次选项之含义:

UPDATE STATISTICS:更新表的统计数据,根据该统计数据判断是否要重组表。

CURRENT STATISTICS:根据当下说明统计数据判断是否需要重组表。

TABLE table_name:对单个表进行剖析。

TABLE ALL:对数据库有的表明进行分析。

TABLE SYSTEM:对系阐发进行剖析。

TABLE USER:对目前用户模式下的所有表进行分析。

若数据库被数据量比较坏,在生产体系及只要考虑REORGCHK的实践时间或许比较丰富,需配置在无交易时间执行。

足分为对系统表和用户表两局部各自开展REORGCHK:

1) 针对网阐明进行REORGCHK

db2 reorgchk update statistics on table system

行使UPDATE STATISTICS参数指定数据库首先执行RUNSTATS命令。

2) 针对用户表展开REORGCHK

db2 reorgchk update statistics on table user

REORGCHK是因统计公式计算表是否用整治。对于每个表有3独统计公式,对索引发生3独统计公式(版本8始发发5单公式),如果公式计算结果该表需重整,在输出的REORG字段中相应值为*,否则为-。

reorgchk 所使用的胸怀的设想因素包括:(当查看 reorgchk
工具的输出时,找到用于表底 F1、F2 和 F3 这几乎排,以及用于索引的
F4、F5、F6、F7 和 F8 这几乎排列。如果这些列被之另外一样排有星号
(*),则说明时的表和/或索引超出了阈值。)

F1: 属于涌起记录的行所占的比例。当这比例过 5% 时,在输出的
F1 列中拿生出一个星号 (*)。

F2: 数据页中行使了底空中所占有的比重。当此比例小于 70%
时,在输出的 F2 列上以时有发生一个星号 (*)。

F3: 其中涵盖富含某些记录的多寡的页所占用的比例。当是比例小于 80%
时,在输出的 F3 列上以起一个星号 (*)。

F4: 群集率,即表中同索引有同样顺序的行所占的比例。当这个比重小于
80% 时,那么在出口的F4 列上以发出一个星号 (*)。

F5: 在每个索引页上用于索引键的半空中所占用的比例。当这个比重小于 50%
时,在输出的 F5 列上以发一个星号 (*)。

F6: 可以储存在每个索引级的键的数。当这数字小于 100 时,在输出的
F6 列上以生出一个星号 (*)。

F7: 在一个页中被标记为 deleted 的记录
ID(键)所占用的百分比。当是比重过 20% 时,在出口的 F7
列上用发生一个星号 (*)。

F8: 索引中空叶子页所占据的比例。当是比例过 20% 时,在输出的 F8
列上以起一个星号 (*)。

下面是履行之有的结出

db2 reorgchk update statistics on table user

执行 RUNSTATS ….

申统计信息:

F1: 100 * OVERFLOW / CARD < 5

F2: 100 * (Effective Space Utilization of Data Pages) > 70

F3: 100 * (Required Pages / Total Pages) > 80

SCHEMA    NAME                  CARD    OV    NP    FP ACTBLK    TSIZE
F1 F2 F3 REORG


DB2INST1 STAFF                  –       –     –     –            –     
–   –   – -*-

目录统计信息:

F4: CLUSTERRATIO 或正规的 CLUSTERFACTOR > 80

F5: 100 * (KEYS * (ISIZE + 9) + (CARD – KEYS) * 5) / ((NLEAF – NUM
EMPTY LEAFS) * INDEXPAGESIZE) > 50

F6: (100 – PCTFREE) * ((INDEXPAGESIZE – 96) / (ISIZE + 12)) **
(NLEVELS – 2) * (INDEXPAGESIZE – 96) / (KEYS * (ISIZE + 9) + (CARD –
KEYS) * 5) < 100

F7: 100 * (NUMRIDS DELETED / (NUMRIDS DELETED + CARD)) < 20

F8: 100 * (NUM EMPTY LEAFS / NLEAF) < 20

 

SCHEMA   NAME                 CARD LEAF ELEAF LVLS ISIZE NDEL   KEYS F4
F5 F6 F7 F8 REORG


表:DB2INST1.STAFF    

DB2INST1   ISTAFF             –     –     –     –     –     –       –   
–    –   –   –   – —–

起点的例子来拘禁,对于表DB2INST1.STAFF,根据统计公式F2计算结果,有必要对表进行REORG。

3、对得做的表明进行重组(REORG TABLE)

DB2 V9
可以对表和目录进行机动重组。要开展高效率的数看与获得最佳工作负荷性能,具有组织好的阐明数据是大重点之。在对表数据进行多转后,逻辑上连接
的多少或许会见在不连续的物理数据页上,在诸多安插操作创建了溢起记录时尤其如此。按这种方式组织数量时,数据库管理器必须实行另外读操作才会访问顺序反复
据。另外,在剔除大量行后,也急需实施外的朗诵操作。表重组操作会整理数据碎片来减少浪费之空中,并对行进行更排序为合溢起记录,从而加速数据看速
度并最终提高查询性能。还可指定根据特定索引来重新排序数据,以便查询通过至少次于数据读取操作就足以看数。既而构成系统目录表,也足以组成数据库
表。由 RUNSTATS
收集之统计信息和其他消息并来展示表中的数据分布情况。特别是,通过分析这些统计信息可领略何时要执行哪种类型的咬合。自动重组通过采取
REORGCHK
公式来确定何时要对表进行整合。它见面定期评估曾更新了统计信息的阐发,以便了解是否要组合。如果用组合,则它见面当其间调度对表进行传统结合。这即将
求执行应用程序功能要非针对正在结合的表展开摹写访问。可以动用
auto_reorg、auto_tbl_maint 和 auto_maint
数据库配置参数来启用或剥夺自动重组效应部件。在分区数据库环境遭受,确定实施活动重组与起步自动重组是当目录分区上到位的。只待以目分区上启用数据库
配置参数,就用于靶表所在的装有数据库分区上运行重组。如果用户不极端确定何时以及怎样重组表和目录,则足以用活动重组作为全数据库维护方案的同样片段。

使是 DB2 V8.2.2 以前的本,是绝非自行重组效应的。如果你的数据库是 DB2
V8.2.2 以前的本子,或者想在 DB2 V8.2.2
以后的本里手工运行重组表,可以用命令就。手工做可以以 REORG
命令来完成。

盖脱机方式重组表是收拾表碎片的尽抢方法。重组可减少表所要的空间量并提高多少访问与查询性能。

务必拥有 SYSADM、SYSCTRL、SYSMAINT 或 DBADM 权限,或者必须具有对表的
CONTROL
权限才会更组表。必须备数据库连接才会再次组表。标识需要做的申后,可以本着这些发明运行
REORG 实用程序,并且可以挑选对在这些发明及定义之其它索引运行该实用程序。

REORG TABLE命令的语法如下:

>>-REORG
TABLE–table-name—-+——————–+————>

                               ‘-INDEX–index-name–‘

 

>—–+———————–+——————————–><

      ‘-USE–tablespace-name–‘

 

施行REORG可以考虑分为表上有目录和没索引两种植情形:

1) 如果表及发出目录

如若表名为DB2INST1.STAFF,索引名为DB2INST1.ISTAFF,命令如下:

db2 reorg table db2inst1.staff index db2inst1.istaff use tempspace1

提议REORG时以USE参数指定数量重排时采取的临时表空间,否则,REORG工作拿会当表所在表空间中原地尽。

假使表上产生差不多只目录,INDEX参数值请动最根本的索引名。

2) 如果表及从来不索引

比方表名为DB2INST1.STAFF, SYSIBM.SYSTABLES

db2 reorg table db2inst1.staff use tempspace1

db2 reorg table sysibm.systables use tempspace1

运 REORG TABLE 命令成 RHETTE.TEST 表

C:\> db2 reorg table rhette.test

DB20000I   REORG 命令成就。

如使用临时表空间 TEMPSPACE1 重组表 RHETTE.TEST,可以于 DB2CLP
窗口中行使带 USE TEMPSPACE1 选项的 REORG TABLE 命令。

采取临时表空间 TEMPSPACE1 重组 RHETTE.TEST 表

C:\> db2 reorg table rhette.test   use TEMPSPACE1

DB20000I   REORG 命令成就。

下我们当示例表 TEST 上开创一个索引 A1,构建以 ID
列上。此时我们怀念如果成表并根据索引 A1 对行进行重新排序,可以使带 INDEX
选项的 REORG TABLE 命令。

据悉索引 A1 重组 RHETTE.TEST 表

C:\> db2 create index   a1 on rhette.test(id)

DB20000I   SQL 命令成完成。

C:\> db2 reorg table rhette.test   index a1

DB20000I   REORG 命令成就。

倘若想用 SQL 调用语句重组表,请用 ADMIN_CMD 过程发生 REORG TABLE
命令。

采取 SQL 调用语句重组 RHETTE.TEST 表

C:\> db2 call sysproc.admin_cmd ( ‘reorg table rhette.test index
a1’ )

返回状态 = 0

比方下 DB2 管理 API 重组表,请动 db2REORG API 。
在重复组表之后,应采访有关表的统计信息,以便优化器具有极其精确的数目来评估查询访问方案。另外,记住在分区数据库环境面临,如果想当具有节点运行命令,需要用
db2_all 命令。

由此删除和插操作对表进行创新后,索引的属性会下滑,其展现方法如下:

1)叶子页分段。

叶子页为隔开之后,由于要读取更多之叶子页才能够访存表页,因此 I/O
操作成本会大增。

2)物理索引页的相继不再与这些页上之键顺序相兼容(此称呼不良集群索引)。

叶子页出现不良集群情况后,顺序预取操作的频率将跌落,因此会促成更多的 I/O
等待。

3)形成的目录大于其无与伦比可行之级别反复。

以斯情况下答应做索引。

使在创建索引时设置了 MINPCTUSED
参数,则以去某个键且可用空间小于指定的比例时,数据库服务器会活动合并索引叶子页。此过程叫联机索引整理碎片。但是,要复原索引集群和可用空间和降低叶级别,请动下列其中同样栽办法:

1)删除并再创设索引。

2)使用 REORG INDEXES 命令一道重组索引。

坐此措施允许用户以重建表索引内对表进行读写操作,所以在生育环境受到或者要选择这办法。

3)使用允许脱机重组表及其索引的挑项运行 REORG TABLE 命令。

每当动 ALLOW WRITE ACCESS 选项运行 REORG INDEXES
命令时,如果还要同意对点名的阐明进行读写访问,则会重建该表的拥有索引。进行组合时,对基础表所犯的别样将会晤潜移默化至目的变更都以记录在
DB2
日志中。另外,如果来另内部内存缓冲区空间可供使用,则还将这些反放在这么的内存空间中。重组将拍卖所记录之改以便在重建索引时与当前形容活动保持和
步更新。内部内存缓冲区空间是冲需要打实用程序堆着分红的指定内存区域,它用来储存对正在创造或者成的目所犯的变动。使用外存缓冲区空间使索引重组操
作能够由此如此的措施来处理反,即先直接从内存读取,然后读取日志(如有必要),但读取日志的时间如晚得多。在做操作就后,将释放所分配的内存。重
组完成后,重建的目录可能无是顶尖集群的目。如果为索引指定
PCTFREE,则在组合中,每页上全会保留相应比例的空中。

对于分区表,支持对各个索引进行协同索引重组和免。要针对一一索引进行重组,指定索引名:REORG
INDEX index_name for TABLE table_name

对空间引得或多维集群(MDC)表,不支持下 ALLOW WRITE
方式的齐索引重组。

流淌: REORG INDEXES 命令的 CLEANUP ONLY 选项不能够完全结合索引。 CLEANUP
ONLY ALL
选项将除那些标记为“删除”且被当一旦落实的键。此外,它还用释放具有标记为“删除”且受当要兑现的键所在的页。在释放页后,相邻之叶子页将会联合,
前提是如此做可以以统一页上至少留有 PCTFREE 可用空间。 PCTFREE
是靠于创建索引时为该定义的可用空间百分比。 CLEANUP ONLY PAGES
选项才删除那些标记为“删除”且被认为要兑现的所有键所于的页。

用 CLEANUP ONLY
选项针对分区表底目进行组合时,支持外访问级别。如果无指定 CLEANUP ONLY
选项,则缺省访问级别 ALLOW NO ACCESS 是绝无仅有支持的访问级别。

REORG INDEXES 具有下列要求:

1)对索引和表具有 SYSADM、SYSMAINT、SYSCTRL 或 DBADM 权限,或者具有
CONTROL 特权。

2)用于存储索引的表空间的可用空间数据相等索引的当下高低

当来 CREATE TABLE 语句子时,考虑当大型表空间中做索引。

3)其他日志空间

REORG INDEXES
需要记录该倒。因此,重组或者会见败,尤其是以系繁忙和笔录其他并发活动经常。

横流: 如果具有 ALLOW NO ACCESS 选项的 REORG INDEXES ALL
命令运行失败,则会标记索引无效而是起操作不可取消。但是,如果拥有 ALLOW
READ ACCESS 选项之 REORG 命令或有 ALLOW WRITE ACCESS 选项的 REORG
命令运行失败,则足以还原原来的目对象。另外还欲小心,在 DB2 V9
开放平台上对新引入的表分区功能来说,不可知同重组分区表。

4.对表和目录进行 runstats

DB2
优化器使用目录统计信息来确定其他给得查询的最佳访问方案。如果有关说明要索引的统计信息就不合时宜或者不整,则会招优化器选择无是顶尖的方案,并且会落
执行查询的进度。但是,决定使为加的劳作负荷收集哪些统计信息是可怜复杂的工作,并且要这些统计信息保障最新是同码十分费时间的任务。

早年,建议针对一个频繁进行大气翻新、插入或者去除操作的表明展开
RUNSTATS,建议以重复组表之后运行 RUNSTATS 。我们还是通过手工执行 RUNSTATS
命令,或者经 DB2 任务中心调度执行 RUNSTATS
命令来收集表的统计信息为改善数据库性能。现在 DB2 V9
又新增了机关收集统计信息功能,
自动采集统计信息经过收集最新的表统计信息来改进数据库性能。 DB2
首先确定工作负荷需要哪统计信息及要更新哪些统计信息,然后,在后台自动调用
RUNSTATS 实用程序以确保采并保护正确的统计信息。然后,DB2
优化器根据标准的统计信息来选访问方案。

自打 IBM DB2 版本 9.1
开始,在开立新的数据库时,缺省状态下会启用自动收集统计信息(RUNSTATS)功能。这表示
DB2 数据库管理器将确定是否用创新数据库统计信息。然后,RUNSTATS
实用程序会冲需要以后台自动运行,以确保新型的数据库统计信息可用。用户以开创数据库后,可以经以数据库配置参数
AUTO_RUNSTATS 设置也 OFF
来受用电动采集统计信息。需要注意的是,将数据库从本 8 迁移到本 9.1
时,不见面活动启用这个作用。要在曾搬迁的数据库中应用这功效,必须手工进行启用。

通过采用机动统计信息征集成效,可以于 DB2
确定是否要创新数据库统计信息。在启用了自动统计信息征集成效的景下,DB2
将自动在后台运行 RUNSTATS 实用程序以确保新型的数据库统计信息但用.

RUNSTATS命令的语法如下:

>>-RUNSTATS ON
TABLE–table-name——————————–>

>—–+-+——————————————————————–+-+>

      | ‘-WITH
DISTRIBUTION–+——————————————–+–‘ |

      |                      ‘-AND–+———-+–+-INDEXES
ALL——–+–‘    |

      |                             ‘-DETAILED-‘
‘-INDEX–index-name–‘       |

     
‘-+————————————————–+——————-‘

        ‘–+-AND-+—+———-+–+-INDEXES ALL——–+–‘

           ‘-FOR-‘   ‘-DETAILED-‘ ‘-INDEX–index-name–‘

>—–+————————–+—————————–><

      |            .-CHANGE—-. |

      ‘-SHRLEVEL–+-REFERENCE-+–‘

使没启用自动统计信息意义,那么我们还得手工对要之表和索引使用
runstats 命令,更新统计信息。比如想对 TEST 表和目录运行统计信息,发出“
runstats on table test and index all ” 。

本着表 TEST 以及索引更新统计信息

C:\> db2 runstats on table rhette.test and index all

DB20000I   RUNSTATS 命令成就。

征集索引统计信息以允许优化器评估是否当下索引来分析查询。如果想采访索引统计信息,必须连续到包含表及目录的数据库并负有下列其中一个权力级别:sysadm
、sysctrl 、sysmaint 、dbadm 、对表的 CONTROL 特权 。

带动 SAMPLED DETAILED 选项实行 RUNSTATS 命令需要 2MB 统计信息堆。将叠加的
488 个 4K 页分配受也夫附加内存需求设置的 stat_heap_sz
数据库配置参数。如果该堆看起最为小,则 RUNSTATS
在尝收集统计信息之前见面返回一漫漫错误。

今天咱们以 DB2CLP 窗口中,连上演示数据库 SAMPLE,在示范数据库被是表
RHETTE.PROJECT,其有点儿只目录 PK_PROJE CT 和 XPROJ2,我们只要创索引
PK_PROJE CT 和 XPROJ2 的详尽统计信息,可以来带 AND DETAILED INDEXES
ALL 选项的 RUNSTATS 命令。创建索引 PK_PROJECT 和 XPROJ2 的详细统计信息

C:\> db2 RUNSTATS ON TABLE rhette.project AND DETAILED

INDEXES ALL DB20000I   RUNSTATS 命令成完成。

指令成完成。如果我们纪念创立两独目录的详实统计信息,但是未思吃太多的资源和时间,可以应用采样的法子要无是对每个索引条目执行详细计算。

创造索引 PK_PROJECT 和 XPROJ2 的详尽统计信息,使用采样方式

C:\> db2 RUNSTATS ON TABLE rhette.project AND SAMPLED DETAILED

INDEXES ALL DB20000I   RUNSTATS 命令成做到。

命令成就。如果一旦创索引上之事无巨细采样统计信息和说明底布统计信息,以便索引和表统计信息相同,可以利用带来
WITH DISTRIBUTION 选项之 RUNSTATS 命令。

采表 rhette.project 的详细统计信息

C:\> db2 RUNSTATS ON TABLE rhette.project

WITH DISTRIBUTION ON KEY COLUMNS AND SAMPLED

DETAILED INDEXES ALL DB20000I   RUNSTATS 命令成完成。

一声令下成做到。如果想圆收集表和目录的信息,而非是动抽样的方收集表
rhette.project 的事无巨细统计信息

C:\> db2 RUNSTATS ON TABLE rhette.project WITH DISTRIBUTION

AND DETAILED INDEXES ALL DB20000I   RUNSTATS 命令成就。

5 (可选)
上面命令就后好还第二步,检查REORG的结果,如果急需,可以再次实施REORG和RUNSTATS命令。

6 BIND或REBIND

RUNSTATS命令运行后,应针对数据库被之PACKAGE进行重新联编,简单地,可以下db2rbind命令来完成。

 

db2rbind命令的语法如下:

>>-db2rbind–database–/l
logfile—-+——+——————->

                                     ‘-all–‘

                                       .-conservative–.

>—–+————————-+–/r–+-any———–+——-><

      ‘-/u userid–/p password–‘

如,如果数据库名也SAMPLE,执行:

db2rbind sample -l db2rbind.out

仲、DB2 V8.2 如何配置AUTO_RUNSTATS

1.配置参数

先是保证DBM参数HEALTH_MON是ON,

接下来使用如下命令打开AUTO_RUNSTATS 的开关。

db2 update db cfg using AUTO_MAINT ON AUTO_TBL_MAINT ON
AUTO_RUNSTATS ON

2.设置需要自动RUNSTATS的表明底profile,该profile会纪录为系统表sysibm.systables的STATISTICS_PROFILE列

例如:

db2 runstats on table huangdk.hasales and indexes all tablesample
system(20) set profile only                                             

证明:a.RUNSTATS的语法见《命令指南》

          http://publib.boulder.ibm.com/in … c/core/r0001980.htm

          b.tablesample
是采样runstats的挑项,例子里使用system的点子,采样20%

3.AUTO_RUNSTATS触发条件

布了晚,需要重新于一下实例,然后系统会在第一次等连续要时,去触发AUTO_RUNSTATS,如果表要RUNSTATS,就开始RUNSTATS。

下,系统各隔3时触发AUTO_RUNSTATS

用户可使以下语句检查:

db2 select STATS_TIME,SUBSTR(STATISTICS_PROFILE,1,200) from
sysibm.systables

其中,STATS_TIME列指示最后一软RUNSTATS的时间。

此外,db2diag.log里来这么的音讯:

2004-10-27-16.08.39.007000+480 I30117H327         LEVEL: Event

PID     : 2596                 TID : 3404        PROC : db2fmp.exe

INSTANCE: DB2                  NODE : 000

FUNCTION: DB2 UDB, Automatic Table Maintenance, db2HmonEvalStats,
probe:100

START   : Automatic Runstats: evaluation has started on database
TBCSAMPL

指令自动RUNSTATS已经运行。

 

其三、优化语句的批量赢得

1、查找数据库管理表空间(DMS)

SELECT TBSpace FROM syscat.tablespaces WHERE TBSpaceType = ‘D’ ;

2、DMS下的creator(用户、模式)

SELECT DISTINCT creator

FROM sysibm.systables

WHERE tbspace IN (SELECT TBSpace FROM syscat.tablespaces WHERE
TBSpaceType = ‘D’ );

‘DB2ADMIN’

3、creator下之阐明数据

SELECT creator,count(1)

FROM sysibm.systables

WHERE Type = ‘T’ AND tbspace IN (SELECT TBSpace FROM syscat.tablespaces
WHERE TBSpaceType = ‘D’)

GROUP BY creator ;

–‘DB2ADMIN’    56

4、构造优化脚本

–=============================================================================

(1).reorgchk update statistics on table SCHEMA.TABLE ;

select ‘reorgchk update statistics on table DB2ADMIN.’||rtrim(name)||’;’
from sysibm.systables where creator = ‘DB2ADMIN’ AND Type = ‘T’ AND
tbspace IN (SELECT TBSpace FROM syscat.tablespaces WHERE TBSpaceType =
‘D’)

–=============================================================================

(2).reorg table SCHEMA.TABLE ;

select ‘reorg table DB2ADMIN.’||rtrim(name)||’;’ from sysibm.systables
where creator = ‘DB2ADMIN’ AND Type = ‘T’ AND tbspace IN (SELECT TBSpace
FROM syscat.tablespaces WHERE TBSpaceType = ‘D’)

–=============================================================================

(3).reorg indexes all for table SCHEMA.TABLE ;

select ‘reorg indexes all for table DB2ADMIN.’||rtrim(name)||’;’ from
sysibm.systables where creator = ‘DB2ADMIN’ AND Type = ‘T’ AND tbspace
IN (SELECT TBSpace FROM syscat.tablespaces WHERE TBSpaceType = ‘D’

–=============================================================================

(4).runstats on table SCHEMA.TABLE and indexes
all; 
                                                    

select ‘runstats on table DB2ADMIN.’||rtrim(name)||’ and indexes all;’

from sysibm.systables

where creator = ‘DB2ADMIN’ AND

      Type = ‘T’ AND

    tbspace IN (SELECT TBSpace FROM syscat.tablespaces WHERE TBSpaceType
= ‘D’) ;

相关文章