加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 如何在Postgres中获取当前的可用磁盘空间?

发布时间:2020-12-12 16:23:03 所属栏目:MsSql教程 来源:网络整理
导读:在开始在我的数据库中做一些工作之前,我需要确保我至少有1Gb的可用磁盘空间.我正在寻找这样的东西: select pg_get_free_disk_space(); 可能吗? (我在docs中找不到任何关于它的内容). PG:9.3操作系统:Linux / Windows 解决方法 PostgreSQL目前没有直接暴露
在开始在我的数据库中做一些工作之前,我需要确保我至少有1Gb的可用磁盘空间.我正在寻找这样的东西:
select pg_get_free_disk_space();

可能吗? (我在docs中找不到任何关于它的内容).

PG:9.3&操作系统:Linux / Windows

解决方法

PostgreSQL目前没有直接暴露磁盘空间的功能.

一方面,哪个磁盘?生产PostgreSQL实例通常如下所示:

> / pg / pg94 /:WB模式下BBU RAID控制器上快速可靠存储的RAID6,用于目录和最重要的数据
> / pg / pg94 / pg_xlog:一个快速可靠的RAID1,用于事务日志
> / pg / tablespace-lowredundancy:用于索引和UNLOGGED表等快速廉价存储的RAID10,您不必担心丢失,因此可以使用低冗余存储
> / pg / tablespace-bulkdata:RAID6或类似的慢速近线磁存储,用于旧审计日志,历史数据,写入数据以及其他可能较慢访问的内容.
> postgreSQL日志通常在其他地方再次出现,但是如果这个填满,系统可能仍会停止.哪里取决于许多配置设置,其中一些你根本无法从PostgreSQL中看到,比如syslog选项.

然后就是“自由”空间并不一定意味着PostgreSQL可以使用它(想想:磁盘配额,系统保留磁盘空间),以及空闲块/字节不是唯一约束的事实,就像许多文件系统一样对文件数量(inode)也有限制.

aSELECT pg_get_free_disk_space()如何报告此情况?

了解可用磁盘空间可能是一个安全问题.如果受到支持,那至少只会暴露给超级用户.

您可以做的是使用不受信任的过程语言(如plpythonu)来进行操作系统调用,以查询主机操作系统的磁盘空间信息,使用针对pg_catalog.pg_tablespace的查询并使用pg_settings中的data_directory设置来发现PostgreSQL在主机上保留内容的位置OS.您还必须检查挂载点(unix / Mac)/交接点(Windows)以发现pg_xlog等是否位于单独的存储上.但是,这仍然无法真正帮助您获取日志空间.

我非常希望有一个SELECT * FROM pg_get_free_diskspace报告主datadir空间,以及其中的任何挂载点或连接点,如pg_xlog或pg_clog,并且还报告每个表空间及其中的任何挂载点.这是一个回归功能.足够关心的人不得不费心去为所有目标平台实施它,而且现在,没有人希望它能够完成这项工作.

与此同时,如果您愿意将您的需求简化为:

>一个文件系统
>目标操作系统与Linux兼容,与UNIX / POSIX兼容
>没有启用配额系统
>没有根保留块百分比
> inode耗尽不是问题

那么你可以创建语言plpython3u;和CREATE FUNCTION一个语言plpython3u函数,它可以执行以下操作:

import os
st = os.statvfs(datadir_path)
return st.f_bavail * st.f_frsize

在返回bigint的函数中,或者将datadir_path作为参数,或者通过执行SPI查询来发现它,例如PL / Python中的SELECT设置FROM pg_settings WHERE name =’data_directory’.

如果您也想支持Windows,请参阅Cross-platform space remaining on volume using python.我使用Windows管理界面(WMI)查询而不是使用ctypes来调用Windows API.

或者您可以使用df和mount命令输出解析来执行此操作,这可能仅适用于Linux,但是,它是预先编写的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读