Postgres跨多个磁盘分发数据

kan*_*nan 16 postgresql

我需要你的帮助才能解决问题,因为我对Postgres来说还不够新,阅读手册并没有帮助.

我们有一个带有4个内部硬盘的服务器.我们创建了一个包含几个表的Postgres数据库.我们希望能够在这4个磁盘上传播我们的数据.

我们想要指定某个地方(例如表空间创建阶段),加载到一组表中的数据应该分布在4个磁盘上.

您能否给我们语法或指出正确的方向?

a_h*_*ame 27

  1. 在不同的磁盘上创建四个表空间(请参阅:http://www.postgresql.org/docs/current/static/sql-createtablespace.html)
  2. 将表的内容移动到表空间,以便在您打算使用时分发数据ALTER TABLE foobar SET tablespace = foospace,请参见此处:http://www.postgresql.org/docs/current/static/sql-altertable.html
  3. 使用表格索引的内容移动到表空间alter index idx_foo set tablespace = spacefoo,请参见此处:http://www.postgresql.org/docs/current/static/sql-alterindex.html


Sco*_*owe 9

最好的方法是创建一个RAID-0或RAID-10阵列,让操作系统为您处理.RAID-0没有冗余,因此任何单个驱动器故障都是灾难性的.RAID-10允许任何一个磁盘发生故障并保持良好的性能.由于写入性能非常差,因此请避免使用RAID-5或RAID-6.

  • 对不起,但你错了.OP声明:我们希望指定某个地方(例如表空间创建阶段),加载到一组表中的数据应该分布在4个磁盘上.请注意,括号中的虚拟语句被视为对如何操作的一种猜测.虽然很有可能使用表空间并且没有冗余,但99%的用户更好的方法就是将它全部放在一个大型RAID阵列上,因为这样所有表都可以从组合速度和冗余中受益.Nit采摘并没有真正帮助. (3认同)
  • Raid 可能是解决问题的好方法,但它没有回答问题。也许他想在特定磁盘上拥有特定数据,例如将一个经常使用的表放在快速磁盘上而不是其他任何东西,因此该磁盘仅用于对该表的读取和写入。 (2认同)