MCPcopy
hub / github.com/dgraph-io/badger / sortByOverlap

Method sortByOverlap

levels.go:833–850  ·  view source on GitHub ↗

sortByOverlap sorts tables in increasing order of overlap with next level.

(tables []*table.Table, cd *compactDef)

Source from the content-addressed store, hash-verified

831
832// sortByOverlap sorts tables in increasing order of overlap with next level.
833func (s *levelsController) sortByOverlap(tables []*table.Table, cd *compactDef) {
834 if len(tables) == 0 || cd.nextLevel == nil {
835 return
836 }
837
838 tableOverlap := make([]int, len(tables))
839 for i := range tables {
840 // get key range for table
841 tableRange := getKeyRange(tables[i])
842 // get overlap with next level
843 left, right := cd.nextLevel.overlappingTables(levelHandlerRLocked{}, tableRange)
844 tableOverlap[i] = right - left
845 }
846
847 sort.Slice(tables, func(i, j int) bool {
848 return tableOverlap[i] < tableOverlap[j]
849 })
850}
851
852func (s *levelsController) fillTables(cd *compactDef) bool {
853 cd.lockLevels()

Callers 2

fillTablesMethod · 0.95

Calls 2

getKeyRangeFunction · 0.85
overlappingTablesMethod · 0.80

Tested by 1