我有一个数据库,它的磁盘存储容量约为60 my。现在已经不需要再插入数据库了。
我已经阅读了有关表空间链接的文档,但是它就像为一个新表创建空间一样,而我希望继续插入到exist表中。有人能帮帮我吗?
此外,PostgreSQL数据库的最大值为64 to,因此我们必须连接多个HDD才能实现64 to,然后解决方案可以适用于这种情况(许多连接的HDD或共享存储,我不知道怎么说)。
提前感谢!
PS:我正在使用postgreSQL 9.2开发ubuntu12.04LTS
发布于 2014-02-20 14:01:35
PostgreSQL不支持在多个表空间上直接跨越单个表。
您可以使用表分区创建一个“主”表,子表位于不同的表空间中。这有点棘手,这意味着您不能在主键上使用外键或强制执行适当的唯一约束,因此它通常不是首选选项。
更实际的选择通常是使用逻辑卷管理器、RAID系统或类似于将多个物理磁盘跨成一个卷,其中包含一个文件系统。然后PostgreSQL就像其他任何东西一样使用它,而不需要关心它。在Linux上,这可能意味着LVM、处于raid0模式的md软件RAID驱动程序、btrfs或其他各种选项。其中大多数(所有)都要求您构建一个新的文件系统,然后将PostgreSQL数据库移到它上,您不能将直接位于分区之上的常规文件系统转换为raid卷/逻辑卷/等等。
请注意,如果附加存储是可移动的,这些选项都是安全的。如果删除包含表空间的磁盘,或删除部分逻辑卷或跨raid,则整个数据库将变得不可访问。如果丢失磁盘/卷或其数据,整个DB将无法恢复。
发布于 2014-02-20 10:49:15
您是正确的,表空间只允许将整个表移动到新的驱动器/文件系统,而不是扩展现有的空间。
理论上,您可以使用符号链接手动将单个postgresql数据文件移动到其他驱动器,但这可能存在问题(而且必须在postgresql未运行时执行)。
发布于 2014-02-20 12:54:08
您可以在表上运行vacummn命令,以便它释放陈旧的内存(对于已删除的行,表所需的空间或未使用的内存),该内存可用于将新行添加到表中。
https://dba.stackexchange.com/questions/59252
复制相似问题