SET SESSION MEMORYCAP

限制可以为当前 会话中的任何请求分配的内存量。此限制仅适用于当前会话;不限制多个会话使用的内存总量。

语法

SET SESSION MEMORYCAP limit

参数

限制
以下几项之一:
  • 'max‑expression':一个字符串值,用于指定内存限制,为以下几项之一:

    • int% — 将最大值表示为 资源管理器可用总内存的百比,其中 int 为 0 至 100 之间的整数。例如:

      MEMORYCAP '40%'

    • int{K|M|G|T} — 以 KB、MB、GB 或 TB 表示内存分配。例如:

      MEMORYCAP '10G'

  • =DEFAULT:将此会话中查询的内存上限设置为用户的 MEMORYCAP 值。新会话最初将设置为此值。

  • NONE:移除此会话的内存上限。

特权

  • 超级用户可以将会话内存上限增加到任意值。

  • 非超级用户只能将会话内存上限设置为不大于自己的用户设置的值。

示例

将会话内存上限设置为 2 GB:

=> SET SESSION MEMORYCAP '2G';
SET
=> SHOW MEMORYCAP;
   name    | setting
-----------+---------
 memorycap | 2097152
(1 row)

将内存上限恢复为用户配置文件中指定的默认设置:


=> SET MEMORYCAP=DEFAULT;
SET
=> SHOW MEMORYCAP;
   name    | setting
-----------+---------
 memorycap | 2013336
(1 row)

另请参阅

管理工作负载