首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PostgreSQL:磁盘满时扩展数据库存储

PostgreSQL:磁盘满时扩展数据库存储
EN

Database Administration用户
提问于 2014-02-20 09:26:10
回答 3查看 6.7K关注 0票数 7

我有一个数据库,它的磁盘存储容量约为60 my。现在已经不需要再插入数据库了。

我已经阅读了有关表空间链接的文档,但是它就像为一个新表创建空间一样,而我希望继续插入到exist表中。有人能帮帮我吗?

此外,PostgreSQL数据库的最大值为64 to,因此我们必须连接多个HDD才能实现64 to,然后解决方案可以适用于这种情况(许多连接的HDD或共享存储,我不知道怎么说)。

提前感谢!

PS:我正在使用postgreSQL 9.2开发ubuntu12.04LTS

EN

回答 3

Database Administration用户

回答已采纳

发布于 2014-02-20 14:01:35

PostgreSQL不支持在多个表空间上直接跨越单个表。

您可以使用表分区创建一个“主”表,子表位于不同的表空间中。这有点棘手,这意味着您不能在主键上使用外键或强制执行适当的唯一约束,因此它通常不是首选选项。

更实际的选择通常是使用逻辑卷管理器、RAID系统或类似于将多个物理磁盘跨成一个卷,其中包含一个文件系统。然后PostgreSQL就像其他任何东西一样使用它,而不需要关心它。在Linux上,这可能意味着LVM、处于raid0模式的md软件RAID驱动程序、btrfs或其他各种选项。其中大多数(所有)都要求您构建一个新的文件系统,然后将PostgreSQL数据库移到它上,您不能将直接位于分区之上的常规文件系统转换为raid卷/逻辑卷/等等。

请注意,如果附加存储是可移动的,这些选项都是安全的。如果删除包含表空间的磁盘,或删除部分逻辑卷或跨raid,则整个数据库将变得不可访问。如果丢失磁盘/卷或其数据,整个DB将无法恢复。

票数 6
EN

Database Administration用户

发布于 2014-02-20 10:49:15

您是正确的,表空间只允许将整个表移动到新的驱动器/文件系统,而不是扩展现有的空间。

理论上,您可以使用符号链接手动将单个postgresql数据文件移动到其他驱动器,但这可能存在问题(而且必须在postgresql未运行时执行)。

票数 0
EN

Database Administration用户

发布于 2014-02-20 12:54:08

您可以在表上运行vacummn命令,以便它释放陈旧的内存(对于已删除的行,表所需的空间或未使用的内存),该内存可用于将新行添加到表中。

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

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

复制
相关文章

相似问题

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