数据源对本地统计信息收集的支持有所不同,并且支持不同的列统计信息。 它们还支持收集统计信息的不同方法。
- 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 统计信息收集类型。 如果虚拟化表具有许多行或收集了许多列的统计信息,那么此类型可能需要大量资源,并且需要很长时间才能完成。 请考虑在系统不太繁忙时收集统计信息。 避免同时调度许多统计信息收集作业。
Db2 和 Db2 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 Storage, Amazon S3, Ceph, 或通用 S3 数据源
要收集 IBM Cloud Object Storage, Amazon S3, Ceph, 或通用 S3 数据源中虚拟化表的统计信息,请使用 ANALYZE 命令。
如果表具有大量数据,请指定 TABLESAMPLE 选项以收集数据子集的统计信息,以便分析操作可以更快完成。
另请参阅 收集对象存储器中数据的统计信息。