Optimizing tsi compaction.

pull/7913/head
Ben Johnson 2016-12-27 09:22:15 -07:00
parent 1ce99e797f
commit dcd2a771b0
No known key found for this signature in database
GPG Key ID: 81741CD251883081
2 changed files with 11 additions and 11 deletions

View File

@ -390,8 +390,7 @@ func (f *LogFile) Series(name []byte, tags models.Tags) SeriesElem {
return nil
}
key := models.MakeKey(name, tags)
serie := mm.series[string(key)]
serie := mm.series[string(AppendSeriesKey(make([]byte, 0, 256), name, tags))]
if serie == nil {
return nil
}
@ -491,7 +490,7 @@ func (f *LogFile) execSeriesEntry(e *LogEntry) {
}
// Generate key & series, if not exists.
key := models.MakeKey(e.Name, e.Tags)
key := AppendSeriesKey(make([]byte, 0, 256), e.Name, e.Tags)
serie := mm.series[string(key)]
if serie == nil {
serie = &logSerie{name: e.Name, tags: e.Tags, deleted: deleted}
@ -515,13 +514,13 @@ func (f *LogFile) execSeriesEntry(e *LogEntry) {
// Update the sketches...
if deleted {
// TODO(edd) decrement series count...
f.sTSketch.Add(models.MakeKey(e.Name, e.Tags)) // Deleting series so update tombstone sketch.
f.sTSketch.Add(key) // Deleting series so update tombstone sketch.
return
}
// TODO(edd) increment series count....
f.sSketch.Add(models.MakeKey(e.Name, e.Tags)) // Add series to sketch.
f.mSketch.Add(e.Name) // Add measurement to sketch as this may be the fist series for the measurement.
f.sSketch.Add(key) // Add series to sketch.
f.mSketch.Add(e.Name) // Add measurement to sketch as this may be the fist series for the measurement.
}
// SeriesIterator returns an iterator over all series in the log file.
@ -593,8 +592,8 @@ func (f *LogFile) MeasurementSeriesIterator(name []byte) SeriesIterator {
// WriteTo compacts the log file and writes it to w.
func (f *LogFile) WriteTo(w io.Writer) (n int64, err error) {
f.mu.Lock()
defer f.mu.Unlock()
f.mu.RLock()
defer f.mu.RUnlock()
// Wrap in bufferred writer.
bw := bufio.NewWriter(w)
@ -712,10 +711,11 @@ func (f *LogFile) writeSeriesBlockTo(w io.Writer, n *int64) error {
t.tagValues[string(tag.Value)] = v
}
key := AppendSeriesKey(make([]byte, 0, 256), serie.name, serie.tags)
if serie.Deleted() {
sw.TSketch.Add(models.MakeKey(serie.name, serie.tags))
sw.TSketch.Add(key)
} else {
sw.Sketch.Add(models.MakeKey(serie.name, serie.tags))
sw.Sketch.Add(key)
}
}

View File

@ -59,7 +59,7 @@ type SeriesBlock struct {
// HasSeries returns flags indicating if the series exists and if it is tombstoned.
func (blk *SeriesBlock) HasSeries(name []byte, tags models.Tags) (exists, tombstoned bool) {
buf := AppendSeriesKey(nil, name, tags)
buf := AppendSeriesKey(make([]byte, 0, 256), name, tags)
bufN := uint32(len(buf))
n := blk.seriesIndexN