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数据库