首批通过分布式安全可靠测评,为关键业务系统打造
GATHER_CATALOG_TABLE_STATS
更新时间:2026-07-29 10:39:51
GATHER_CATALOG_TABLE_STATS 用于收集 Catalog 中外表统计信息。
说明
该子程序从 V5.0.1 版本开始引入。
语法
DBMS_STATS.GATHER_CATALOG_TABLE_STATS (
catname VARCHAR(65535),
dbname VARCHAR(65535),
tabname VARCHAR(65535),
partname VARCHAR(65535) DEFAULT NULL,
estimate_percent DECIMAL(30, 10) DEFAULT AUTO_SAMPLE_SIZE,
sample_type VARCHAR(65535) DEFAULT NULL,
method_opt VARCHAR(65535) DEFAULT DEFAULT_METHOD_OPT,
degree DECIMAL(30, 10) DEFAULT NULL,
granularity VARCHAR(65535) DEFAULT DEFAULT_GRANULARITY,
force BOOLEAN DEFAULT FALSE
);
参数说明
| 参数 | 解释 |
|---|---|
| catname | 指定 Catalog 名称。 |
| dbname | 指定 Database 名称。 |
| tabname | 指定表名称。 |
| partname | 指定分区名称。NULL 表示全表。 |
| estimate_percent | 指定采样百分比。100 表示全量扫描。 |
| sample_type | 指定采样方式,取值如下:
|
| method_opt | 指定列统计收集方法,默认值为 FOR ALL COLUMNS SIZE AUTO。只允许使用 FOR ALL 语法,具体格式可参考下文 method_opt。 |
| degree | 指定并行度。NULL 表示使用默认值。 |
| granularity | 指定收集粒度,取值如下:
|
| force | 指定是否强制收集(忽略统计信息锁定和新鲜度检测)。 |
method_opt
method_opt 只能为以下选项之一,或两者的组合:
FOR ALL COLUMNS [size_clause]:其中size_clause定义为size_clause := SIZE {integer | REPEAT | AUTO | SKEWONLY}。integer:直方图 Bucket 的数量。有效范围为 [1,2048]。REPEAT:仅在已有直方图的列上收集直方图。AUTO:根据数据分布和列的工作负载确定要收集直方图的列。SKEWONLY:根据列的数据分布确定收集直方图的列。
FOR COLUMNS [column_clause]:其中column_clause定义为column_clause := column_name | extension。column_name:列名。extension:可以是(column_name, colume_name [, ...])格式的列组或表达式。
示例
收集 Catalog 名称 hive_catalog 和 Database 名称 test_oss 下表 lineitem 的统计信息,其中:
- 分区名设置为
NULL,表示全表。 - 采样百分比设置为 100,表示全量。
- 采样方式设置为
BLOCK,表示块采样。 - 列统计收集方法设置为
NULL,表示使用默认。 - 并行度设置为 32。
obclient> CALL DBMS_STATS.GATHER_CATALOG_TABLE_STATS (
'hive_catalog',
'test_oss',
'lineitem',
NULL,
100,
'BLOCK',
NULL,
32
);