我正在使用 AWS RDS for PostgreSQL,我注意到存储使用情况存在很大差异。我的 RDS 实例分配了 20 GiB 的存储空间,但是当我使用 pg_size_pretty(pg_database_size('my_database')) 命令检查数据库的大小时,它报告我的数据库仅使用了大约 2279 MB。
我了解总存储使用量包括实际数据、系统文件、索引、日志和备份。然而,这些元素会消耗超过 86% 的总存储空间,这似乎很不寻常。我最近没有删除大量数据、执行主要版本升级、或运行大批量作业或大量写入操作。
谁能解释一下为什么存储使用量存在如此大的差异?有没有办法获得 AWS RDS 中存储使用情况的更详细细分?
谢谢您的帮助。
谁能解释一下为什么存储使用量存在如此大的差异?
RDS 向您显示的是附加到运行数据库引擎的容器并用于数据存储的 EBS 卷的大小。
EBS 卷是一种存在于容器外部的虚拟硬盘驱动器,可以附加或重新附加到不同的工作负载。
这些硬盘中的所有存储空间(包括空块)均由您自行支配,并且经过加密,其他用户无法重复使用。因此,您必须付费。
RDS 是 PostgreSQL、MySQL 和其他数据库引擎的包装器。所有这些引擎的架构都与底层操作系统文件系统提供的存储抽象一起工作。虽然现代文件系统可以根据需要更改其大小,但在不中断服务的情况下做到这一点并不是一项简单的任务。这就是为什么存储大小会逐步增加。
其他云提供商(Google Spanner、Google AlloyDB 等)将存储与其余数据库接口分离,因此内部存储数据的方式不会被虚拟硬盘驱动器抽象。在这些产品上,存储增量和定价可能会发生在更详细的级别。
有没有办法获得 AWS RDS 中存储使用情况的更详细细分?仅使用您的数据库工具可能提供的功能。
在本质上,它只是一个硬盘驱动器,但 AWS 不允许您将其附加到任何旧的 EC2 实例并查看其内容。