数据仓库服务 GAUSSDB(DWS)-更新统计信息:基本规则
基本规则
功能 |
介绍 |
特点 |
约束 |
---|---|---|---|
手动采样 |
作业中修改大量数据后,手动执行ANALYZE |
语法:ANALYZE tablename; ANALYZE (light|force) tablename; |
- |
轮询采样 |
后台线程,根据阈值 轮询维护统计信息 |
仅支持normal模式,统计信息存系统表,共享。四级锁,同一张表不能并发 相关GUC参数:
|
异步轮询触发 |
动态采样 |
查询解析时,根据阈值,用几十秒的代价 实时维护统计信息 |
相关GUC参数:
|
随查询实时触发 轻量化时依赖轮询采样进行持久化 |
强制采样 |
SQL中通过hint,强制每次查询都收集统计信息 |
用于数据特征敏感场景,确保查询时统计信息实时最新。 用法:select /*+ lightanalyze (t1 1) */ from t1; 1:强制采样,0:禁止采样 |
需要改SQL |
分区统计信息 |
按分区收集,仅收增量,自动合并全局信息 |
用于超大分区表的场景,确保分区剪枝后的查询代价估算准确 |
多占存储,信息更准 |
多列统计信息 |
根据多个列组合收集统计信息 |
用于多列同时过滤场景,确保对多列组合的查询代价估算准确 |
手动识别,临时表方式 |
表达式统计信息 |
根据表达式函数对某列收集统计信息 |
用于批量的表达式过滤的场景,确保查询表达式的查询代价估算准确 |
手动识别 |
表达式索引信息 |
创建的表达式索引会自动收集统计信息 |
用于点查的表达式过滤的场景,确保查询表达式的查询代价估算准确 |
手动识别 |
冻结统计信息 |
将表级的统计信息冻结,防止发生变化 |
用于数据特征极稳定场景,禁止采样,防止查询计划跳变 用于数据特征极易变场景,强制采样,确保每次查询都采样 参数:表级属性analyze_mode |
- |
修改统计信息 |
手动计算后,直接修改统计信息 |
继续低采样率,但可以手动计算后进行校准。用法: select approx_count_distinct(col_name) from table_name; alter table set (n_distinct=xxx) |
- |
分区信息拷贝 |
可将旧分区的统计信息拷贝到新分区 |
用于数据特征变化不大的分区表,减少统计信息收集的开销 |
- |
统计信息推理 |
基于旧的统计信息自动推算更准确的统计信息 |
通过GUC参数enable_extrapolation_stats设置。 |
- |
统计信息备份恢复 |
通过explain (stat on) 将统计信息备份成SQL |
用于场景复现或统计信息还原 |
导出SQL的形式 |
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- DWS安全_数据仓库服务安全_DWS数据安全管理_DWS安全保障_DWS安全策略
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- DWS资源管理_GaussDB(DWS)资源管理作用_DWS资源管控
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具
- 如何进行日志采集和转储_日志平台_日志接入_日志转储
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- GaussDB(DWS)服务_什么是IoT数仓_如何使用IoT数仓
- GaussDB案例指南_高斯数据库函数_高斯数据库案例指南_华为云