`
javathinker
  • 浏览: 227545 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

如何使用REORG TABLE命令优化数据库性能

阅读更多

总结了一下REORG的操作经验

当数据库里某个表中的记录变化量很大时,需要在表上做REORG操作来优化数据库性能。
值得注意的是,针对数据库对象的大量操作,如反复地删除表,存储过程,会引起系统表中数据的频繁改变,在这种情况下,也要考虑对系统表进行REORG操作。

由于DB2使用CBO作为数据库的优化器,数据库对象的状态信息对数据库使用合理的ACCESS PLAN至关重要。

一个完整的REORG表的过程应该是由下面的步骤组成的:
RUNSTATS->REORGCHK->REORG->RUNSTATS->BIND或REBIND

0执行下面命令前要先连接数据库

1RUNSTATS
由于在第二步中REORGCHK时可以对指定的表进行RUNSTATS操作(在REORGCHK时指定UPDATESTATISTICS),所以第一步事实上是可以省略的。

2REORGCHK
REORGCHK命令的语法如下:
>>-REORGCHK----+----------------------------+------------------->
|.-UPDATE--.|
'--+-CURRENT-+---STATISTICS--'

>-----+---------------------------+----------------------------><
|.-USER-------.|
'-ONTABLE--+-SYSTEM-----+--'
+-ALL--------+
'-table-name-'

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

如果数据库中数据量比较大,在生产系统上要考虑REORGCHK的执行时间可能较长,需安排在非交易时间执行。

可以分为对系统表和用户表两部分分别进行REORGCHK:

1)针对系统表进行REORGCHK
db2reorgchkupdatestatisticsontablesystem
使用UPDATESTATISTICS参数指定数据库首先执行RUNSTATS命令。

2)针对用户表进行REORGCHK
db2reorgchkupdatestatisticsontableuser

下面是执行的部分结果
db2reorgchkupdatestatisticsontableuser
执行RUNSTATS....


表统计信息:

F1:100*OVERFLOW/CARD<5
F2:100*(EffectiveSpaceUtilizationofDataPages)>70
F3:100*(RequiredPages/TotalPages)>80

SCHEMANAMECARDOVNPFPACTBLKTSIZEF1F2F3REORG
----------------------------------------------------------------------------------------
DB2INST1STAFF---------*-
...

索引统计信息:

F4:CLUSTERRATIO或正常化的CLUSTERFACTOR>80
F5:100*(KEYS*(ISIZE+9)+(CARD-KEYS)*5)/((NLEAF-NUMEMPTYLEAFS)*INDEXPAGESIZE)>50
F6:(100-PCTFREE)*((INDEXPAGESIZE-96)/(ISIZE+12))**(NLEVELS-2)*(INDEXPAGESIZE-96)/(KEYS*(ISIZE+9)+(CARD-KEYS)*5)<100
F7:100*(NUMRIDSDELETED/(NUMRIDSDELETED+CARD))<20
F8:100*(NUMEMPTYLEAFS/NLEAF)<20

SCHEMANAMECARDLEAFELEAFLVLSISIZENDELKEYSF4F5F6F7F8REORG
-------------------------------------------------------------------------------------------------
表:DB2INST1.STAFF
DB2INST1ISTAFF-----------------
...

从上面的例子来看,对于表DB2INST1.STAFF,根据统计公式F2计算结果,有必要对表进行REORG。

3REORGTABLE
REORGTABLE命令的语法如下:
>>-REORGTABLE--table-name----+--------------------+------------>
'-INDEX--index-name--'

>-----+-----------------------+--------------------------------><
'-USE--tablespace-name--'

执行REORG可以考虑分为表上有索引和没有索引两种情况:

1)如果表上有索引
如表名为DB2INST1.STAFF,索引名为DB2INST1.ISTAFF,命令如下:
db2reorgtabledb2inst1.staffindexdb2inst1.istaffusetempspace1

建议REORG时使用USE参数指定数据重排时使用的临时表空间,否则,REORG工作将会在表所在表空间中原地执行。
如果表上有多个索引,INDEX参数值请使用最为重要的索引名。

2)如果表上没有索引
如表名为DB2INST1.STAFF,SYSIBM.SYSTABLES
db2reorgtabledb2inst1.staffusetempspace1
db2reorgtablesysibm.systablesusetempspace1

4RUNSTATS
RUNSTATS命令的语法如下:
>>-RUNSTATSONTABLE--table-name-------------------------------->

>-----+-+--------------------------------------------------------------------+-+>
|'-WITHDISTRIBUTION--+--------------------------------------------+--'|
|'-AND--+----------+--+-INDEXESALL--------+--'|
|'-DETAILED-''-INDEX--index-name--'|
'-+--------------------------------------------------+-------------------'
'--+-AND-+---+----------+--+-INDEXESALL--------+--'
'-FOR-''-DETAILED-''-INDEX--index-name--'

>-----+--------------------------+-----------------------------><
|.-CHANGE----.|
'-SHRLEVEL--+-REFERENCE-+--'


如果表名为DB2INST1.STAFF,表上有索引,则可以用下面的例子完成RUNSTATS命令:
db2runstatsontabledb2inst1.staffwithdistributionanddetailedindexesall

5(可选)上面命令完成后可以重复第二步,检查REORG的结果,如果需要,可以再次执行REORG和RUNSTATS命令。

6BIND或REBIND
RUNSTATS命令运行后,应对数据库中的PACKAGE进行重新联编,简单地,可以使用db2rbind命令来完成。

db2rbind命令的语法如下:
>>-db2rbind--database--/llogfile----+------+------------------->
'-all--'

.-conservative--.
>-----+-------------------------+--/r--+-any-----------+-------><
'-/uuserid--/ppassword--'


例如,如果数据库名为SAMPLE,执行:
db2rbindsample-ldb2rbind.out

分享到:
评论

相关推荐

    完整的REORG表的过程

    db2 中对于出现死锁或锁超时的解决方案

    db2数据库优化---针对运行统计和重组

    DB2数据库优化针对数据库的runstat(运行统计)和reorg(重组)进行数据库优化

    IBM DB2经典视频教程

    第2周 DB2性能优化方法系统:包括经典三招、性能问题分析、使用PAT方法找到性能瓶颈、硬件规划等。 第3周 DB2性能优化:从监控开始,包括监控方法学、操作系统监控、快照监控、管理试图监控、事件监控器、db2pd工具...

    db2数据库管理常用命令

    针对db2数据库的一些日常管理,如runstates,rbind,reorg,查看分区表信息等等

    关于数据库DB2 常用命令

    0 执行下面命令前要先连接数据库 1 RUNSTATS 由于在第二步中REORGCHK时可以对指定的表进行RUNSTATS操作(在REORGCHK时指定UPDATE STATISTICS),所以第一步事实上是可以省略的。 2 REORGCHK REORGCHK命令的语法...

    Sybase ASE快速参考手册

    2.52 如何执行reorg 系列命令来优化Dol表及其索引? 36 2.53 如何使用sp_sysmon存储过程来查看当前数据库的性能情况? 37 3. 技术专刊 38 3.1 关于Backup Server 38 3.2 Backup Server的名字 41 3.3 Sybase的数据库...

    Sybase ASE快速参考手册.pdf

    2.52 如何执行reorg 系列命令来优化Dol表及其索引? 41 2.53 如何使用sp_sysmon存储过程来查看当前数据库的性能情况? 41 3. 技术专刊 43 3.1 关于Backup Server 43 3.2 Backup Server的名字 46 3.3 Sybase的...

    DB2基本命令 实例管理和常用dml

    db2 reorg table ydd db2 runstats on table ydd with distribution and indexes all 13.导出表数据 db2 export to c:\dftz.txt of del select * from dftz db2 export to c:\dftz.ixf of ixf select * from ...

    restfultiger-reorg:重组restfultiger的文件

    悠闲的老虎我从 Mean Machine 中学到的制作一个宁静的应用程序

    Sybase ASE 15.7 开发文档:系统管理指南(卷二)

    第 10 章 使用 reorg 命令 第 11 章 检查数据库一致性 第 12 章 制定备份和恢复计划 第 13 章 备份和恢复用户数据库 第 14 章 恢复系统数据库 第 15 章 存档数据库访问 第 16 章 自动扩展数据库 第 17 章 使用阈值...

    pg_reorg:PostgreSQL在线表聚类工具-开源

    pg_reorg可以在不保留任何锁的情况下重新组织PostgreSQL数据库上的表,以便您可以检索或更新正在重新组织的表中的行。 开发此模块是为了更好地替代CLUSTER和VACUUM FULL。 ------- pg_reorg位于pgfoundry,但是已经...

    db2数据库入门教程(官方中文版)

    2.2.1数据库分区............................................................................................................23 2.2.2连接集中器(Connection Concentrator ).................................

    深度分析:DB2性能调优

    DB2性能调优 内容提纲 1.The DB2 Optimizer 2.SQL Coding Strategies and Guidelines 3.DB2 Catalog 4.Filter Factors for Predicates 5.Runstats and Reorg Utilities

    DB2性能调优

    DB2性能调优 The DB2 Optimizer SQL Coding Strategies and Guidelines DB2 Catalog Filter Factors for Predicates Runstats and Reorg Utilities

    IBM《信息管理》2012年月刊免费下载

    位于丹麦奥胡斯的维斯塔斯风力系统公司使用 IBM InfoSphere BigInsights 对风速、气温、湿度、大气压以及降水等特定于位置的数据进行分析,以预测风力农场的性能。这有助于他们在最佳位置安装风力涡轮机,从而能以...

    pg_repack:用最少的锁重新组织PostgreSQL数据库中的表

    pg_repack的启动效率很高,其性能可与直接使用CLUSTER媲美。 请检查文档(在doc目录中或)以获取安装和使用说明。pg_reorg呢? pg_repack是pg_reorg项目的一个分支,事实证明它非常成功。 不幸的是,自2011年底以来...

    db2数据库入门官方教程(中文版)

    2.2.1数据库分区............................................................................................................23 2.2.2连接集中器(Connection Concentrator ).................................

    DB2最新维护手册,从豆丁买来的。

    目录 DB2维护手册 1 一、 DB2入门-数据库实例 4 二、 DB2日常维护日操作 12 1、 检查管理服务器是否启动 12 ...九、 附:使用 CLP 捕获数据库运行状况快照 21 十、 IBM DB2 日常维护汇总 22 十一、 DB2常用命令集 28

    基于FPGA的YOLOv2加速器设计与优化(FPGA的源码)

    基于FPGA的YOLOv2加速器设计与优化 根据对YOLOv2网络的分析,除路由层外,大部分层都是串行处理的。路由层可以通过预先设置一个特定的地址来实现。 从加速器的角度来看,需要做的工作就是按顺序与内存进行交互(读取...

    DB2性能调优资料,解决SQL执行慢的问题

    从网上找的一些关于DB2存储过程调优的方法和例子,希望对大家有帮助

Global site tag (gtag.js) - Google Analytics