Go back to the English version of the documentation在Data Virtualization中收集统计数据
在Data Virtualization中收集统计数据
Last updated: 2024年11月26日
要优化查询性能,可以收集有关正在查询的数据的统计信息。
基于成本的优化器的决策对于查询性能至关重要。 优化器通过使用有关要查询的数据的统计信息来制定其决策。 准确且最新的统计信息可确保最佳查询性能。 只要下列条件适用,就收集统计信息。
您可以在 优化概要文件和准则中了解有关优化器和查询性能的更多信息。
- 将创建新表并使用数据进行填充。
- 现有表的数据会经历重大更改,例如以下情况:
- 添加了新数据。
- 将除去旧数据。
- 现有数据已更新。
Data Virtualization会收集以下项目的统计信息,以便优化器掌握足够的信息来构建高效的执行计划:
- 查询中引用的任何表。
- 视图中引用的任何表。 创建虚拟视图时,请确保收集视图中引用的所有表的统计信息。 不会收集有关视图的统计信息。
- 在谓词 (包括连接谓词) 中引用的所有列以及在查询中引用的聚集函数。
您不需要收集仅出现在查询的第一个 SELECT 列表中的列的统计信息。
重要信息: 收集统计信息对于提高查询性能至关重要,因此具有最新统计信息非常重要。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么统计信息收集可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。
Data Virtualization收集以下基本统计数据:
- 表基数 (CARD)
- 此表中的行数。
- 列基数 (COLCARD)
- 列中的单值数。
- 高键 (HIGH2KEY)
- 列的最高或第二高数据值,具体取决于虚拟化表的远程数据源以及所使用的集合类型。
- 低键 (LOW2KEY)
- 列的最低或第二最低数据值,具体取决于虚拟化表的远程数据源以及所使用的集合类型。 对于许多数据源,Data Virtualization收集最低键值,该值可以是空白值。 空白表示未收集统计信息。
- 空值数 (NUMNULLS)
- 列中的空值数。 此数字是针对 LOB 类型的列收集的唯一统计信息。
统计信息收集类型
Data Virtualization支持两种统计收集类型:
- remote-catalog
- 仅支持本地统计信息收集方法的远程数据源中的虚拟化表支持此类型的统计信息收集。检索存储在远程数据源目录表中的统计数据,然后将其存储在Data Virtualization统计目录中。 确保在远程数据源中提供准确的统计信息至关重要。 分组表不支持 remote-catalog 类型的统计信息收集。
- remote-query
- 此类型的统计信息收集使用针对虚拟化表的 SQL 查询来计算统计信息。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 为了提高性能和节省资源,可以通过在Data Virtualization中的 COLLECT_STATISTICS 存储过程中指定 TABLESAMPLE 选项,或使用 "ANALYZE命令对云对象存储中的数据源进行数据采样,从而收集统计数据。
最佳实践
对于支持本地统计信息收集工具(如 "IBM® Db2®和 "Oracle)的远程数据源,Data Virtualization中统计信息收集的最佳实践是确保远程数据源的本地统计信息是准确和最新的,尤其是查询谓词中使用的关键列的基本列统计信息。 为此,最好在Data VirtualizationWeb 客户端中创建一个统计收集任务。