💡
原文英文,约1300词,阅读约需5分钟。
📝
内容提要
Postgres表的数据默认采用“堆”方法存储,数据分为1GB的文件和8KB的页面。更新时生成新版本,旧版本保留以便回滚。清理旧版本的过程称为“真空”,可自动运行。使用“VACUUM FULL”可释放文件系统空间,但需独占锁。调整自动真空参数可提高效率,避免数据库膨胀。
🎯
关键要点
- Postgres表的数据默认采用“堆”方法存储,数据分为1GB的文件和8KB的页面。
- 更新时生成新版本,旧版本保留以便回滚,清理旧版本的过程称为“真空”。
- 真空过程会查找已完成事务更新或删除的行版本,并释放页面上的空间。
- 使用“VACUUM FULL”可以释放文件系统空间,但需要独占锁,建议在数据库访问量少时执行。
- 调整自动真空参数可以提高效率,避免数据库膨胀,特别是对于大表。
- 长时间运行的事务和锁可能导致自动真空失败,从而引起数据库膨胀。
- 可以通过增加自动真空工作内存和工人数量来优化真空过程。
❓
延伸问答
Postgres中的数据是如何存储的?
Postgres中的数据默认采用“堆”方法存储,数据分为1GB的文件和8KB的页面。
什么是真空过程,它的作用是什么?
真空过程是清理旧版本数据的异步过程,释放页面上的空间并更新表的自由空间映射。
如何使用VACUUM FULL释放文件系统空间?
使用VACUUM FULL可以释放文件系统空间,但需要独占锁,建议在数据库访问量少时执行。
自动真空参数如何调整以提高效率?
可以通过增加自动真空工作内存和工人数量,或调整阈值和比例因子来优化自动真空过程。
长时间运行的事务会对自动真空产生什么影响?
长时间运行的事务可能导致自动真空失败,从而引起数据库膨胀,因为旧版本的数据无法被标记为死数据。
如何检查数据库的膨胀情况?
可以通过Supabase CLI运行相关命令,查看死行和活行的数量,判断数据库是否膨胀。
🏷️
标签
➡️