TDSQL Boundless 中的 Compaction 过程主要包括两个动作:读取上一层文件,进行 sort-merge 操作,然后将结果写入下一层或下几层的文件。这个过程主要消耗 CPU 和 I/O 资源。因此,只要系统有足够的资源,Compaction 本身通常不会对业务性能产生明显的影响,甚至可能没有影响。
此外,由于 TDSQL Boundless 采用天然的分布式架构,它可以利用所有节点的资源来进行 Compaction,这与传统的主从架构不同,在主从架构中,通常只有主库的资源被用于处理读写操作(不考虑读写分离的情况)。因此,TDSQL Boundless 的分布式特性有效地弥补了可能需要为 Compaction 准备额外资源的问题。
关于 Compaction 对性能影响的担心,很大程度上是因为早期 RocksDB 实现中相对简单的 Compaction 策略,这留下了一些关于 Compaction 影响的 "传说"。然而,随着版本的不断迭代,Compaction 策略已经进行了大量的优化,使得对性能的影响更加可控。