返回首页

gbase数据、南大通用产品文档:GBase8c分析表

更新日期:2024年09月11日

执行计划生成器需要使用表的统计信息,
以生成最有效的查询执行计划,
提高查询性能。
因此数据导入完成后,建议执行ANALYZE 语句生成最新的表统计信息。统计结果存储在
系统表PG_STATISTIC 中。
分析表
ANALYZE 支持的表类型有行/列存表。
ANALYZE 同时也支持对本地表的指定列进行信
息统计。下面以表的ANALYZE 为例,更多关于ANALYZE 的信息,请参见《GBase 8c
V5_3.0.0_SQL 手册》ANALYZE | ANALYSE。
步骤1 更新表统计信息。
以表product_info 为例,ANALYZE 命令如下:
postgres=# ANALYZE product_info;
ANALYZE
----结束
表自动分析
GBase 8c 提供GUC 参数autovacuum,用于控制数据库自动清理功能的启动。
autovacuum 设置为on 时,
系统定时启动autovacuum 线程来进行表自动分析,
如果表中
数据量发生较大变化达到阈值时,会触发表自动分析,即autoanalyze。

对于空表而言,当表中插入数据的行数大于50 时,会触发表自动进行ANALYZE。

对于表中已有数据的情况,
阈值设定为50+10%*reltuples,
其中reltuples 是表的总行数。
autovacuum 自动清理功能的生效还依赖于下面两个GUC 参数:

track_counts 参数需要设置为on,表示开启收集收据库统计数据功能。

autovacuum_max_workers 参数需要大于0,
该参数表示能同时运行的自动清理线程的最
大数量。

autoanalyze 只支持默认采样方式,不支持百分比采样方式。

GBase 8c V5 开发者手册
南大通用数据技术股份有限公司
331

多列统计信息仅支持百分比采样,因此autoanalyze 不收集多列统计信息。

autoanalyze 支持行存表和列存表,不支持外表、临时表、unlogged 表和toast 表。

使用 DBUPSPACE 环境变量,可以指定和限制 UPDATE STATISTICS 语句在尝试同时构
造多列分布时可使用的系统磁盘空间量。

max 是一个正整数,指定要为 UPDATE STATISTICS 操作中排序而分配的最大磁盘
空间 (KB)。
default 为一个正整数,指定不使用 PDQ 时要分配的最大内存数量 (4-50 MB)。
选项
无符号整数:
1:不使用任何索引来排序。在 sqexplain.out 中打印更新统计信息的整个计划。
2:不使用任何索引来排序。不打印更新统计信息的计划。
3 以上:使用可用的索引来排序。在说明输出文件中打印更新统计信息的整个计划。
例如,要将 DBUPSPACE 设置为 2,500 KB 的磁盘空间和 1 兆字节的内存,请输入以
下命令:
setenv DBUPSPACE 2500:1
在设置此值后,数据库服务器可在执行 UPDATE STATISTICS 语句期间使用不超过
2,500 KB 的磁盘空间。如果表需要 5 兆字节的磁盘空间用于排序,那么 UPDATE
STATISTICS 分两次完成该任务;每次构造一半列的分布。
如果未设置 DBUPSPACE,那么对于 max,缺省值为 1 兆字节 (1,024 KB),而对于
default,
缺省值为 15 兆字节。
如果尝试将 DBUPSPACE 设置为小于 1,024 KB 的任何值,
它会自动设置为 1,024 KB,但不会返回任何错误消息。如果此值尚未大到足以允许一次构
造多个分布,那么至少会完成一个分布,即使完成此任务所需的磁盘空间量超过
DBUPSPACE 指定的磁盘空间量也是如此。

重载属性。根据给定的列索引,返回指定列的原始列值。

重载列表
1) 根据给定的序号,获取指定列值。
Item(Int32)
2) 根据给定的字符串,获取指定列值。
Item(String)