CONFIGURATION PARAMETER资源消耗 / 磁盘
temp_file_limit
限制每个 PostgreSQL 进程使用的全部临时文件总大小。
Limits the total size of all temporary files used by each process.
整数 会话(超级用户) 引入 9.2 现存至 20 devel 0 次默认值变更
版本轨迹
相对 PostgreSQL 17 无变化。
默认值变迁
默认值自 PostgreSQL 9.2 起没有变过。带单位的取值换算成了可读形式,原始的 boot_val 与单位写在悬浮提示里。
手册说明
本版译文与 PostgreSQL 16 完全一致,下面就是同一段文字。
指定进程可以用于临时文件(如排序和哈希临时文件)或保留游标的存储文件的最大磁盘空间。 尝试超过此限制的事务将被取消。 如果未指定单位,则将其视为千字节。 -1(默认值)表示没有限制。 只有超级用户和具有适当SET权限的用户才能更改此设置。
这个设置约束着一个给定PostgreSQL进程在任何瞬间所使用的所有临时文件的总空间。应该注意的是,与在查询执行中在幕后使用的临时文件相反,显式临时表所用的磁盘空间不被这个设置所限制。
机制详解
temp_file_limit 限制单个 PostgreSQL 进程在同一时刻拥有的临时文件总大小,包括排序与哈希落盘文件以及保持游标的存储;超过上限会取消事务。
它是每进程而非全局限制,因此并发后端与并行工作进程的合计占用可以达到该值的许多倍。默认值 -1 表示无限制。
显式临时表占用不计入此限制。log_temp_files 与 pg_stat_database.temp_bytes 可以观察相关临时文件活动,但不会改变限制边界。
调优建议
按典型负载给出的取值思路,不是放之四海皆准的配方:实际取值要看数据量、并发度与硬件。
-
OLTP在线事务处理
按文件系统余量与最坏并发落盘数设置有限安全阀,并监控 temp_bytes 与 log_temp_files,使上限拦截异常查询而不是正常峰值。
-
OLAP分析与批处理
为已知的大型连接和排序提供更大但仍有限的预算,并与查询并发和并行度联动;依赖该限制前先测试取消行为。
-
小规格低配实例与开发机
选择数据文件系统的较小比例并保留应急空间。较低 temp_file_limit 应与保守 work_mem 和查询超时配套。
常见问题
- 把每进程限制当作整个集群的磁盘上限。
- 期待它约束显式临时表,而这部分并不计入。
- 在共享文件系统上保留 -1,让单条失控查询可能耗尽空间。
- 把上限设得低于正常落盘规模,最终通过事务取消才发现。
演化历史
相邻两个大版本之间的差异,新的在前。版本号链到该版的快照。
-
PostgreSQL 20 ← 19 沿用 19
事实沿用 19
-
PostgreSQL 9.6 ← 9.5 仅描述更新
简述
Limits the total size of all temporary files used by each session.Limits the total size of all temporary files used by each process. -
PostgreSQL 9.2 ← 9.1 新增此参数
PostgreSQL 9.2 起可用
逐版本快照
每个收录版本里的 7 项事实,与上一个存在的版本不同的格子带底色。版本号链到该版。
| 版本 | 默认值 | 单位 | 上下文 | 类型 | 最小值 | 最大值 | 枚举值 |
|---|---|---|---|---|---|---|---|
| 9.2 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 9.3 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 9.4 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 9.5 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 9.6 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 10 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 11 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 12 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 13 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 14 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 15 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 16 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 17 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 18 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 19 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
| 20 沿用 | -1 kB |
kB |
会话(超级用户) |
整数 |
-1 |
2147483647 |
— |
参考资料
同类参数
| 参数 | 类型 | 上下文 | 默认值 | 版本变动 | 最近变更 |
|---|---|---|---|---|---|
| 磁盘 4 | |||||
file_copy_method |
枚举 | 会话 | copy |
— | |
| 选择数据库文件的复制方法。 | 现存 | ||||
file_extend_method |
枚举 | 重载生效 | posix_fallocate |
— | |
| 选择扩展数据文件的方法。 | 现存 | ||||
max_notify_queue_pages |
整数 | 重启生效 | 1048576 |
— | |
| 设置 LISTEN/NOTIFY 队列最多分配的页面数。 | 现存 | ||||
temp_file_limit |
整数 | 会话(超级用户) | -1 kB |
— | |
| 限制每个 PostgreSQL 进程使用的全部临时文件总大小。 | 现存 | ||||