我们之所以要将做参数名称和含义上的转换,是因为我们观察到在某些情况下,合并虽然写出的数据量相同,但是由于读入的数据量不同,对系统带来的性能影响也不相同。因此,我们希望将合并读带来的性能影响也考虑进去。同时,对于一个机械硬盘/固态硬盘来说,在系统合并/查询的场景下,限制性能的主要因素不是硬盘最快的顺序读写速度,而是随机读写速度()。在 compaction_write_throughput_mb_per_sec 这个参数的控制下,假如值为 16MB/s ,即允许合并每秒钟写入16 MB 的数据。如果在某个合并场景下,写出的Chunk大小为 1MB,那么每秒钟随机写的次数就是16;如果 Chunk 的大小为 256 KB,那么每秒钟随机写的次数就是 64,这对磁盘写入的压力是并不相同的。因此,我们希望使用 IOPS 作为单位来控制合并的 IO 。一般来说,一个7200RPM的机械硬盘的最大 IOPS 为100-200左右,一个 NVME 的SSD的最大 IOPS 约为 1w-2w。因此,compaction_io_rate_per_sec 的默认值被设置为了 50。但是,在 中观测到了参数转换之后系统在长测下写入性能的下降,初步推测是由于 compaction_io_rate_per_sec 设置为 50 时对系统性能带来的影响大于compaction_write_throughput_mb_per_sec 设置为 16 时的影响。因此,我们需要为 compaction_io_rate_per_sec 找到一个合适的值,使得在各个场景下合并的性能与参数转换前差不多。