热门标签 | HotTags
当前位置:  开发笔记 > 数据库 > 正文

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

CBO优化器需要根据表索引中的数据来选择查询数据的方式,由于表中的数据量很大,不可能每次执行查询时实时的统计表中的数据量以及数据分布,所以需要定期分析数据,把表和索引的数据分布情况


什么是统计信息? 

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系统表存储有关该数据库中表和索引列的统计数据。需要有系统管理员权
限才可以访问此系统表。该视图需要授权访问。




推荐阅读
  • 运用DDD分层架构优化微服务代码设计
    在微服务实施过程中,确定合理的代码结构至关重要。本文探讨了如何利用领域驱动设计(DDD)的分层架构来优化微服务的代码模型,确保系统的可维护性和扩展性。 ... [详细]
  • 本文介绍了FTP(文件传输协议)的基础知识,包括其定义、如何通过TCP建立控制和数据连接,以及主动模式与被动模式的区别。FTP作为一种重要的文件传输协议,在互联网数据交换中扮演着关键角色。 ... [详细]
  • 本文详细介绍了MySQL表分区的概念、类型及其在实际应用中的实施方法,特别是针对Zabbix数据库的优化策略。 ... [详细]
  • 本文深入探讨了PHP电商网站的开发成本,涵盖从基础建站到高级定制的各种费用因素。 ... [详细]
  • Android开发经验分享:优化用户体验的关键因素
    随着Android市场的不断扩展,用户对于移动应用的期望也在不断提高。本文探讨了在Android开发中如何优化用户体验,以及为何用户体验的重要性超过了技术本身。 ... [详细]
  • 深入解析Spring Boot项目的启动机制
    在Java后端开发中,Spring Boot框架以其简洁性和强大的功能受到了广泛欢迎。本文将探讨Spring Boot项目启动的核心——SpringApplication类及其run()方法的工作原理。 ... [详细]
  • 本文详细介绍了如何在阿里云 ECS 实例上安装和配置 MySQL 数据库,包括安装 MySQL 的 Yum 仓库、解决常见安装问题、启动服务以及设置初始用户权限等步骤。 ... [详细]
  • 本文讨论了在处理分页数据时常见的低级错误,并提供了优化后的代码示例,以减少重复代码并提高可读性和维护性。 ... [详细]
  • 本题要求根据给定的正整数数组,通过合理排列各元素顺序,生成并输出所有可能组合中的最小值。例如,对于数组{3, 32, 321},正确的输出应为321323。 ... [详细]
  • 本文介绍了DOM中用于获取节点信息的关键属性,包括父节点、子节点列表、首个及末个子节点、相邻兄弟节点以及节点类型等,同时提供了每个属性的具体使用说明。 ... [详细]
  • 端到端自动化测试框架设计 - 以京东商品搜索为例的Web应用测试
    本文将对前文介绍的京东商品搜索功能的端到端自动化测试进行总结,涵盖使用WebStorm、Node.js、Mocha、WebDriverIO及Selenium构建的测试环境,并特别讨论了如何通过会话保持用户登录状态。 ... [详细]
  • 利用Selenium框架解决SSO单点登录接口无法返回Token的问题
    针对接口自动化测试中遇到的SSO单点登录系统不支持通过API接口返回Token的问题,本文提供了一种解决方案,即通过UI自动化工具Selenium模拟用户登录过程,从浏览器的localStorage或sessionStorage中提取Token。 ... [详细]
  • MySQL磁盘空间满的解决方案及预防措施
    本文介绍了一个案例,其中MySQL服务器的磁盘使用率达到100%,仅剩余几十兆空间。通过一系列操作,包括备份数据库、删除实例、删除数据库表以及重启MySQL服务,但未能有效释放磁盘空间。文章进一步探讨了可能的原因和最终解决问题的方法。 ... [详细]
  • 本文详细对比了MySQL中的InnoDB与MyISAM两种存储引擎,从性能、事务处理能力、锁机制等多个维度进行了深入探讨,旨在为数据库设计者提供选择依据。 ... [详细]
  • 本文深入探讨了锚点技术的应用与实现,通过十个关键点帮助读者全面理解锚点在网页设计中的作用。 ... [详细]
author-avatar
wing96333
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有