max_stack_depth
是一个 配置参数,用于指定服务器执行栈的最大安全深度。
max_stack_depth
在 PostgreSQL 8.0 中添加,替换了 max_expr_depth
。
默认值
max_stack_depth
的默认值为:2MB
。
用法
PostgreSQL 文档建议将 max_stack_depth
设置为内核最大堆栈大小设置值减去大约 1MB
。在 Linux 上,可以使用 ulimit -s
命令确定此值。
在 PostgreSQL 可以确定内核限制的平台上,它不允许将 max_stack_depth
设置为高于内核限制减去 512kB
的值。但是,如果无法确定内核限制,并且设置了更高的值,则失控的递归函数可能会导致单个后端进程崩溃。
按 PostgreSQL 版本分列的详细信息
max_stack_depth (PostgreSQL 17)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 | |
需要重启 | 否 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 16)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 | |
需要重启 | 否 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 15)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 默认 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 | |
需要重启 | 否 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 14)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 | |
需要重启 | 否 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 13)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 | |
需要重启 | 否 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 12)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 | |
需要重启 | 否 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 11)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 | |
需要重启 | 否 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 10)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 | |
需要重启 | 否 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 9.6)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 | |
需要重启 | 否 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 9.5)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 | |
需要重启 | 否 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 9.4)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 9.3)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 9.2)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 9.1)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 9.0)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 8.4)
设置 | 100 |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
枚举值 | |
启动值 | 100 |
重置值 | 100 |
源文件 | |
源代码行号 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 8.3)
设置 | |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
文档: max_stack_depth
max_stack_depth (PostgreSQL 8.2)
设置 | |
单位 | kB |
类别 | 资源使用/内存 |
简短描述 | 以千字节为单位设置最大堆栈深度。 |
额外描述 | |
上下文 | 超级用户 |
变量类型 | 整数 |
来源 | 环境变量 |
最小值 | 100 |
最大值 | 2147483647 |
文档: max_stack_depth
更改历史记录
- PostgreSQL 8.0
- 添加 (提交 8899a2ab)
示例
尝试在最大堆栈大小设置为 8MB
的 Linux 系统上设置 max_stack_depth
postgres=# ALTER SYSTEM SET max_stack_depth = '100MB'; ERROR: invalid value for parameter "max_stack_depth": 102400 DETAIL: "max_stack_depth" must not exceed 7680kB. HINT: Increase the platform's stack depth limit via "ulimit -s" or local equivalent.
参考文献
- PostgreSQL 文档: max_stack_depth