GreenPlum ANALYZE

简介: 分析有关的表的数据库中的系统表pg_statistic里的内容,并存储该结果收集统计信息。随后,Greenplum数据引擎使用这些数据来帮助判断查询的最有效的执行计划。

ANALYZE


Collectsstatistics about a database.


概要


ANALYZE [VERBOSE][ROOTPARTITION [ALL]]


[table[(column [,...])]]


描述


分析有关的表的数据库中的系统表pg_statistic里的内容,并存储该结果收集统计信息。随后,Greenplum数据引擎使用这些数据来帮助判断查询的最有效的执行计划。


如果没有参数,ANALYZE收集的统计数据在当前数据库中每个表。您可以指定表名,以收集单个表的统计信息。你可以指定_组列名,在这种情况下,只有那些列收集统计信息。


ANALYZE不收集外部表的统计信息。


重要提示:如果您打算启用了举足轻重的查询优化器对分区表执行查询时,必须收集有关分区表的根分区用analyze命令ROOTPARTITION统计。有关匹查询优化器的信息,请参阅“查询数据”\ n中的Greenplum数据管理员指南。

注意:您还可以使用Greenplum的数据库实用程序analyzedb更新表统计信息。


该analyzedb实用程序可以更新同时在多个表的统计信息。该实用程序还可以检查表的统计信息和统计数据的更新仅在统计信息不及时或不存在。有关工具的信息,请参阅Greenplum的数据库实用程序指南。


参数


ANALYZE ROOTPARTITIONALL;


只有在分区表的根分区收集统计信息。当你指定ROOTPARTITION,您必须指定全部或分区表的名称。


如果你用所有指定ROOTPARTITION,Greenplum数据收集在数据库中的所有分区表的根分区统计信息。如果在数据库中没有分区表,_条消息,指出有没有返回分区表。对于未分区表的表,统计信息没有收集。


如果指定带ROOTPARTITION_个表名和表不是分区表,不统计信息收集表,并返回_个警告消息。


该ROOTPARTITION条款不符合VACUUMANALYZE有效。该命令VACUUM ANALYZE ROOTPARTITION返回_个错误。


刷新根级统计的成本可比分析_叶分区。


对于分区表sales_curr_yr,这个例子命令只收集对分区表的根分区统计信息。ANALYZE ROOTPARTITION sales_curr_yr;


这个例子分析有关数据库中所有的分区表的根分区命令收集统计信息。


ANALYZE ROOTPARTITION ALL;


VERBOSE


启用进度消息的显示。启用进度消息的显示。ANALYZE发出此信息The table that isbeing processed.


•     正在执行生成示例表的查询


•     正在为其计算统计数据的列。


•     颁发给收集不同的统计单个列的查询。


•     生成的统计信息。


table


Thename (possibly schema-qualified) of a specific table to analyze. Defaults toall tables in the current database.


column


Thename of a specific column to analyze. Defaults to all columns.


Notes


定期运行,或者在表中的内容发生重大变化后仅对该表执行是_个很好的选择。准确的统计数据有助于Greenplum数据引擎选择最合适的查询计划,从而提高查询处理的速度。通常的策略时再每天闲时执行vacuum 和 analyze. ANALYZE需要在目标表SHARE UPDATE EXCLUSIVE锁。这与这些锁锁冲突:


SHARE UPDATE EXCLUSIVE,SHARE,SHARE ROW EXCLUSIVE,EXCLUSIVE,ACCESS EXCLUSIVE。对于分区表,指定表的_部分来分析,如果分区表有大量的进行了分析,只有少数叶子表已经改变分区的根分区或子(叶子表)是有用的。


•     当您运行分析关于根分区表,收集统计信息对所有叶子表(由分区表使用由Greenplum数据引擎创建的子表的层次结构中的最低级别的表)。


当您运行分析关于叶子表,统计数据只对叶子表收集。当您运行分析关于子表是不是叶子表,统计信息没有收集。


例如,您可以创建与2000年至2010年和子分区为每年每个月分区的分区表。如果您运行的子表分析2005年的统计数字收集。如果您运行分析关于为2005年3月的叶子表,统计数据为叶子表只收取。


Note: 当您使用CREATETABLE命令的分区表,Greenplum的数据库中创建您指定的表(root分区或父表),并创建基于您指定的分区层级(子表)表的层次结构。分区表,子表及其继承关系的水平在系统视图PG_分区跟踪。


•     对于包含已交换使用外部表树叶子分区的分区表,ANALYZE不收集外部表的分区统计:


•     如果ANALYZE[ROOTPARTITION]运行,外部表分区,不分析和根表的统计数据不包括外部表分区。


•     如果ANALYZE是在外部表分区上运行,该分区没有分析。


如果指定了VERBOSE子句,则显示如下消息:跳过外部表。


通过分析所收集的统计数据通常包括_些在每_列中与表示在每列的近似数据分布的直方图的最常见的值的列表。如果ANALYZE认为他们不感兴趣(例如,在_个独特的键列,没有共同的值),或者如果该列数据类型不支持相应的运营商的_个或两个的这些可被省略。


对于大表,ANALYZE采集表内容的_个随机抽样,而不是检查每_行。这使得即使非常大的表中的少量时间进行分析。但是请注意,该统计数据仅近似的,并且每次都将略有改变ANALYZE运行时,即使实际的表的内容没有改变。这可能会导致EXPLAIN显示的规划器的估计小的变化。在极少数情况下,这个不确定的行为会导致查询优化器选择分析运行之间不同的查询计划。为了避免这种情况,通过用调整default_statistics_target配置参数提高统计数据情况分析所收集的金额,或在列逐列的基础设置与ALTER TABLE每列的统计目标...ALTER COLUMN ... SET统计(见ALTERTABLE)。目标值设定在最常见值列表中的条目的最大数目和在柱状图箱的最大数量。默认目标值为10,但这是可以上下调整权衡对采取的时间规划器的估计的准确性分析和空间中pg_statistic里所占的量。特别是,统计目标设置为零就关闭了该字段的统计收集。这可能是做这对于那些从未使用过的WHERE,GROUPBY或ORDER BY查询的WHERE子句的_部分列有用的,因为规划将有没有用这样的字段上的统计数据。


被分析的列中的最大的统计目标确定取样以准备统计信息表格中的行数。增加目标会导致做ANALYZE所需要的时间和空间成比例增加。


当Greenplum数据引擎执行ANALYZE操作来收集表统计和检测,所有抽样表数据页是空的(不包含有效数据),Greenplum数据显示应该进行VACUUMFULL操作的消息。如果采样的页面都是空的,表的统计信息不准确。页面的大量更改表中的后变成空的,例如删除大量的行。真空FULL操作删除了空白页,并允许ANALYZE操作以收集准确的统计数据。


示例


Collect statistics forthe table mytable:


ANALYZE mytable;


兼容性


There is no analyze statement in the SQLstandard.


相关参考


alter table, explain, vacuum,analyzedb utilityin the Greenplum Database Utility Guide.

目录
相关文章
|
4月前
|
SQL 关系型数据库 数据库
PG/Greenplum
PG/Greenplum 是指 PostgreSQL(简称 PG)和 Greenplum(简称 GP)两种关系型数据库管理系统。它们都是基于 SQL(结构化查询语言)的开放源代码数据库系统,具有高性能、可扩展性和高可靠性等特点
89 7
|
算法 关系型数据库 PostgreSQL
PostgreSQL/GreenPlum Merge Inner Join解密
PostgreSQL/GreenPlum Merge Inner Join解密
73 0
PostgreSQL/GreenPlum Merge Inner Join解密
|
关系型数据库 PostgreSQL
PostgreSQL执行计划explain
PostgreSQL执行计划explain
118 0
|
SQL 存储 缓存
Oracle-SQL Explain Plan解读
Oracle-SQL Explain Plan解读
148 0
|
SQL 分布式计算 并行计算
PostgreSQL 并行计算解说 之13 - parallel OLAP : 中间结果 parallel with unlogged table
标签 PostgreSQL , cpu 并行 , smp 并行 , 并行计算 , gpu 并行 , 并行过程支持 背景 PostgreSQL 11 优化器已经支持了非常多场合的并行。简单估计,已支持27余种场景的并行计算。 parallel seq scan parallel
621 0
|
SQL 存储 弹性计算
PostgreSQL sharding extensino citus 优化器 Query Processing 之 - Subquery/CTE Push-Pull Execution
标签 PostgreSQL , citus , sharding , push , pull , 优化器 背景 citus 是postgresql的sharding 开源中间件,2018年被微软收购,插件依旧开源。 在处理非常复杂的SQL时,CITUS使用推拉模型,支持跨节点的数据交换,用以处理复杂SQL。 中间结果的push,pull过程: push : shard ->
268 0
|
SQL 关系型数据库
PostgreSQL citus, Greenplum 分布式执行计划 DEBUG
标签 PostgreSQL , citus , sharding , Greenplum , explain , debug 背景 开启DEBUG,可以观察citus, Greenplum的SQL分布式执行计划,下发情况,主节点,数据节点交互情况。
1638 0
|
SQL 关系型数据库 测试技术
Greenplum 通过gpfdist + EXTERNAL TABLE 并行导入数据
Greenplum 提供了快速导入数据的方法,下面通过一个例子演示给大家.
16842 0