数据仓库服务 GAUSSDB(DWS)-分析表:表自动分析
表自动分析
GaussDB (DWS)提供了三种场景下表的自动分析。
- 当查询中存在“统计信息完全缺失”或“修改量达到analyze阈值”的表,且执行计划不采取FQS (Fast Query Shipping)执行时,则通过GUC参数autoanalyze控制此场景下表统计信息的自动收集。此时,查询语句会等待统计信息收集成功后,生成更优的执行计划,再执行原查询语句。
- 当autovacuum设置为on时,系统会定时启动autovacuum线程,对“修改量达到analyze阈值”的表在后台自动进行统计信息收集。
表1 表自动分析 触发方式
触发条件
触发频率
控制参数
备注
同步
统计信息完全缺失
查询时
autoanalyze, autoanalyze_mode
truncate主表时会清空统计信息。
同步
数据修改量达到analyze阈值
查询时
autoanalyze, autoanalyze_mode
先触发analyze,后选择最优计划。
异步
数据修改量达到analyze阈值
autovacuum线程轮询检查
autovacuum_mode, autovacuum_naptime
2s等锁超时, 5min执行超时。
- autoanalyze只支持内存方式计算统计信息,不支持临时采样表方式计算统计信息。
- 多列统计信息仅支持临时采样表方式计算统计信息,因此autoanalyze不收集多列统计信息。
- 查询过程因表的“统计信息完全缺失”和“修改量达到analyze阈值”而自动触发autoanalyze的场景,当前不支持对外表触发autoanalyze,不支持对带有ON COMMIT [DELETE ROWS | DROP]选项的临时表触发autoanalyze。
- 修改量达到analyze阈值是指:表的修改量超过autovacuum_analyze_threshold + autovacuum_analyze_scale_factor * reltuples,其中reltuples是pg_class中记录的表的估算行数。
- 基于定时启动的autovacuum线程触发的autoanalyze,仅支持行存表和列存表,不支持外表、HDFS表、OBS外表、临时表、unlogged表和toast表。
- 查询时触发analyze会对分区表的所有分区加四级锁,直到查询所在事务提交后才会放锁。四级锁不堵塞增删改查,但会堵塞分区的修改操作,比如分区的truncate,可以通过将object_mtime_record_mode设置为disable_partition,实现提前释放分区锁。
- autovacuum自动清理功能的生效还依赖于下面两个GUC参数:
- track_counts参数需要设置为on,开启收集收据库统计数据功能。
- autovacuum_max_workers参数需要大于0,该参数表示能同时运行的自动清理线程的最大数量。
GaussDB(DWS)支持轻量化的autoanalyze,可通过autoanalyze_mode参数来设置。
类型 |
统计信息存储位置 |
统计信息是否持久化 |
加锁级别 |
是否向其它CN同步 |
是否影响autovacuum触发的analyze |
---|---|---|---|---|---|
普通autoanalyze |
系统表 |
是 |
四级锁 |
是 |
完成后,autovacuum不再触发analyze |
轻量化autoanalyze |
内存 |
否 |
一级锁 |
否 |
完成后,autovacuum依然可以触发analyze |
普通autoanalyze统计信息要存系统表,因此需要加四级锁,防止系统表的并发更新。触发普通autoanalyze的查询会从一级锁升四级锁,堵塞其它四级锁以上的操作。
轻量化autoanalyze对普通autoanalyze做了极简的设计:
- 统计信息仅写入内存,不写入系统表。
- 执行时只加一级锁。
- 统计信息不向其它CN同步。
查询触发的轻量化autoanalyze可以快速生成统计信息,并在一个CN内供多个查询共享使用。需要开启autovacuum后台触发的analyze,由其重新生成统计信息,实现统计信息的持久化和同步,并清理内存中的统计信息。
- GaussDB分析_GaussDB数据库分析_高斯数据库分析_华为云
- 数据仓库服务GaussDB(DWS)_SQL on Anywhere
- DWS安全_数据仓库服务安全_DWS数据安全管理_DWS安全保障_DWS安全策略
- 调用GaussDB(DWS) API接口_数据仓库服务调用API_如何调用API_在DWS中调用API
- GAUSS(DWS)工具_gsql工具_DataStudio工具_DSC工具
- DWS产品介绍_DWS产品优势_DWS功能_DWS使用场景_DWS是什么
- GaussDB(DWS)常用SQL_常用SQL命令_SQL语法
- GaussDB查询库表_GaussDB查询数据库表_高斯数据库查询库表-华为云
- GaussDB(DWS)服务_什么是IoT数仓_如何使用IoT数仓
- 数据库监控DMS_数据库智能运维_了解Auto Pilot_DMS_DWS节点监控