Ed's description is slightly wrong:

Yes, flush is the same as a minor compaction, writing in-memory data
to an RFile. The shell calls this a "flush", because it's a more
intuitive name than "minor compaction". In the technical
documentation, it could be referred to as either, and some of our
configuration options and APIs may have "minc" for minor compaction.

If you just say "compaction", without qualification, it implies "major
compaction", which combines multiple files into one replacement file.
The shell has a "compact" command for forcing one to occur.

Furthermore, major compactions come in a few varieties: partial and
full. A partial one is when only a subset of a tablet's file set are
combined. Ed incorrectly referred to these partial major comapctions
as a minor compaction, but these are still major compactions... they
just don't include all files. A full major compaction is when all the
tablet's files are combined. There are some operations (like dropping
delete markers) that can only occur if the major compaction is of the
full variety.

There is also something called a "merging minor compaction", which is
a kind of flush/minor compaction that also picks up a small file to
combine with. It was overly complex and not really necessary, so we
removed it in 2.1 (not yet released).

There's also some special terms that refer to major compactions that
occur under certain circumstances: chop compactions are partial major
compactions that occur to truncate files in different tablets before
those tablets are merged; idle compactions are major compactions that
happen periodically when a tablet is not busy. Most compactions are
system-initiated, but a user compaction is one that is user-initiated,
such as from the shell's 'compact' command.

I hope that helps.

Reply via email to