REORG 文档说:
建造
Builds indexes. Updates index statistics.
但我总是听说 REORG/RUNSTATS 好像它们应该配对。任何人都可以验证“更新索引统计信息”是否与 RUNSTATS 实现相同的功能?
REORG 文档说:
建造
Builds indexes. Updates index statistics.
但我总是听说 REORG/RUNSTATS 好像它们应该配对。任何人都可以验证“更新索引统计信息”是否与 RUNSTATS 实现相同的功能?
REORG
用于帮助 DB2 指向准确的数据(即,索引应该知道新数据并且不再包括已删除的数据),以及“折叠”由删除数据和/或索引创建的空白页面空间。它还可以帮助将相互关联的数据移动得更近,以实现更有效的访问(尤其是在集群索引的情况下)。RUNSTATS
用于帮助收集有关表和索引中数据量和/或分布的更新统计信息。此信息存储在系统表中,并被包括优化器在内的许多事物用于确定查询数据的最佳路径。随着数据的增长,尤其如此。数据的分布方式可能会导致优化器现在在其访问路径中包含以前没有的索引(反之亦然,并选择不使用索引)。RUNSTATS
也会影响 a 的REORG
运行方式——至少在旧版本的 DB2 中是这样。根据我从 DB2 DBA 那里读到的内容,您通常希望运行
RUNSTATS
REORG
RUNSTATS
第一个
RUNSTATS
有助于REORG
适当和有效地工作。考虑到页面上的所有数据移动,RUNSTATS
之后更多的是确保统计数据现在是准确的。根据您阅读的内容,您可能会看到 DBA 提到的RUNSTATS
最新版本的 DB2 不再需要最后一个。由于我们还没有看到明确的答案,而且我听说的大多数 DB2 DBA 都遵循上述顺序,因此我们公司选择使用该顺序(据记录,我们使用的是 DB2 LUW 9.7 FP4,我们计划迁移到V 10.1 明年某个时候)。此外,为了完整起见,通常当您更新统计信息并影响优化器时,您希望所有调用 DB2 的应用程序确保它们正在利用这些新优化。因此,一个
REBIND
包将确保静态包知道更新的统计信息和优化的查询路径,并FLUSH PACKAGE CACHE DYNAMIC
从诸如 Hibernate 之类的东西中清除动态查询,这样查询将与更新的查询路径一起反弹。(注意:在 z/OS 上,我看到你有BIND
和REBIND
选项。也许FLUSH PACKAGE CACHE DYNAMIC
在这些选项下,或者在 z 上有不同的名称。)所以最终我会做以下事情:
RUNSTATS
REORG
RUNSTATS
REBIND
包FLUSH PACKAGE CACHE DYNAMIC
(在 LUW 上)或 z/OS 上的任何等价物。如果您在 IBM i 上运行 DB2,那么所有这些都将为您处理。索引是实时维护的。统计数据会自动更新。计划是动态优化的。