Checking Append-Optimized Tables
gp工具包模式包含一组可用于调查追加优化表的状态的诊断函数。
当创建追加优化表(或面向列的追加优化表)时,会隐式创建另一个表,其中包含有关表的当前状态的元数据。 元数据包括诸如每个表格分段中的记录数量之类的信息。
附加优化的表可能有不可见的行 - 已更新或删除的行,但保留在存储中,直到使用VACUUM压缩表为止。 隐藏的行使用辅助可见性映射表或visimap进行跟踪。
以下函数使您可以访问元数据以实现追加优化和列式表,并查看不可见的行。 有些函数有两个版本:一个是表格的oid,一个是表格的名称。 后一版本的函数名称附有“_name”。
__gp_aovisimap_compaction_info (oid)
此功能显示追加优化表的压缩信息。 该信息用于存储表数据的Greenplum数据库段上的ondisk数据文件。 您可以使用这些信息来确定将由追加优化表上的VACUUM操作压缩的数据文件。
注意:在VACUUM操作从数据文件删除行之前,删除或更新的数据行占用磁盘上的物理空间,即使它们隐藏在新的事务中。 配置参数gp_appendonly_compaction控制VACUUM命令的功能。
该表描述了__gp_aovisimap_compaction_info函数输出表。
Table 98: __gp_toolkit.__gp_aovisimap_compaction_info output table
|
|
注意:如果您将集群升级到GreenplumDatabase 4.3.5.0或更高版本,则可以通过运行一次为每个数据库运行脚本_gp_aovisimap_compaction_info函数,为每个数据库运行脚本$GPHOME/share/postgresql/compaction_info.sql一次。 例如,
要在数据库testdb中安装函数,请使用以下命令:
$ psql -d testdb -f $GPHOME/share/postgresql/compaction_info.sql
如果您使用GreenplumDatabase 4.3.5.0或更高版本创建数据库,则该功能将自动在数据库中创建。
__gp_aoseg_name('table_name')
此函数返回附加优化表的磁盘段文件中包含的元数据信息。
Table 99:_gp_aoseg_name output table
Column | 描述 |
segno | 文件段号码。 |
eof | 该文件段的文件有效结束。 |
tupcount | 段中元组的总数,包括不可见的元组。 |
varblockcount | 文件段中的变量块的总数。 |
eof_uncompressed | 如果文件段是未压缩的,则结束文件。 |
modcount | 数据修改操作的次数。 |
state | 文件段的状态。 指示段落在压实之后是处于活动状态还是可以放下的状态。 |
|
gp_aoseg_history(oid)
此函数返回附加优化表的磁盘段文件中包含的元数据信息。 它显示aoseg元信息的所有不同版本(堆元组)。 数据很复杂,但对系统有深入了解的用户可能会发现它对于调试非常有用。
输入参数是追加优化表的oid。
调用_gp_aoseg_history_name('table_name')以得到与表名相同的结果作为参数。
Table 100:_gp_aoseg_history output table
Column | 描述 |
gp_tid | 元组的ID。 |
gp_xmin | 最早的交易的ID。 |
gp_xmin_status | gp_xmin事务的状态。 |
gp_xmin_commit_ | gp_xmin事务的提交分配标识。 |
gp_xmax | 最新交易的ID。 |
gp_xmax_status | 最新交易的状态。 |
gp_xmax_commit_ | gp_xmax事务的提交分配标识。 |
gp_command_id | 查询命令的ID。 |
gp_infomask | 包含状态信息的位图。 |
gp_update_tid | 如果行被更新,则更新的元组的ID。 |
gp_visibility | 元组可见性状态。 |
segno | 段文件中段的编号。 |
tupcount | 元组的数量,包括隐藏的元组。 |
eof | 段的文件的有效结束。 |
eof_uncompressed | 数据未压缩时段的文件结束。 |
modcount | 数据修改的计数。 |
state | 细分市场的状态。 |
gp_aocsseg(oid)
此函数返回包含在面向列的附加优化表的磁盘段文件中的元数据信息,不包括不可见的行。 每行描述表格中的列的段。
输入参数是一个面向列的附加优化表的oid。 以_gp_aocsseg_name('table_name')的形式调用以获取与表名相同的结果作为参数。
Table 101: _gp_aocsseg(oid) outputtable
Column | 描述 |
gp_tid | 表格ID。 |
segno | 段号。 |
column_num | 列号。 |
physical_segno | 段文件中段的编号。 |
tupcount | 段中的行数,不包含隐藏的元组。 |
eof | 段的文件的有效结束。 |
eof_uncompressed | 如果数据是未压缩的,则为段的文件结尾。 |
modcount | 该段的数据修改操作的计数。 |
state | 段的状态。 |
gp_aocsseg_history(oid)
此函数返回包含在面向列的附加优化表的磁盘段文件中的元数据信息。 每一行都描述了表中一列的段。数据很复杂,但对系统有深入了解的用户可能会发现它对于调试很有用。
输入参数是一个面向列的附加优化表的oid。 以_gp_aocsseg_history_name('table_name')的形式调用,以得到与表名相同的结果作为参数。
Table 102: _gp_aocsseg_history outputtable
Column | 描述 |
gp_tid | 元组的oid |
gp_xmin | 最早的交易。 |
gp_xmin_status | gp_xmin事务的状态。 |
gp_xmin_ | gp_xmin的文本表示。 |
gp_xmax | 最新的交易。 |
gp_xmax_status | gp_xmax事务的状态。 |
gp_xmax_ | gp_max的文本表示。 |
gp_command_id | 在元组上运行的命令的ID。 |
gp_infomask | 包含状态信息的位图。 |
gp_update_tid | 如果行被更新,则更新的元组的ID。 |
gp_visibility | 元组可见性状态。 |
segno | 段文件中的段号。 |
column_num | 列号。 |
physical_segno | 包含该列数据的段。 |
tupcount | 段中元组的总数。 |
eof | 段的文件的有效结束。 |
eof_uncompressed | 如果数据是未压缩的,则为段的文件结尾。 |
modcount | 数据修改操作的计数。 |
state | 段的状态。 |
该函数根据可见性映射返回每个不可见元组的元组ID,段文件和行号。
输入参数是追加优化表的oid。.
Use _gp_aovisimap_name('table_name')to get the same result with the table name as argument.
Column | 描述 |
tid | 元组ID。 |
segno | 段文件的编号。 |
row_num | 已删除或更新的行的行号。 |
这个函数返回段文件中隐藏和可见元组的数目,以便追加优化表。
输入参数是追加优化表的oid。
调用_gp_aovisimap_hidden_info_name('table_name')以获得与表名参数相同的结果。
Column | 描述 |
segno | 段文件的编号。 |
hidden_tupcount | 段文件中隐藏的元组数量。 |
total_tupcount | 段文件中元组的总数。 |
该函数返回关于表的每个可见性映射条目的信息。
输入参数是追加优化表的oid。
调用_gp_aovisimap_entry_name('table_name')以获得与表名参数相同的结果。
Table 103:_gp_aovisimap_entry output table
Column | 描述 |
segno | 可见性图条目的段号。 |
first_row_num | 条目的第一个行号。 |
hidden_tupcount | 条目中隐藏的元组数量。 |
bitmap | 可见性位图的文本表示。 |