GaussDB中analyze关键字

本文介绍了一个用于收集数据库表统计信息的命令ANALYZE及其语法格式。ANALYZE可以帮助执行计划生成器确定最优执行计划,支持收集普通表、分区表、外表及多列统计信息,并能检测数据文件是否损坏。

1、功能描述

用于收集与数据库中普通表内容相关的统计信息,统计结果存储在系统表PG_STATISTIC下。执行计划生成器会使用这些统计数据,以确定最有效的执行计划。

  • 如果没有指定参数,analyze会分析当前数据库中的每个表和分区表
  • 同时也可以通过指定table_name、column和partition_name参数把分析限定在特定的表、列或分区表中

能够执行analyze特定表的用户,包括表的所有者、表所在数据库的所有者或通过GRANT被授予该表上analyze权限的用户以及有SYSADMIN属性的用户。

  • 在百分比采样收集统计信息时,用户需要被授予analyze和select权限。
  • analyze|analyze verify 用于检测数据库中普通表(行存表、列存表)的数据文件是否损坏,目前此命令暂不支持HDFS表

2、语法格式

  • 收集表的统计信息

    { ANALYZE | ANALYSE } [ VERBOSE ]     
    	[ table_name [ ( column_name [, ...] ) ] ];
    
  • 收集分区表的统计信息

    { ANALYZE | ANALYSE } [ VERBOSE ]     
    	[ table_name [ ( column_name [, ...] ) ] ]   PARTITION ( patrition_name ) ;  
    
  • 收集外表的统计信息。

    { ANALYZE | ANALYSE } [ VERBOSE ]     
    	{ foreign_table_name | FOREIGN TABLES };
    
  • 收集多列统计信息

    {ANALYZE | ANALYSE} [ VERBOSE ]    
    	table_name (( column_1_name, column_2_name [, ...] ));
    
  • 检测当前库的数据文件

    {ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE};
    
  • 检测表和索引的数据文件

    {ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE} table_name|index_name [CASCADE];
    
  • 检测表分区的数据文件

    {ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE} table_name PARTITION {(patrition_name)}[CASCADE];
    

3、示例

--- 创建表。
CREATE TABLE customer_info
(
WR_RETURNED_DATE_SK       INTEGER                       ,
WR_RETURNED_TIME_SK       INTEGER                       ,
WR_ITEM_SK                INTEGER               NOT NULL,
WR_REFUNDED_CUSTOMER_SK   INTEGER
)
DISTRIBUTE BY HASH (WR_ITEM_SK);

--- 创建分区表
CREATE TABLE customer_par
(
WR_RETURNED_DATE_SK       INTEGER                       ,
WR_RETURNED_TIME_SK       INTEGER                       ,
WR_ITEM_SK                INTEGER               NOT NULL,
WR_REFUNDED_CUSTOMER_SK   INTEGER
)
DISTRIBUTE BY HASH (WR_ITEM_SK)
PARTITION BY RANGE(WR_RETURNED_DATE_SK)
(
PARTITION P1 VALUES LESS THAN(2452275),
PARTITION P2 VALUES LESS THAN(2452640),
PARTITION P3 VALUES LESS THAN(2453000),
PARTITION P4 VALUES LESS THAN(MAXVALUE)
)
ENABLE ROW MOVEMENT;

--- 使用ANALYZE语句更新统计信息。
ANALYZE customer_info;

--- 使用ANALYZE VERBOSE语句更新统计信息,并输出表的相关信息。
ANALYZE VERBOSE customer_info;
INFO:  analyzing "cstore.pg_delta_3394584009"(cn_5002 pid=53078)
INFO:  analyzing "public.customer_info"(cn_5002 pid=53078)
INFO:  analyzing "public.customer_info" inheritance tree(cn_5002 pid=53078)
ANALYZE

--- 删除表。

DROP TABLE customer;
DROP TABLE customer_par;
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值