Hey my favorite question! It is a loaded question and it depends on
your workload. The answer has evolved over time.

In the old days <0.6.5 the only way to remove tombstones was major
compaction. This is not true in any modern version.

(Also in the old days you had to run cleanup to clear hints)

Cassandra now has two compaction strategies SizeTiered and Leveled.
Leveled DB can not be manually compacted.


You final two sentences are good ground rules. In our case we have
some column families that have high churn, for example a gc_grace
period of 4 days but the data is re-written completely every day.
Write activity over time will eventually cause tombstone removal but
we can expedite the process by forcing a major at night. Because the
tables are not really growing the **warning** below does not apply.

**Warning** this creates one large sstable. Which is not always
desirable, because it fiddles with the heuristics of SizeTiered
(having one big table and other smaller ones).

The updated answer is "You probably do not want to run major
compactions, but some use cases could see some benefits"

On Tue, Jun 19, 2012 at 10:51 AM, Raj N <raj.cassan...@gmail.com> wrote:
> DataStax recommends not to run major compactions. Edward Capriolo's
> Cassandra High Performance book suggests that major compaction is a good
> thing. And should be run on a regular basis. Are there any ground rules
> about running major compactions? For example, if you have write-once kind of
> data that is never updated  then it probably makes sense to not run major
> compaction. But if you have data which can be deleted or overwritten does it
> make sense to run major compaction on a regular basis?
>
> Thanks
> -Raj

Reply via email to