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

如何使用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

分享到:
评论

相关推荐

    DB2 数据库常用命令

    ### DB2 数据库常用命令详解 #### 一、db2move — 数据库迁移与转换工具 ...通过上述命令和操作,DB2数据库管理员能够有效地管理和优化数据库性能,确保数据库系统在高负载环境下依然保持高效稳定。

    数据库优化(完整版)实用资料.doc

    数据库优化是提升数据库性能的关键环节,它涉及到对数据库的运行统计信息收集(runstats)和重组操作(reorg)。这两个方面对于确保数据库高效运行和优化查询执行计划具有重要作用。 一、runstats runstats 是...

    DB2数据库优化.doc

    DB2 数据库优化是提升数据库性能的关键步骤,主要包括运行统计(Runstats)和重组(Reorg)两大方面。本文将详细介绍这两个概念以及何时和如何执行它们。 **一、Runstats** 1. **Runstats的作用**:Runstats命令...

    DB2数据库常用命令手册

    - 这种方式可以自动生成用于优化数据库性能的脚本文件,简化日常维护工作。 #### 十七、查看数据库对象定义 **命令:** - `db2 look Cd &lt;object_name&gt; Cudb2 Cw &lt;workspace&gt; Ce Coa.txt`:查看对象定义并输出到文件...

    sybase数据库快速参考手册

    使用`reorg`命令优化表和索引。 **2.53 如何使用sp_sysmon存储过程来查** 使用`sp_sysmon`存储过程来查看数据库活动情况,包括会话、等待等信息。 以上内容概述了Sybase ASE数据库的基本概念和日常维护操作,有助...

    数据库DB2常用的命令

    12. **整理表**:`db2 reorg table &lt;table_name&gt;` - 对表进行重组,优化数据分布和索引,提高查询性能。`db2 runstats on table &lt;table_name&gt; with distribution and indexes all` - 收集表的统计信息,帮助优化器...

    DB2数据库管理最佳实践笔记-10日常运维.docx

    总结,DB2数据库的日常运维涉及多个方面,通过有效利用Runstats、Reorg、Reorgchk和Rebind,能够持续优化数据库性能,保证系统的高效运行。理解并熟练运用这些工具,对于DB2管理员来说至关重要。在实践中,应结合...

    DB2数据库管理最佳实践笔记-10日常运维 (2).docx

    【DB2数据库管理最佳实践笔记-10...总之,DB2的日常运维涉及多个方面,其中Runstats、Reorg、Reorgchk和Rebind是提升数据库性能的关键工具。理解它们的工作原理和正确使用,能有效优化数据库的运行效率,降低运维成本。

    linux中如何使用db2命令.docx

    - **整理表**: 为了提高查询性能,可以使用`db2 reorg table &lt;表名&gt;`命令来整理表的数据分布。例如: ```sql db2 connect to o_yd user db2 using pwd db2 reorg table ydd ``` - **运行统计信息**: 运行统计...

    DB2数据库使用经验积累

    通过调整SPM配置,可以优化数据库性能。 ##### 2.7 FCM FCM(File Control Manager)管理着数据库文件的物理布局,包括如何将数据分布到不同的磁盘上以提高读写效率。 ##### 2.8 ADSM ADSM(Automatic Data ...

    DB2数据库用户手册

    - **在对表操作的性能下降后对表做整理**:当表的性能下降时,可以使用`REORG`命令来重新组织表的数据,提高查询效率。 - **查看语句的执行计划**:使用`EXPLAIN`命令来查看SQL语句的执行计划。 - **查看sp的执行...

    DB2数据库管理最佳实践笔记-10日常运维.pdf

    【DB2数据库管理最佳实践】 在DB2数据库的日常运维中,...正确使用这些工具能够确保数据库性能优化,避免因数据碎片和统计信息过时导致的性能下降。理解并掌握这些最佳实践,对于任何DB2数据库管理员来说都至关重要。

    Sybase 优化命令

    ### Sybase 优化命令 #### 一、SYBASE 系统参数调整 在对 Sybase 数据库进行优化时,系统参数的调整是非常重要的一个环节。合理的配置能够显著提高数据库性能和稳定性。 - **内存管理**:调整内存分配是优化 ...

    db2中的常用命令及使用方法

    15. **执行表重组**:`reorg table &lt;tablename&gt;` 对表进行重构,消除碎片并优化性能。 16. **数据导出**:`export` 命令用于将数据库数据导出到文件,如 `export to name.del of del select * from names`。 17. *...

    DB2 日常维护指南,第 3 部分

    定期执行reorg可以避免数据碎片化问题,从而维持数据库性能。 总的来说,DB2数据库管理员应该根据数据库的使用情况,制定包括runstats和reorg在内的日常维护计划,并根据实际情况调整维护策略。通过这种方式,管理...

    db2常用命令

    **整理表**:`db2 reorg table &lt;表名&gt;` 和 `db2 runstats on table &lt;表名&gt; with distribution and indexes all` 命令用于优化数据库表的物理结构,减少碎片,提高查询效率。`reorg` 整理数据碎片,而 `runstats` 则...

    linux下的DB2命令

    这些命令能够帮助用户有效地管理和操作数据库,包括但不限于启动与停止数据库服务、连接数据库、配置管理、数据备份与恢复、性能优化以及数据导入导出等关键功能。下面,我们将详细解析Linux下DB2的常用命令及其功能...

    sybase数据库维护快速手册

    这部分可以通过使用`reorg`系列命令来优化表的物理存储结构,提高查询效率。 以上内容涵盖了Sybase数据库维护手册中的基础概念和日常维护方面的关键知识点。对于从事Sybase数据库管理和维护的专业人士来说,这些...

    db2常用命令大全

    使用 `db2 reorg table &lt;表名&gt;` 可以优化表的物理存储,提高查询性能。同时,`db2 runstats on table &lt;表名&gt; with distribution and indexes all` 会收集表的统计信息。 13. **导出表数据**: 数据导出可以使用 `...

Global site tag (gtag.js) - Google Analytics