ANALYZE | ANALYSE
如果没有指定参数,ANALYZE会分析当前数据库中的每个表和分区表。同时也可以通过指定table_name、column和partition_name参数把分析限定在特定的表、列或分区表中。
ANALYZE|ANALYSE VERIFY用于检测数据库中普通表(行存表、列存表)的数据文件是否损坏。
- ANALYZE非临时表不能在一个匿名块、事务块、函数或存储过程内被执行。支持存储过程中ANALYZE临时表,不支持统计信息回滚操作。
- ANALYZE VERIFY操作处理的大多为异常场景检测需要使用RELEASE版本。ANALYZE VERIFY 场景不触发远程读,因此远程读参数不生效。对于关键系统表出现错误被系统检测出页面损坏时,将直接报错不再继续检测。
- 如果没有指定参数,ANALYZE处理当前数据库里用户拥有相应权限的每个表。如果参数中指定了表,ANALYZE只处理指定的表。
- 要对一个表进行ANALYZE操作,通常用户必须是表的所有者或者被授予了指定表VACUUM权限的用户,默认系统管理员有该权限。数据库的所有者允许对数据库中除了共享目录以外的所有表进行ANALYZE操作(该限制意味着只有系统管理员才能真正对一个数据库进行ANALYZE操作)。ANALYZE命令会跳过那些用户没有权限的表。
收集表的统计信息。
收集分区表的统计信息。
[ table_name [ ( column_name [, ...] ) ] ]
PARTITION ( patrition_name ) ;
收集多列统计信息。
{ANALYZE | ANALYSE} [ VERBOSE ]
table_name (( column_1_name, column_2_name [, ...] ));
说明:
收集多列统计信息时,请设置GUC参数为负数,以使用百分比采样方式。
每组多列统计信息最多支持32列。
检测当前库的数据文件。
检测表和索引的数据文件
{ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE} table_name|index_name [CASCADE];
说明:
支持对普通表的操作和索引表的操作,但不支持对索引表index使用CASCADE操作。原因是由于CASCADE模式用于处理主表的所有索引表,当单独对索引表进行检测时,无需使用CASCADE模式。
对于主表的检测会同步检测主表的内部表,例如toast表、cudesc表等。
当提示索引表损坏时,建议使用reindex命令进行重建索引操作。
检测表分区的数据文件
{ANALYZE | ANALYSE} VERIFY {FAST|COMPLETE} table_name PARTITION {(patrition_name)}[CASCADE];
VERBOSE
启用显示进度信息。
说明: 如果指定了VERBOSE,ANALYZE发出进度信息,表明目前正在处理的表。各种有关表的统计信息也会打印出来。
table_name
需要分析的特定表的表名(可能会带模式名),如果省略,将对数据库中的所有表(非外部表)进行分析。
对于ANALYZE收集统计信息,目前仅支持行存表、列存表。
取值范围:已有的表名。
column_name,column_1_name,column_2_name
需要分析特定列的列名,默认为所有列。
partition_name
如果table为分区表,在关键字PARTITION后面指定分区名partition_name表示分析该分区表的统计信息。目前语法上支持分区表做ANALYZE,但功能实现上暂不支持对指定分区统计信息的分析。
取值范围:表的某一个分区名。
index_name
需要分析的特定索引表的表名(可能会带模式名)。
取值范围:已有的表名。
FAST|COMPLETE
对于行存表,FAST模式下主要对于行存表的CRC和page header进行校验,如果校验失败则会告警; 而COMPLETE模式下,则主要对行存表的指针、tuple进行解析校验。 对于列存表,FAST模式下主要对于列存表的CRC和magic进行校验,如果校验失败则会告警; 而COMPLETE模式下,则主要对列存表的CU进行解析校验。
—- 创建表。
—- 创建分区表。
openGauss=# 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
)
PARTITION BY RANGE(WR_RETURNED_DATE_SK)
(
PARTITION P2 VALUES LESS THAN(2452640),
PARTITION P3 VALUES LESS THAN(2453000),
PARTITION P4 VALUES LESS THAN(MAXVALUE)
)
ENABLE ROW MOVEMENT;
—- 使用ANALYZE语句更新统计信息。
openGauss=# ANALYZE customer_info;
openGauss=# ANALYZE customer_par;
—- 使用ANALYZE VERBOSE语句更新统计信息,并输出表的相关信息。
—- 删除表。
openGauss=# DROP TABLE customer_par;