早前,ScaleFlux委托Percona对其最新的下一代可计算存储设备CSD 2000进行标准评测。一份客观的评测报告需要尽可能地直观并尊重事实,因此我们会着重关注测试中不同寻常的地方。
标准评测就如同烹饪,需要准备一些主要的作料,遵循一系列严格的步骤,将作料混合后再进行适当的加热。在我们这个案例中,作料包括运行Ubuntu 18.04 Linux OS的数据库主机和测试主机,PostgreSQL 12版本,模块化、跨平台、多线程的Sysbench测试工具集,以及一个用于对照的存储设备Intel DC P4610系列SSD。参与测试的两种存储设备均格式化为同一种文件系统并加载为不同的分区。
环境准备就绪后,下一步即制定和实现包括各种DML和DDL操作在内的测试准则。需要注意的是,除了数据库处理中传统的OLAP和OLTP模式,用贴近实际生产的标准来进行评估往往会存在一些问题,比如,当系统达到容量上限时,所有的生产系统都会表现出各自的行为特征。因此,我们默认使用SysBench来进行测试。
毋庸置疑,测试各种配置的组合、验证测试的结果、对结果作图并进行分析,是相当耗时的。在此我们对测试的细节和结果并不进行深入讨论,大家如果感兴趣,我建议参考相应的白皮书(https://www.percona.com/sites/default/files/Testing_the_Value_of_Scaleflux_for_PostgreSQL.pdf)。
那么,此次测试的收获是什么呢?对此,我想分享两个主要的结论:
1. 对于数据加载,ScaleFlux CSD 2000相对于Intel DC P4610,性能的抖动更小。性能的抖动体现了IO读写的最大值和最小值的统计偏差,抖动越小,服务就越可预测。对于那些依赖RDBMS的性能稳定性并且高度调优的应用来讲,更小的性能抖动是很必要的,因为我们经常看到,当数据的插入、更新、删除或者由此产生的查询的响应时间突然变化(增大)时,应用往往会崩溃。
2. 当减小PostgreSQL中的填充因子(fillfactor)时,ScaleFlux CSD 2000可以节省可观的存储空间。我们知道,填充因子是PostgreSQL运行时的一个重要参数;对于那些在相同元组上不断更新和删除的场景来说,减小填充因子可以大大提升系统的性能。因为填充因子本质上是通过在PostgreSQL的页面中预留一部分空间,用于将来页面中元组的更新和删除,这样当页面还存在足够的空间时,更新/删除后新的元组就可以直接追加到页面尾部,而无需进行页面的分裂和空间申请等操作,从而提升PostgreSQL的性能。填充因子越小,对更新/删除操作性能的提升则越明显,但同时也会消耗大量的存储空间。ScaleFlux CSD 2000通过集成透明压缩功能,可将页面预留的空间(填充全0数据)进行高度压缩,在提升性能的同时,并不占用大量额外的物理存储空间,因此无须在性能和空间之间进行取舍。此外,通过透明压缩,也直接减少了写入NAND的数据量,减小了数据的写放大,也延长了SSD的使用寿命。
最后,我们其实为ScaleFlux也进行了MySQL的评估,结果也同样令人印象深刻。我也建议大家也关注一下相应的评测结果(https://learn.percona.com/hubfs/Collateral/Whitepapers/Testing-the-Value-of-ScaleFlux.pdf)。