暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

数据库(openGauss)统计信息介绍

MTL-9527 2022-09-20
1097


什么是统计信息? 

CBO优化器需要根据表/索引中的数据来选择查询数据的方式,由于表中的数据量很大,不可能每次执行查询时实时的统计表中的数据量以及数据分布,所以需要定期分析数据,把表和索引的数据分布情况保存到数据字典里,以便优化器使用,这就是统计信息。 


openGauss是基于代价估算生成的最优执行计划。优化器需要根据analyze收集的统计信 息行数估算和代价估算,因此统计信息对优化器行数估算和代价估算起着至关重要的作用。

通过analyze收集全局统计信息,主要包括:pg_class表中的relpages和reltuples; pg_statistic 表中的 stadistinct 、 stanullfrac 、 stanumbersN 、 stavaluesN 、 histogram_bounds等。


何时收集统计信息

⚫ 建议在执行了大批量插入/删除操作后,例行对表或全库执行ANALYZE语句更新统计信息。 

⚫ 对于在批处理脚本或者存储过程中生成的中间表,也需要在完成数据生成之后显式的调 用ANALYZE。 

⚫ 对于表中多个列有相关性,且查询中有同时基于这些列的条件或分组操作的情况,可尝 试收集多列统计信息,以便查询优化器可以更准确地估算行数,并生成更有效的执行计 划。


如何收集统计信息

⚫ ANALYZE语句可收集与数据库中表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC中。 查询优化器会使用这些统计数据,以生成最有效的执行计划。 

⚫ 操作步骤

  • 更新单张表的统计信息。 
     ANALYZE tablename;
  • 更新全库统计信息。 
     ANALYZE;
  • 收集tablename表的col_1、col_2列的多列统计信息。 
     ANALYZE tablename (col_1, col_2);
  • 添加tablename表的col_1、col_2列的多列统计信息声明。 ANALYZE tablename; ANALYZE; ANALYZE tablename (col_1, col_2); ALTER TABLE tablename ADD STATISTICS (col_1, col_2);

     ALTER TABLE tablename ADD STATISTICS (col_1, col_2);


统计信息对应视图

PG_STATISTIC系统表存储有关该数据库中表和索引列的统计数据。需要有系统管理员权 限才可以访问此系统表。该视图需要授权访问。



「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论