在ibm db2 db中reorg命令的用途是什么? Reorg在内部做什么?
如果在表上创建了新索引,是否需要运行reorg?

最佳答案

REORG操作执行以下功能:

  • 检查引用完整性(如果适用于目标表),并删除违反它的行或使任何受影响的索引无效。 (引用完整性是表中的每个外键值作为主键值存在于引用表中的关系属性。
  • 对表(所有类型)的一个或多个索引执行内部重组,以改善此信息的内部存储,从而改善使用索引访问数据时的性能。它可以重建所有索引,选择性地重建一个或多个命名索引,或选择性地重建一个或多个命名索引的一个或多个段。
  • 填充使用CREATE INDEX语句创建的DEFERRED索引。 DEFERRED索引是一个空索引结构,以后可以填充。
  • 重建预先计算的 View 。例如,如果在您的应用程序中将预计算 View 维护设置为OFF,则可以使用REORG命令仅重建预计算 View ,而无需触摸目标表上的索引。或者,您可以使用REORG命令来重建索引和 View 。

  • 除了重建聚合表数据之外,REORG命令还可以重建聚合表上的索引。

    在以下情况下,需要执行REORG操作:
  • 如果使用数据库还原操作还原表或索引的各个段,则重建受影响的索引。
  • 每当对数据库的修改影响到大约30%以上的数据时,请对任何直接修改的表使用REORG语句运行TMU。使用REORG语句定期重建此类表和索引可确保引用完整性和最佳性能。
  • 重新组织无效的STAR索引。某些操作可能会使STAR索引无效。例如,增加表上的MAXROWS PER SEGMENT或MAXSEGMENTS参数,或者使用ALTER语句扩展段,会使引用已更改表的表上的STAR索引无效。这些操作始终会生成一条警告消息,指出基于更改后的表的STAR索引可能无效,在这种情况下,需要重新组织受影响的STAR索引。您可以在发出消息时重新组织受影响的索引,也可以安排REORG操作以获得更方便的时间。但是,对具有无效索引的表的任何非查询(INSERT,UPDATE或DELETE)操作都会导致错误消息,指出必须重新组织索引。必须先执行REORG操作,然后才能为INSERT,UPDATE,DELETE或LOAD操作访问表。

  • 在以下情况下,不需要:REORG:
  • 如果未完全加载数据,则不对数据库进行任何更改。
  • 如果对表和索引进行了分段,并且将新索引数据加载到了与新表段相对应的新索引段中。
  • 关于sql - IBM DB2中reorg命令的用途是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3417563/

    10-12 17:33