0 / 0
Go back to the English version of the documentation
Data Virtualization中收集统计数据的局限性
Last updated: 2024年11月26日
Data Virtualization中收集统计数据的数据源特定限制

数据源对本地统计信息收集的支持有所不同,并且支持不同的列统计信息。 它们还支持收集统计信息的不同方法。

Data Virtualization支持两种统计收集类型。
remote-catalog
仅支持本地统计信息收集方法的远程数据源中的虚拟化表支持此类型的统计信息收集。检索存储在远程数据源目录表中的统计数据,然后将其存储在Data Virtualization统计目录中。 确保在远程数据源中提供准确的统计信息至关重要。 分组表不支持 remote-catalog 类型的统计信息收集。

下表标识了支持本地统计信息收集的数据源,并显示了哪些列统计信息可用。

数据源 可用的基本统计信息 支持
remote-catalog
支持
remote-query
Amazon Redshift CARD , COLCARD 和 NUMNULLS
Amazon S3 请参阅 收集对象存储器中数据的统计信息 False
Ceph® 请参阅 收集对象存储器中数据的统计信息 False
Cloudera Impala CARD , COLCARD 和 NUMNULLS。 Impala (1.4 和更高版本) 的最新版本不收集 NUMNULLS。
Databases for PostgreSQL CARD , COLCARD 和 NUMNULLS
Db2® CARD , COLCARD , HIGH2KEY, LOW2KEY, NUMNULLS
Db2 Big SQL CARD , COLCARD , HIGH2KEY, LOW2KEY, NUMNULLS
Db2 for z/OS CARD , COLCARD , HIGH2KEY和 LOW2KEY
Db2 on Cloud CARD , COLCARD , HIGH2KEY, LOW2KEY, NUMNULLS
通用 S3 请参阅 收集对象存储器中数据的统计信息 False
Greenplum CARD , COLCARD 和 NUMNULLS
Hive CARD , COLCARD , HIGH2KEY, LOW2KEY, NUMNULLS
(不推荐用于以下场景)
IBM® Cloud Object Storage 请参阅 收集对象存储器中数据的统计信息 False
Informix CARD 和 COLCARD
MariaDB CARD , HIGH2KEY, LOW2KEY, NUMNULLS
Microsoft SQL Server CARD 和 COLCARD
MySQL CARD 和 COLCARD
Netezza Performance Server CARD , COLCARD , HIGH2KEY, LOW2KEY, NUMNULLS
Oracle CARD , COLCARD , HIGH2KEY, LOW2KEY, NUMNULLS
SAP ASE CARD
SAP HANA CARD 和 COLCARD
Snowflake CARD
Teradata CARD , COLCARD 和 NUMNULLS

Amazon Redshift

要收集本地表统计信息,请使用 ANALYZE 命令,如 Amazon Redshift 产品文档中所述。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。

Amazon Redshift 不支持 HIGH2KEY 或 LOW2KEY 统计信息。 此外,如果列数据的长度超过 1020 字节,那么 ANALYZE 命令不会收集 CHAR 和 NCHAR 列数据的统计信息。 如果列仅包含 NULL 值,那么不会收集列统计信息。

如果查询将从这些统计信息中受益,请使用 remote-query 统计信息收集类型。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

Cloudera Impala

要收集本地表统计信息,请使用 COMPUTE STATS 语句,如 Cloudera Impala 产品文档中所述。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。

Cloudera Impala 不支持 HIGH2KEY 或 LOW2KEY 统计信息,并且最新版本的 Impala 不支持 NUMNULLS 统计信息。 如果查询将从这些统计信息中受益,请使用 remote-query 统计信息收集类型。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

PostgreSQL 的数据库

要收集本地表统计信息,请使用 ANALYZE 命令,如 PostgreSQL 产品文档中所述。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。

PostgreSQL 不支持 HIGH2KEY 或 LOW2KEY 统计信息。 如果查询将从这些统计信息中受益,请使用 remote-query 统计信息收集类型。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

Db2Db2 on Cloud

要收集这些数据源的本地表统计信息,请使用 RUNSTATS 命令。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。 使用此类型时,将从 Db2 目录复制 HIGH2KEY 和 LOW2KEY 值 (表示表中的第二高值和第二低值)。 对于 remote-query 类型, HIGH2KEY 和 LOW2KEY 值表示表中的最大值和最小值。

Db2 Big SQL

要收集本地表统计信息,请使用 ANALYZE 命令。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。 对于这两种类型, HIGH2KEY 和 LOW2KEY 值表示表中的最高值和最低值。

Db2 for z/OS

要收集本地表统计信息,请使用 RUNSTATS 命令。 不会收集 LOB 类型的统计信息。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。 使用此方法,将从 Db2 目录复制 HIGH2KEY 和 LOW2KEY 值 (表示表中的第二高值和第二低值)。 对于 remote-query 集合类型, HIGH2KEY 和 LOW2KEY 值表示表中的最高值和最低值。

Db2 for z/OS® 不支持 NUMNULLS 统计信息。 如果您的查询将从此统计信息中受益,请使用 remote-query 统计信息收集类型。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

Greenplum

要收集本地表统计信息,请使用 ANALYZE 命令,如 Greenplum 产品文档中所述。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。

Greenplum 不支持 HIGH2KEY 或 LOW2KEY 统计信息。 如果查询将从这些统计信息中受益,请使用 remote-query 统计信息收集类型。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

Hive

要收集本地表统计信息,请使用 ANALYZE 命令,如 Hive 产品文档中所述。 建议不要使用 Hive 中的 remote-catalog 统计信息收集类型,因为 Hive中的统计信息收集存在已知问题。 请改为使用 remote-query 统计信息收集类型。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

Informix

要收集本地表统计信息,请使用 UPDATE STATISTICS 语句,如 Informix® 产品文档中所述。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。

Informix 不支持 HIGH2KEY, LOW2KEY或 NUMNULLS 统计信息。 它仅收集 CARD (表基数) 和 COLCARD (列基数)。 如果查询将受益于这些统计信息,请使用 remote-query 统计信息收集类型如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

MariaDB

要收集本地表统计信息,请使用 ANALYZE 命令,如 MariaDB 产品文档中所述。 未收集 TEXT 类型或 BLOB 类型列的统计信息。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。 您必须拥有管理特权才能访问目录统计信息,这是使用 remote-catalog 统计信息收集类型时所必需的。

MariaDB 不支持 COLCARD 统计信息。 如果您的查询将从此统计信息中受益,请使用 remote-query 统计信息收集类型。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

Microsoft SQL Server

要收集本地表统计信息,请使用 UPDATE STATISTICS 语句,如 Microsoft SQL Server 产品文档中所述。 不会收集 XML 类型列的统计信息。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。

Microsoft SQL Server 仅收集 CARD (表基数) 和 COLCARD (列基数)。 它不支持 HIGH2KEY, LOW2KEY或 NUMNULLS 统计信息。 如果查询将从这些统计信息中受益,请使用 remote-query 统计信息收集类型。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

MySQL

要收集本地表统计信息,请使用 ANALYZE TABLE 语句,如 MySQL 产品文档中所述。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。

MySQL 仅收集 CARD (表基数) 和 COLCARD (列基数)。 它不支持 HIGH2KEY, LOW2KEY或 NUMNULLS 统计信息。 如果查询将从这些统计信息中受益,请使用 remote-query 统计信息收集类型。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

Netezza Performance Server

要收集本地表统计信息,请使用 GENERATE STATISTICS 命令,如 Netezza® 产品文档中所述。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。 对于这两种类型, HIGH2KEY 和 LOW2KEY 值表示表中的最高值和最低值。

Oracle

要收集本地表统计信息,请使用 ANALYZE 命令,如 Oracle 产品文档中所述。 或者,可以使用 DBMS_STATS.GATHER_TABLE_STATS 过程。 您还可以在 Oracle 远程数据源中配置自动统计信息收集。 不会收集 LOB 类型的统计信息。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。 对于这两种类型, HIGH2KEY 和 LOW2KEY 值表示表中的最高值和最低值。

SAP ASE

要收集本地表统计信息,请使用 UPDATE STATISTICS 语句,如 SAP ASE 产品文档中所述。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。

SAP ASE 仅收集 CARD (表基数)。 它不支持 COLCARD , HIGH2KEY, LOW2KEY或 NUMNULLS 统计信息。 将 remote-query 统计信息收集类型用于谓词中使用的键列。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

SAP HANA

要收集本地表统计信息,请使用 CREATE STATISTICS ON 语句,如 SAP HANA 产品文档中所述。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。

SAP HANA 仅收集 CARD (表基数) 和 COLCARD (列基数)。 它不支持 HIGH2KEY, LOW2KEY或 NUMNULLS 统计信息。 如果查询将从这些统计信息中受益,请使用 remote-query 统计信息收集类型。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

Snowflake

Snowflake 不支持用于收集统计信息的显式方法。 但是,INFORMATION_SCHEMA.TABLES目录表中的 ROW_COUNT 列会存储作为Data Virtualization统计数据收集的一部分的表核心度 (CARD) 值。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。

Snowflake 仅收集 CARD (表基数)。 它不支持 COLCARD , HIGH2KEY, LOW2KEY或 NUMNULLS 统计信息。 将 remote-query 统计信息收集类型用于谓词中使用的键列。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

Teradata

要收集本地表统计信息,请使用 COLLECT STATISTICS 命令,如 Teradata 产品文档中所述。 指定 THRESHOLD 选项以避免冗余统计信息收集。 使用此选项时,如果自上次统计信息收集以来更改的数据量低于指定的阈值,或者统计信息比指定的寿命更新,那么 Teradata 不会重新收集统计信息。 不会收集 PERIOD 类型 (BEGIN 和 END 表达式除外) , XML , BLOB 或 CLOB 类型或任何用户定义的类型 (地理空间类型除外) 的统计信息。 最佳实践是确保在远程数据源中收集统计信息,并使用 remote-catalog 统计信息收集类型。

Teradata 不支持 HIGH2KEY 或 LOW2KEY 统计信息。 如果查询将从这些统计信息中受益,请使用 remote-query 统计信息收集类型。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。

IBM Cloud Object StorageAmazon S3Ceph或通用 S3 数据源

要收集 IBM Cloud Object StorageAmazon S3Ceph或通用 S3 数据源中虚拟化表的统计信息,请使用 ANALYZE 命令。

如果表具有大量数据,请指定 TABLESAMPLE 选项以收集数据子集的统计信息,以便分析操作可以更快完成。

另请参阅 收集对象存储器中数据的统计信息