更新时间:2025-07-10 GMT+08:00

内存管理函数

内存管理函数仅9.1.0及以上集群版本支持。

pg_shared_chunk_detail(contextname char(64))

描述:查询指定共享内存下内存上下文申请的所有chunk信息。

参数contextname,表示内存上下文名称。

使用该函数需先使用pg_shared_chunk_dump(contextname char(64))函数将相关信息打印成文件。

返回值类型:record

示例:

1
2
3
4
5
6
7
8
SELECT * FROM pg_shared_chunk_detail('pgstat file hash table');
       parent        | level |  file_name   | line_number | chunk_size | requested_number | total_size 
---------------------+-------+--------------+-------------+------------+------------------+------------
 pgstat file context |     2 | dynahash.cpp |         158 |       2048 |                1 |       2048
 pgstat file context |     2 | dynahash.cpp |         158 |        256 |                1 |        256
 pgstat file context |     2 | dynahash.cpp |         158 |       4096 |                9 |      36864
 pgstat file context |     2 | dynahash.cpp |         158 |       8192 |                4 |      32768
(4 rows)

pv_session_chunk_detail(tid int, contextname char(64))

描述:查询指定线程创建的某个内存上下文申请的所有chunk信息。

参数tid,表示线程ID;参数contextname,表示内存上下文名称。

使用该函数需使用pv_session_chunk_dump(tid int, contextname char(64))函数将相关信息打印成文件。

返回值类型:record

示例:

1
2
3
4
5
6
7
8
9
SELECT * FROM pv_session_chunk_detail(140178810990936, 'Timezones');
      parent      | level |   file_name   | line_number | chunk_size | requested_number | total_size 
------------------+-------+---------------+-------------+------------+------------------+------------
 TopMemoryContext |     1 | dynahash.cpp  |         158 |       1280 |                2 |       2560
 TopMemoryContext |     1 | dynahash.cpp  |         158 |        160 |                1 |        160
 TopMemoryContext |     1 | dynahash.cpp  |         158 |       2560 |                2 |       5120
 TopMemoryContext |     1 | localtime.cpp |        1965 |        128 |                1 |        128
 TopMemoryContext |     1 | localtime.cpp |        1965 |        448 |                1 |        448
(5 rows)

pg_shared_chunk_dump(contextname char(64))

描述:将指定共享内存下内存上下文申请的所有chunk信息打印成文件。

参数contextname,表示内存上下文名称。

返回值类型:boolean

示例:

1
2
3
4
5
SELECT * FROM pg_shared_chunk_dump('pgstat file hash table');
 pg_shared_chunk_dump 
----------------------
         t
(1 row)

pv_session_chunk_dump(tid int, contextname char(64))

描述:将指定线程创建的某个内存上下文申请的所有chunk信息打印成文件。

参数tid,表示线程ID;参数contextname,表示内存上下文名称。

返回值类型:boolean

示例:

1
2
3
4
5
SELECT * FROM pv_session_chunk_dump(140472797325280, 'Timezones');
 pv_session_chunk_dump 
-----------------------
 t
(1 row)

gs_print_memory_profiling()

描述:打印内存采集详情。该函数仅9.1.1.100及以上集群版本支持。

返回值类型:boolean

示例:

1
2
3
4
5
SELECT * FROM gs_print_memory_profiling();
 gs_print_memory_profiling 
----------------------------
 t
(1 row)

gs_gsc_dbstat_info(database_id bigint DEFAULT NULL::bigint)

描述:查询当前节点全局缓存内存(Global SysCache)的统计信息,例如SysCache缓存命中情况及LRU淘汰情况。该函数仅9.1.1.100及以上集群版本支持。

参数:database_id,表示数据库OID。

  • 当database_id为空时,查询所有数据库的统计信息。
  • 当database_id为0时,查询共享数据库的统计信息。
  • 当database_id为有效数据库OID时,查询共享数据库和该数据库的统计信息。

返回值类型:record

函数返回字段如下:

名称

类型

描述

database_id

BIGINT

数据库OID。

database_name

TEXT

数据库名称。

tup_searches

BIGINT

系统表缓存查找次数。

tup_hits

BIGINT

系统表缓存命中次数。

tup_miss

BIGINT

系统表缓存未命中触发扫描表的次数。

tup_swapout_count

BIGINT

被LRU淘汰的元组的数量。

tup_count

BIGINT

缓存中元组的数量。

tup_dead

BIGINT

垃圾队列中元组的数量。

tup_memory

BIGINT

缓存中元组的总内存。

total_memory

BIGINT

Global SysCache的总内存。

refcount

BIGINT

Global SysCache被线程引用的次数。

示例:

1
2
3
4
5
6
SELECT * FROM gs_gsc_dbstat_info();
 database_id | database_name | tup_searches | tup_hits | tup_miss | tup_swapout_count | tup_count | tup_dead | tup_memory | total_memory | refcount
-------------+---------------+--------------+----------+----------+-------------------+-----------+----------+------------+--------------+----------
           0 |               |        12474 |     9876 |       14 |                 0 |        16 |        0 |      12560 |       697664 |        0
       17185 | postgres      |        10156 |     5521 |     2223 |                 0 |      1398 |        0 |     752296 |      4417856 |       11
(2 rows)

gs_gsc_clean(database_id bigint DEFAULT NULL::bigint)

描述:清理指定数据库的全局缓存内存(Global SysCache)。该函数仅9.1.1.100及以上集群版本支持。

参数:database_id,表示数据库OID。

  • 当database_id为空时,清理所有数据库的内存。
  • 当database_id为0时,清理共享数据库的内存。
  • 当database_id为有效数据库OID时,清理共享数据库和指定数据库的内存。

返回值类型:bool

示例:

1
2
3
4
5
SELECT * FROM gs_gsc_clean();
 gs_gsc_clean
--------------
 t
(1 row)