GreenPlum查看会话内存使用信息
简介
可以创建并且使用session_level_memory_consumption视图来查看正在Greenplum数据库上运行查询的会话的 当前内存利用信息。该视图包含会话信息以及该会话连接到的数据库、该会话当前运行的查询和会话处理所消耗的内存等信息。
创建session_level_memory_consumption视图
要在Greenplum数据库中创建session_level_memory_consumption视图, 为每一个数据库运行一次扩展创建语句CREATE EXTENSION gp_internal_tools;。 例如,要在数据库testdb中安装该视图,可使用这个命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | $ psql -d testdb -c "CREATE EXTENSION gp_internal_tools;" postgres=# \dx gp_internal_tools List of installed extensions Name | Version | Schema | Description -------------------+---------+--------+---------------------------------------- gp_internal_tools | 1.0.0 | public | Different internal tools for Greenplum (1 row) postgres=# \dx+ gp_internal_tools Objects in extension "gp_internal_tools" Object Description --------------------------------------------------------------------- function session_state.session_state_memory_entries_f_on_master() function session_state.session_state_memory_entries_f_on_segments() schema session_state view session_state.session_level_memory_consumption (4 rows) postgres=# \dn List of schemas Name | Owner ---------------+--------- gp_toolkit | gpadmin public | gpadmin session_state | gpadmin (3 rows) postgres=# |
session_level_memory_consumption视图
session_level_memory_consumption视图提供有关正在运行SQL查询的会话的内存消耗以及闲置时间的信息。
当基于资源队列的资源管理方式启用时,在该视图中,列is_runaway表示是否Greenplum数据库认为 该会话是一个失控会话,这种判断基于该会话的查询的vmem内存消耗来做出。在资源队列管理模式下,当查询消耗过多内存时, Greenplum数据库认为该会话处于失控状态。Greenplum数据库的服务器配置参数runaway_detector_activation_percent 控制Greenplum数据库什么时候会认为一个会话是失控会话。
在该视图中,当基于组的资源管理方式启用时,列is_runaway, runaway_vmem_mb,和 runaway_command_cnt功能失效。
列 | 类型 | 引用 | 描述 |
---|---|---|---|
datname | name | 该会话连接到的数据库名。 | |
sess_id | integer | 会话ID。 | |
usename | name | 会话用户的用户名。 | |
current_query | text | 该会话正在运行的当前SQL查询。 | |
segid | integer | Segment ID。 | |
vmem_mb | integer | 该会话的总vmem内存使用,以MB计。 | |
is_runaway | boolean | 会话被标记为在Segment上失控。 | |
qe_count | integer | 该会话的查询处理数量。 | |
active_qe_count | integer | 该会话的活动查询处理数量。 | |
dirty_qe_count | integer | 还没有释放其内存的查询处理的数量。对于没有运行的会话该值为-1。 | |
runaway_vmem_mb | integer | 当会话被标记为失控会话时消耗的vmem内存量。 | |
runaway_command_cnt | integer | 当会话被标记为失控会话时的命令计数。 | |
idle_start | timestamptz | 这个会话中上一次一个查询处理变成空闲的时间。 |
查询
1 2 3 4 5 6 7 8 | SELECT * FROM session_state.session_level_memory_consumption d WHERE d.datname IS NOT NULL ORDER BY d.vmem_mb DESC, d.sess_id, d.segid LIMIT 20; |
参考
https://www.bookstack.cn/read/greenplum-admin_guide-6.0-zh/10e56fb7693f9f44.md#b4mtbp