更新时间:2025-12-01 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)

gs_table_oscache(regclass)

描述:查询表的数据文件在操作系统文件缓存中的缓存情况。该函数仅9.1.1.200及以上集群版本支持。

该函数涉及mmap锁操作,不建议频繁使用。

返回值类型:record

函数返回字段如下:

名称

类型

描述

schema_name

TEXT

模式名称。

table_name

TEXT

表名。

file_name

TEXT

数据文件名称。

file_type

TEXT

文件类型。

seg_count

INTEGER

文件段号。

file_size

BIGINT

文件大小。

cache_size

BIGINT

该文件被缓存的大小。

con_cache_count

BIGINT

连续缓存页的数量。

cache_dirty_size

BIGINT

缓存中脏页的大小。

con_cache_dirty_count

BIGINT

连续缓存脏页的数量。

in_fd_cache

BOOLEAN

文件是否在fd缓存中,即文件是否处于打开状态。

示例:

1
2
3
4
5
SELECT * FROM gs_table_oscache('employee');
 schema_name | table_name |    file_name     | file_type | seg_count | file_size | cache_size | con_cache_count | cache_dirty_size | con_cache_dirty_count | in_fd_cache
-------------+------------+------------------+-----------+-----------+-----------+------------+-----------------+------------------+-----------------------+-------------
 public      | employee   | base/17253/17103 | RowRel    |         1 |         0 |          0 |               0 |                0 |                     0 | f
(1 row)

gs_table_freecache(regclass)

描述:清理指定表的数据文件的操作系统文件缓存。该函数无法清理仍在打开状态的数据文件。该函数仅9.1.1.200及以上集群版本支持。

返回值类型:bool

示例:

1
2
3
4
5
SELECT * FROM gs_table_freecache('employee');
 gs_table_freecache
--------------------
 t
(1 row)

gs_file_freecache(IN file_path TEXT)

描述:清理指定文件的操作系统文件缓存。该函数可以清理仍在打开状态的文件。该函数仅9.1.1.200及以上集群版本支持。

参数:file_path,表示文件路径。

返回值类型:bool

示例:

1
2
3
4
5
SELECT * FROM gs_file_freecache('base/17253/17103');
 gs_file_freecache
-------------------
 t
(1 row)

相关文档