compaction时两种算法分别有什么不同呢?

看了下compaction时候的源码,貌似compaction的时候会选择HORIZONTAL_COMPACTION或VERTICAL_COMPACTION。
VERTICAL_COMPACTION好像是表的列比较多(我看配置里是大于5列以上)就会走这种。这种是以列组的形式走 VerticalBetaRowsetWriter::add_columns 这个函数

HORIZONTAL_COMPACTION走的和写数据时候的方法一样是HorizontalBetaRowsetWriter::add_chunk 这个函数

想请问下这两种compaction 算法有何不同呢?分别对应怎样的情况进行优化呢?如果相反使用会对结果产生影响么?