ANALYZE_STATISTICS
从存储与指定表相关联的投影的所有节点上收集并聚合数据示例和存储信息。函数跳过复杂数据类型列。默认情况下,Vertica 会根据资源限制分析单个查询执行计划中的多个列。此类多列分析有助于实现以下目标:
-
减少计划执行延迟。
-
加快对相对较小且包含多列的表进行分析。
Vertica 将统计信息写入数据库编录。查询优化器将使用这些收集的数据来创建查询计划。没有这些数据,查询优化器会假设数据值均匀分布,所有投影的存储使用量相等。
您可以使用 CTRL+C 或调用 INTERRUPT_STATEMENT 取消统计信息收集。
ANALYZE_STATISTICS 为函数 ANALYZE_HISTOGRAM 的别名,不再进行记录。
这是元函数。您必须在顶级 SELECT 语句中调用元函数。
行为类型
易变语法
ANALYZE_STATISTICS ('[[[database.]schema.]table]' [, 'column‑list' [, percent ]] )
返回
0 - 成功
如果发生错误,请参阅
vertica.log
以了解详细信息。
参数
-
[database.]schema
数据库和架构。默认架构为
public
。如果指定一个数据库,它必须是当前数据库。-
表
- 在其上收集数据的表。如果设置为空字符串,Vertica 将收集所有数据库表及其投影的统计信息。
-
column‑list
- table 中以逗号分隔的列的列表,通常为谓词列。Vertica 将数据收集范围缩小到指定的列。不支持复杂类型列。
如果通过添加列并以默认值或其他值填充其内容等方式对表进行更改,则在此列上调用 ANALYZE_STATISTICS 以获取最新统计信息。
-
percent
- 一个介于 0 和 100 之间的浮点值,指定从磁盘读取数据的百分比(不是要分析的数据量)。如果省略此实参,Vertica 会将百分比设置为 10。
如果分析超过 10% 的磁盘空间,处理时间会成比例地增加,但是得到的采样精确度较高。
特权
非超级用户:
-
架构:USAGE
-
表:INSERT、DELETE 或 UPDATE 之一
限制
- Vertica 在本地和全局临时表上支持 ANALYZE_STATISTICS。在这两种情况下,只能获取使用选项 ON COMMIT PRESERVE ROWS 创建的表的统计信息。否则,Vertica 会在提交当前事务时删除表内容,因此没有可用于分析的表数据。Vertica 不从以下投影中收集任何统计数据: * 实时聚合和 Top-K 投影 * 定义为表达式中包含 SQL 函数的投影
- Vertica 不收集任何关于 ARRAY、SET 或 ROW 类型的列的统计信息。
示例
请参阅收集表统计信息。