我首先在SSD上创build了一个postgres拥有的目录,并创build了这样的表空间:
CREATE TABLESPACE ssd_tablespace LOCATION '/ssd/pgdata';
我继续移动重要的表格和所有的索引(这只是显示一个分区,我也修改了父表):
ALTER TABLE coreg_2010_a SET TABLESPACE ssd_tablespace; ALTER INDEX coreg_2010_a_pkey SET TABLESPACE ssd_tablespace; ALTER TABLE visits_2010_a SET TABLESPACE ssd_tablespace; ALTER INDEX visits_2010_a_pkey SET TABLESPACE ssd_tablespace;
所有的操作都成功了,我确认表空间已经在psql中设置了。 在移动的表之间也有外键,但是那些不是可以移动的索引。
iostat显示我在SSD上有一些写操作(虽然不是很多),通过一个正在执行INSERT操作的正在执行的脚本进入我移动的表中。 但是,绝大多数的写操作都是在旧硬盘上出于某种原因(我只写信给ssd_tablespace中的表)。 而且,索引表的总大小似乎超过了SSD所用的空间,虽然我还没有正确确认。
如果插入到(和它们的索引)的表已被移动到新的硬盘驱动器上的新表空间,为什么我仍然得到写入到我的旧硬盘驱动器?
作为参考,以下是iostat -dxk 5以5秒的间隔显示的内容。 /dev/xvde1是旧硬盘,而/dev/xvdc1是与ssd_tablespace关联的SSD:
Device: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util xvde1 0.00 486.60 0.00 453.40 0.00 3760.00 16.59 0.85 1.87 1.87 84.72 xvdb1 0.00 1.20 0.00 0.80 0.00 8.00 20.00 0.00 0.00 0.00 0.00 xvdc1 0.00 26.20 0.00 11.20 0.00 149.60 26.71 0.00 0.29 0.14 0.16 Device: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util xvde1 0.00 561.40 0.00 523.60 0.00 4340.00 16.58 0.86 1.65 1.65 86.40 xvdb1 0.00 1.20 0.00 0.60 0.00 7.20 24.00 0.00 0.00 0.00 0.00 xvdc1 0.00 26.20 0.00 13.20 0.00 157.60 23.88 0.02 1.21 0.06 0.08 Device: rrqm/s wrqm/sr/sw/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util xvde1 0.00 524.80 0.00 489.40 0.00 4056.00 16.58 0.85 1.72 1.73 84.56 xvdb1 0.00 1.00 0.00 2.00 0.00 12.00 12.00 0.00 1.20 0.40 0.08 xvdc1 0.00 24.60 0.00 10.80 0.00 141.60 26.22 0.00 0.07 0.07 0.08
根据要求,这里是iostat -dx 5输出:
Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util xvde1 3.00 1078.20 31.40 469.00 2664.00 12379.20 30.06 1.29 2.57 1.46 73.04 xvdb1 0.00 1.00 0.00 0.60 0.00 12.80 21.33 0.00 1.33 1.33 0.08 xvdc1 0.00 7.40 0.00 5.00 0.00 99.20 19.84 0.00 0.00 0.00 0.00 Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util xvde1 6.00 1067.60 32.80 425.40 2768.00 11944.00 32.11 1.37 3.00 1.53 70.16 xvdb1 0.00 1.00 0.00 0.60 0.00 12.80 21.33 0.00 0.00 0.00 0.00 xvdc1 0.00 6.80 0.00 6.00 0.00 102.40 17.07 0.00 0.00 0.00 0.00
如果您只是在说写操作,那可能是因为您的事务日志在pg_xlog目录中仍旧在旧驱动器上。 我build议将表移回常规硬盘,并将pg_xlog目录(即进行同步写入的目录)移动到SSD。