I'm confused , plz ingore the mail above. Here is my confusion , posterior to 0.6.6/0.7 , minor compaction and major compaction both can clean out rows 'tagged' tombstones , and generate a new , without tombstones , sstable . And the tombstones remains in memory ,waiting to be removed by jvm gc . Am i right?
On Wed, Dec 1, 2010 at 9:10 PM, Ying Tang <ivytang0...@gmail.com> wrote: > 1. So posterior to 0.6.6/0.7 , minor compaction and major compaction both > can clean out rows 'tagged' tombstones , this kind of clean out doesn't > mead remove it from the disk permanently. > The real remove is done by the jvm GC ? > 2. The intence of compaction is merging multi sstables into one , clean out > the tombstone , let the un-tombstones rows be into a new ordered sstable ? > > > > On Wed, Dec 1, 2010 at 7:30 PM, Sylvain Lebresne <sylv...@yakaz.com>wrote: > >> On Wed, Dec 1, 2010 at 12:11 PM, Ying Tang <ivytang0...@gmail.com> wrote: >> > And i have another question , what's the difference between minor >> > compaction and major compaction? >> >> A major compaction is a compaction that compact *all* the SSTables of a >> given >> column family (compaction compacts one CF at a time). >> >> Before https://issues.apache.org/jira/browse/CASSANDRA-1074 >> (introduced in 0.6.6 and >> recent 0.7 betas/rcs), major compactions where the only ones that removed >> the >> tombstones (see http://wiki.apache.org/cassandra/DistributedDeletes) >> and this is the >> reason major compaction exists. Now, with #1074, minor compactions >> should remove most >> if not all tombstones, so major compaction are not or much less useful >> (it may depend on your >> workload though as minor can't always delete the tombstones). >> >> -- >> Sylvain >> >> > >> > On 12/1/10, Chen Xinli <chen.d...@gmail.com> wrote: >> >> 2010/12/1 Ying Tang <ivytang0...@gmail.com> >> >> >> >>> Every time cassandra creates a new sstable , it will call the >> >>> CompactionManager.submitMinorIfNeeded ? And if the number of >> memtables is >> >>> beyond MinimumCompactionThreshold , the minor compaction will be >> called. >> >>> And there is also a method named CompactionManager.submitMajor , and >> the >> >>> call relationship is : >> >>> >> >>> NodeCmd -- > NodeProbe -->StorageService.forceTableCompaction --> >> >>> Table.forceCompaction -->CompactionManager.performMajor --> >> >>> CompactionManager.submitMajor >> >>> >> >>> ColumnFamilyStore.forceMajorCompaction --> >> CompactionManager.performMajor >> >>> --> CompactionManager.submitMajor >> >>> >> >>> >> >>> HintedHandOffManager >> >>> --> CompactionManager.submitMajor >> >>> >> >>> So i have 3 questions: >> >>> 1. Once a new sstable has been created , >> >>> CompactionManager.submitMinorIfNeeded will be called , >> minorCompaction >> >>> maybe called . >> >>> But when will the majorCompaction be called ? Just the NodeCmd ? >> >>> >> >> >> >> Yes, majorCompaction must be called manually from NodeCmd >> >> >> >> >> >>> 2. Which jobs will minorCompaction and majorCompaction do ? >> >>> Will minorCompaction delete the data that have been marked as >> deleted >> >>> ? >> >>> And how about the major compaction ? >> >>> >> >> >> >> Compaction only mark sstables as deleted. Deletion will be done when >> there >> >> are full gc, or node restarted. >> >> >> >> >> >>> 3. When gc be called ? Every time compaction been called? >> >>> >> >> >> >> GC has nothing to do with compaction, you may mistake the two >> conceptions >> >> >> >> >> >>> >> >>> >> >>> >> >>> -- >> >>> Best regards, >> >>> >> >>> Ivy Tang >> >>> >> >>> >> >>> >> >>> >> >> >> >> >> >> -- >> >> Best Regards, >> >> Chen Xinli >> >> >> > >> > >> > -- >> > Best regards, >> > >> > Ivy Tang >> > >> > > > > -- > Best regards, > > Ivy Tang > > > > -- Best regards, Ivy Tang