mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-23 12:31:07 +01:00
lib/storage: do not prefetch metric names for small number of metricIDs
This eliminates prefetchedMetricIDsLock lock contention for queries, which return less than 500 time series.
This is a follow-up for 9d886a2eb0
This commit is contained in:
parent
3c3450fc53
commit
5bdf62de5b
@ -1141,8 +1141,9 @@ func (s *Storage) SearchMetricNames(qt *querytracer.Tracer, tfss []*TagFilters,
|
||||
func (s *Storage) prefetchMetricNames(qt *querytracer.Tracer, srcMetricIDs []uint64, deadline uint64) error {
|
||||
qt = qt.NewChild("prefetch metric names for %d metricIDs", len(srcMetricIDs))
|
||||
defer qt.Done()
|
||||
if len(srcMetricIDs) == 0 {
|
||||
qt.Printf("nothing to prefetch")
|
||||
|
||||
if len(srcMetricIDs) < 500 {
|
||||
qt.Printf("skip pre-fetching metric names for low number of metric ids=%d", len(srcMetricIDs))
|
||||
return nil
|
||||
}
|
||||
|
||||
@ -1160,7 +1161,7 @@ func (s *Storage) prefetchMetricNames(qt *querytracer.Tracer, srcMetricIDs []uin
|
||||
qt.Printf("%d out of %d metric names must be pre-fetched", len(metricIDs), len(srcMetricIDs))
|
||||
if len(metricIDs) < 500 {
|
||||
// It is cheaper to skip pre-fetching and obtain metricNames inline.
|
||||
qt.Printf("skip pre-fetching metric names for low number of metric ids=%d", len(metricIDs))
|
||||
qt.Printf("skip pre-fetching metric names for low number of missing metric ids=%d", len(metricIDs))
|
||||
return nil
|
||||
}
|
||||
atomic.AddUint64(&s.slowMetricNameLoads, uint64(len(metricIDs)))
|
||||
|
Loading…
Reference in New Issue
Block a user