InfluxDB 1.1 released with up to 60% performance increase and new query functionality

Jason Wilder — November 14, 2016

Roughly 2 months after the release of InfluxDB 1.0, we are already releasing v1.1 that includes a number of key performance and stability improvements as well as some new query capabilities. This highlights our commitment to iterate quickly based on the feedback of the community.

Performance Improvements

There are many changes throughout the code that reduce memory allocations.  Reducing memory allocations alleviates pressure on the the Go garbage collector and improves performance throughout the system.  The majority of changes occurred in the write, query and compaction code paths.  These changes should help reduce RSS and Heap usage as well as CPU utilization for some users.

Write throughput has increased substantially.  Our influx-stress benchmark running on an AWS c4.4xlarge results in approximately 900,000 values per second on average.

Query performance has also improved significantly due to memory allocation removal and optimizations in the query path.  first() and last() query performance without a GROUP BY has improved 60% on average.  Queries across both sparse and dense datasets have also improved.

Query planning where a regular expression is used to match an exact tag value are now re-written to use direct index lookups when possible.  These types of queries are frequently generated by Grafana when matching template variables and should be more performant now.

Stability Improvements

One of the more significant changes allows for sparse, high cardinality data sets to be queried without triggering an out of memory condition.  Data sets with many ephemeral tag values were frequent causes of queries exhausting all available memory.  Queries across these datasets should now complete with much less RAM usage.

High cardinality data is a frequent source of problems for many new users.  This release also adds a max-values-per-tag limit with a default of 100,000 to help prevent high cardinality data from being written before it can be fixed.  The limit is enabled by default and can be disabled in the config if necessary.

New Query Capabilities

A number of new query capabilities are now available:

  • fill(linear) linearly interpolates missing values
  • cumulative_sum() computes a sequence of partial sums
  • Support for the ON clause for all SHOW commands
  • Support for regular expressions on field keys in the SELECT clause.  For example, SELECT /cpu_\d/ FROM cpu

Deprecations

The admin UI (port 8083) is now officially deprecated and disabled in this release.  It can be re-enabled in the config, but will be removed in a future release.  We recommend using Chrongraf or Grafana as a replacement.

Upgrading

This release should be a drop-in replacement for 1.0 with no data migration required.  There are some configuration changes that may need to be updated prior to upgrading to avoid downtime.  Make sure to read the CHANGELOG prior to upgrading.

What’s next

  • Download the Open Source TICK-stack to get started
  • Try InfluxCloud for FREE – Try InfluxDB with fully-managed clusters, Kapacitor, and Grafana
  • Try InfluxEnterprise for FREE on your own hardware –  includes monitoring and rebalancing clusters, plus managing backups and restore
  • Tell Your Story: Over 100 companies have shared their story on how InfluxDB is helping them succeed. Submit your testimonial and get a limited edition hoodie as a thank you!