Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-6441

Explore merging memtables directly with L1

Agile BoardAttach filesAttach ScreenshotBulk Copy AttachmentsBulk Move AttachmentsAdd voteVotersWatch issueWatchersCreate sub-taskConvert to sub-taskMoveLinkCloneLabelsUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    Description

      Currently, memtables flush to L0 and are then compacted with L1, so you automatically have 100% write amplification for unique cells right off the bat.

      http://dl.acm.org/citation.cfm?id=2213862 suggests splitting the memtable into pieces corresponding to the ranges of the sstables in L1 and turning the flush + compact into a single write – that is, we'd "compact" the data in the L1 sstable with the corresponding data in the memtable.

      This would add some complexity around blocking memtable sections until the corresponding L1 piece is no longer involved in its own compaction with L2, and probably a "panic dump" to the old L0 behavior if we run low on memory. But in theory it sounds like a promising optimization.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            Unassigned Unassigned Assign to me
            jbellis Jonathan Ellis

            Dates

              Created:
              Updated:

              Slack

                Issue deployment