segment_*
segment_*
表包含Greenplum数据库Segment实例的内存分配统计。这会跟踪一个特定Segment实例上所有postgres进程消耗的内存量,以及根据postgresql.conf
配置参数gp_vmem_protect_limit
留给Segment的可用内存量。一个导致Segment超过该限制的查询将被取消从而防止系统级别的内存不足错误。这个参数的更多信息请见Greenplum数据库参考指南。
有三个Segment表,它们都有相同的列:
segment_now
是一个外部表,其数据文件存储在$MASTER_DATA_DIRECTORY/gpperfmon/data
中。在从数据收集代理收集数据和自动提交到segment_history
表之间的时段,当前内存分配数据存储在segment_now
中。segment_tail
是一个外部表,其数据文件存储在$MASTER_DATA_DIRECTORY/gpperfmon/data
中。这是一个过渡表,其中存放着已经从segment_now
中清除但是还没有提交到segment_history
的内存分配数据。它通常只包含了几分钟的数据。segment_history
是一个常规表,它存储数据库范围的历史内存分配数据。它被预分区为每月的分区表。分区会根据需要进行两个月的增量添加。管理员必须要删除那些不再需要的月份的旧分区。
一个特定的Segment实例通过它的hostname
和dbid
(根据gp_segment_configuration
的唯一Segment标识符)来标识。
列名 | 类型 | 描述 |
---|---|---|
ctime |
timestamp(0) (without time zone) | 该行被创建的时间。 |
dbid |
int | Segment的ID(dbid 来自于gp_segment_configuration )。 |
hostname |
charvar(64) | Segment的主机名。 |
dynamic_memory_used |
bigint | 在该Segment上执行的查询处理分配的动态内存量(以字节为单位)。 |
dynamic_memory_available |
bigint | 在达到通过参数gp_vmem_protect_limit 设置的值前该Segment还能请求的额外的动态内存量(以字节为单位)。 |
主机的聚合内存分配与利用另见视图memory_info
和dynamic_memory_info
。
上级主题: gpperfmon数据库