我没有看到 Postgres 写入性能的提高,我认为我会使用单个 SSD 与 (16) 15k RPM SAS 驱动器的硬件 RAID 10 阵列。
我有一个戴尔 R820,带有 PERC H700 硬件 RAID 卡和 RAID 10 阵列中的 16 个 15k RPM SAS 驱动器,以及一个 800GB 的 Intel s3700 SSD。该服务器具有 128GB 的 RAM 和 64 核的 Xeon E5-4640,频率为 2.40GHz,运行 CentOS 6.4 和 Postgres 9.2.4。
我正在使用 pgbench 将 RAID 10 阵列中的 SAS 驱动器与单个 SSD 进行比较。
15k RPM SAS RAID 10 结果
pgbench -U postgres -p 5432 -T 50 -c 10 pgbench 开始真空……结束。 交易类型:TPC-B(有点) 比例因子:1 查询方式:简单 客户数量:10 线程数:1 …
我正在将 MySQL 与 InnoDB 存储引擎一起使用。事务日志放置在专用硬盘上。atopsar
由于大量的小 IO(每秒大约 50 次写入,每个 6Kb),HDD仍然显示出这个 HDD 的大负载(> 50%)。
设置innodb_flush_log_at_trx_commit
为 2 解决了问题,现在平均加载 5%。但是,MySQL 文档说:
当值为 2 时,日志缓冲区会在每次提交时写入文件,但不会对其执行刷新到磁盘操作。但是,当值为 2 时,每秒也会刷新日志文件一次。
值为 2 时,只有操作系统崩溃或断电才能擦除最后一秒的事务。
因此,可能会丢失最后一秒的事务日志。
我没有为 DB 服务器进行硬配置的经验,因此想知道存在哪些现代解决方案并且最适合 DB 的事务日志,提供可靠性和高 IO 能力。
通过the best
我的意思是不同的变种,但个人更喜欢性能/价格的最佳组合。无论如何,我认为在这里收集不同的变体会很棒。
我知道通常的答案是“使用 SSD”,但我知道它的存储原则不是事务日志的可靠解决方案,它应该相对较快地失败。乍一看,现代 SSD 的重写次数似乎足以运行多年。但是,据我所知,SSD 按块重写数据,例如,如果您想写入 1b 的数据,SSD 将重写整个块,可能是 4Kb。因此,对于 1 个事务日志重写电路,SSD 可能会多次重写其块。
在我看来,理想的存储设备将是电池+RAM+HDD的组合,并且尺寸相对较小(大约5Gb或更小)。在正常操作中仅使用 RAM,断电时会将所有数据刷新到 HDD。它应该在一个设备中,而不是软件解决方案。但是,我不知道它们是否存在。
最近,我听说我不应该在 SSD 驱动器上托管我的 MySQL 数据库,因为磁盘故障和数据丢失的可能性很大。
鉴于我的数据库中 20% 的查询是 INSERT 和 UPDATE,这里是我的问题: