使用简单的“pgbench”testing,我发现GCE的“本地SSD”选项(SSD固态硬盘比较)的每秒事务处理速度非常低:
# With Local SSD # /dev/mapper/vg0-data on /data type xfs (rw,noexec,noatime,attr2,inode64,noquota) pg-dev-002:~$ pgbench -c 8 -j 2 -T 60 -U postgres starting vacuum...end. transaction type: TPC-B (sort of) scaling factor: 1 query mode: simple number of clients: 8 number of threads: 2 duration: 60 s number of transactions actually processed: 10765 tps = 179.287875 (including connections establishing) tps = 179.322407 (excluding connections establishing) # With SSD Persistent Disk # /dev/mapper/vg1-data on /data1 type xfs (rw,noexec,noatime,attr2,inode64,noquota) pg-dev-002:/data$ pgbench -c 8 -j 2 -T 60 -U postgres starting vacuum...end. transaction type: TPC-B (sort of) scaling factor: 1 query mode: simple number of clients: 8 number of threads: 2 duration: 60 s number of transactions actually processed: 62457 tps = 1040.806664 (including connections establishing) tps = 1041.012782 (excluding connections establishing)
“fio”基准testing显示了本地SSD的广告IOPS和吞吐量。 但是,在本地固态硬盘上执行“pg_test_fsync”会导致我认为fsync延迟是罪魁祸首。 本地固态硬盘编号在这里应用Google的IRQ脚本之后:
# Local SSD open_datasync 319.738 ops/sec 3128 usecs/op fdatasync 321.963 ops/sec 3106 usecs/op # Persistent SSD open_datasync 1570.305 ops/sec 637 usecs/op fdatasync 1561.469 ops/sec 640 usecs/op
我还没有看到任何关于fsync和本地SSD的限制,但我不知道要检查或testing的地方。
比较单个本地SSD / HDD /等。 到SANtypes的RAID控制器,就像比较大众甲壳虫和奥迪RS10勒曼车,是的,他们都出来了同一个工厂,他们都使用四冲程引擎/固态硬盘/硬盘,但他们的调谐等。是方式,方式不同。
我可以给你几个经验的例子,但简单的答案与大量电池备份的RAMcaching相关,基于SAN的存储与本地SSD / HDD上的非caching相比较。 当确认数据已经“提交”到磁盘时,即使SSD也不能与电池支持的DDR3 RAM竞争。 此外,单个本地磁盘可以(实际上)在写入块到“磁盘”的同时处理单个操作,而可以同时处理多个请求的电池支持的SAN系统“写入到磁盘”(因为它提交了数据到电池备份的DDR3 RAM)
最后,这个问题可能是使用了哪个本地固态硬盘,因为我看到同一系列固态硬盘在不同大小的写入性能方面存在巨大差异(速度越快越快),更不用说各种SSD盘的各种速度了在那里。
Y,固态硬盘比硬盘更快,但还不如电池供电的DDR3内存快;)