首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有多少磁盘空间是通过真空提供给Postgres的,而操作系统是无法使用的?

有多少磁盘空间是通过真空提供给Postgres的,而操作系统是无法使用的?
EN

Database Administration用户
提问于 2019-10-31 10:39:18
回答 1查看 171关注 0票数 2

VACUUM不会将磁盘空间返回给操作系统,相反,它会标记死行,以便在以后的写入中重用。我的服务器几乎耗尽了磁盘空间,然后运行DELETE FROM big_table来清除大约30%的行,然后是手动VACUUM

没有空间返回给操作系统,这是很好的。在空间耗尽之前,我还能插入多少行?

由于明显的原因,df -h是一个无用的指标。是否有查询查看postgres的已使用磁盘空间与postgres的磁盘空间可用?

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-10-31 12:19:37

pgstattuplepg_自由地图这两个扩展可能会有所帮助。

pg_freespacemap更快,并且给出了一个空闲空间的视图,这与PostgreSQL自己在执行元组插入时如何搜索自由空间相匹配。

代码语言:javascript
运行
复制
SELECT sum(avail) FROM pg_freespace('foo');

但是它并没有给出平均元组长度的视图,这是将空间转换为元组所需的(假设新元组与现有元组的长度相同)。pgstattuples给出了计算当前平均长度的信息。

这两种方法都没有解释你的新行可能是一个尴尬的大小,不适合当前可用的漏洞。

另外,这两种方法对索引都没有很好的效果。新条目必须进入它们所属的索引中,即使其他页面中有大量的空闲空间。因此,索引空间的可重用性取决于新索引值与已删除的离开值之间的关系。

票数 3
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/252293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档