postgresql - PostgreSQL:无法写入文件“pg_wal/xlogtemp 由于 autovacuum 没有剩余空间设备
问题描述
最近,在我的 PostgreSQL 日志中,我发现:
2021-09-30 08:33:37.242 CEST [4183904] 恐慌:无法写入文件“pg_wal/xlogtemp.4183904”:设备上没有剩余空间 2021-09-30 08:33:37.242 CEST [4183904] 上下文:写入关系 base/238033/270693 的块 413931 2021-09-30 08:33:46.609 CEST [1376] LOG:服务器进程(PID 4183904)被信号 6 终止:Aborted 2021-09-30 08:33:46.609 CEST [1376] 详细信息:失败的进程正在运行:autovacuum:VACUUM public.public_components_versions_files
我的问题是为什么进程 autovacuum 会导致写入关系块(表上的索引),知道 autovacuum 不会回收空间....对于信息库/238033/270693 是表 public_components_versions_files 的索引,所以 autovacuum (public_components_versions_files) 尝试写入索引块(public_components_versions_files 上的索引)
postrgesql 版本 12.8
<我在文档中看到:VACUUM 的标准形式删除了表和索引中的死行版本,并标记了可用空间以供将来重用。但是,它不会将空间返回给操作系统,除非在特殊情况下,表末尾的一个或多个页面变得完全空闲并且可以轻松获得排他表锁>
所以也许,这个 autovacuum 将空间返回给操作系统,因为表末尾的一个或多个页面变得完全空闲,并且可以轻松获得排他表锁
先感谢您。
干杯,
阿迪尔
解决方案
VACUUM
写入表(它修改它),但它不扩展表。但是,由于所有数据修改都必须记录在 Write Ahead Log 中,VACUUM
因此也必须记录 的修改。
PostgreSQL 写入事务日志的空间不足,而不是修改表。
推荐阅读
- flutter - Flutter:如何将base64转换为图像?
- android - 如何在android中使用OkHttp从web api获取json数据到RecyclerView
- android - 当应用程序在后台或终止时,iOS 设备不会推送通知。导航到下一个屏幕在 Flutter 的 IOS 设备中也不起作用?
- angular - 我尝试将数据从我的组件添加到其他组件
- azure-container-instances - Azure 容器实例在启动时立即终止
- ios - 将 depthMap 缓冲区写入文件(Swift)
- android - Xamarin.Android 在页面之间导航时出现问题
- c++ - 迭代具有自定义开始/结束位置的容器
- sql-server - 优化查询,我的查询执行时间超过 5 分钟
- java - TelephonyManager.getSubscriberId 的权限 READ_PRIVILEGED_PHONE_STATE 不可用,