Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • if: currentTaskNum >= concurrent_compaction_thread: return;
  • else:
  • tsfileManagement.readLock(resourceList)
  • 顺序文件链表=tsfileManagement.getSeqList(分区号)
  • 乱序文件链表=tsfileManagement.getUnSeqList(分区号)
    • 如果 compaction_priority=balance
      • doCompactionInBalancePriority(); 
    • 如果 compaction_priority=inner_cross
      • doCompactionInInnerSpacePriority();
    • 如果 compaction_priority=cross_inner
      • doCompactionInCrossSpacePriority();
  • tsfileManagement.readUnLock(resourceList);


doCompactionInBalancePriority

  • hasSelected = true
  • while (hasSelected && currentTaskNum < concurrent_compaction_thread)
    • hasSelected = selectInSpaceFiles(顺序文件链表,isSeq=true)
    • hasSelected |= selectInSpaceFiles(乱序文件链表,isSeq=false)
    • hasSelected |= crossSpaceCompaction();如果 compaction_priority=inner_cross


doCompactionInInnerSpacePriority

  • selectInSpaceFiles(顺序文件链表,isSeq=true)
  • selectInSpaceFiles(乱序文件链表,isSeq=false)
  • crossSpaceCompaction();如果 compaction_priority=cross_inner


doCompactionInCrossSpacePriority

  • crossSpaceCompaction(); 
  • selectInSpaceFiles(顺序文件链表,isSeq=true)
  • selectInSpaceFiles(乱序文件链表,isSeq=false)
  • tsfileManagement.readUnLock(resourceList);


selectInSpaceFiles(双向文件链表, isSeq): 返回是否选中文件做合并

...

  • hasSelected = false
  • 如果 currentTaskNum >= concurrent_compaction_thread
           || !enable_cross_space_compaction
    • return hasSelected;
  • 选择跨文件空间合并候选文件 F
  • 将 F 提交异步任务(跨文件空间合并执行流程)
    • ++currentTaskNum
    • hasSelected = true如果 compaction_priority=balance, break;
    return hasSelected

selectCrossSpaceFiles(乱序文件 U)

  • 候选文件 F = []
  • hasSelected = false
  • for 顺序文件 s in  顺序文件链表 S
    • if isOverlap(U, s) && memoryCost(F, s) < memory_budget
      • 将 s 添加进 F 中
      • hasSelected = true
  • 将 F 提交异步任务(跨文件空间合并执行流程)
    • ++currentTaskNum
    • hasSelected = true
    • 如果 compaction_priority=balance, break;
  • return hasSelected


合并执行任务

空间内合并执行流程

跨文件空间合并执行流程

...