文档首页 > > 开发指南> 导入数据>

分析表

分析表

分享
更新时间:2021/04/07 GMT+08:00

执行计划生成器需要使用表的统计信息,以生成最有效的查询执行计划,提高查询性能。因此数据导入完成后,建议执行ANALYZE语句生成最新的表统计信息。统计结果存储在系统表PG_STATISTIC中。

分析表

ANALYZE支持的表类型有行/列存表、HDFS表、ORC/CARBONDATA格式的OBS外表。ANALYZE同时也支持对本地表的指定列进行信息统计。下面以表的ANALYZE为例,更多关于ANALYZE的信息,请参见ANALYZE | ANALYSE。

  1. 更新表统计信息。

    以表product_info为例,ANALYZE命令如下:
    1
    ANALYZE product_info;
    
    ANALYZE

表自动分析

GaussDB(DWS)提供了两种场景下表的自动分析。

  • 当查询中存在统计信息完全缺失的表,且执行计划不采取FQS (Fast Query Shipping)执行时,则通过GUC参数autoanalyze控制此场景下表统计信息的自动收集。此时,查询语句会等待统计信息收集成功后,生成更优的执行计划,再执行原查询语句,大大提升因计划不准确而导致的查询性能慢的问题。
  • 对于表中数据量发生较大变化达到指定阈值的场景,则通过GUC参数autovacuum控制。当autovacuum设置为on时,系统会定时启动autovacuum线程,对插入数据行数大于50的空表,或已有数据且达到指定阈值(阈值设定为50+10%*reltuples,其中reltuples是表的总行数)的表,触发自动分析。
  • autoanalyze只支持默认采样方式,不支持百分比采样方式。
  • 多列统计信息仅支持百分比采样,因此autoanalyze不收集多列统计信息。
  • 查询过程因统计信息完全缺失而自动触发autoanalyze的场景,当前不支持对外表触发autoanalyze,不支持对带有ON COMMIT [DELETE ROWS | DROP]选项的临时表触发autoanalyze。
  • 基于定时启动的autovacuum线程触发的autoanalyze,仅支持行存表和列存表,不支持外表、HDFS表、OBS外表、临时表、unlogged表和toast表。
  • autovacuum自动清理功能的生效还依赖于下面两个GUC参数:
    • track_counts参数需要设置为on,开启收集收据库统计数据功能。
    • autovacuum_max_workers参数需要大于0,该参数表示能同时运行的自动清理线程的最大数量。
分享:

    相关文档

    相关产品