Commit Graph

57 Commits (ca94ad8ef48ba08741b3911a2a4c2ded0601b6d3)

Author SHA1 Message Date
Cory LaNou b62d8c0515 expand variable names for clarity 2015-09-04 13:30:43 -05:00
Cory LaNou 65e652850a btf -> tmin 2015-09-04 13:30:42 -05:00
Cory LaNou 9ab3d89c06 bucketTime* -> tMin* 2015-09-04 13:30:42 -05:00
Cory LaNou 3ca93594c3 BucketTime -> TMin 2015-09-04 13:30:42 -05:00
Cory LaNou 347ffc70b4 wire up advanced top sorting/slicing 2015-09-04 13:30:41 -05:00
Cory LaNou 97f2dc830f comment/type fixes 2015-09-04 13:30:39 -05:00
Cory LaNou 72fd115dc2 exposing tags on cursors, top/bottom are valid funcs now 2015-09-04 13:30:39 -05:00
Jason Wilder e767feb8d9 Fix order by desc with aggregate function not return any values 2015-09-03 22:31:58 -06:00
Jason Wilder 5a6b0afc4b Replace cursor direction with a type 2015-09-03 22:31:48 -06:00
Jason Wilder 266bdc1c2b Support sort by time DESC in wal and bz1 engines 2015-09-03 22:28:36 -06:00
Daniel Morsing c4092d7fc3 Revert "move aggregate functions" 2015-09-02 10:47:58 -07:00
Daniel Morsing 34744b647d unexport some functions
For good measure basically. Not needed for correctness, but it keeps
people from using these.
2015-09-01 14:58:55 -07:00
Daniel Morsing 65340a023b Move aggregate funcs into tsdb
Pure move, No functional changes.
2015-09-01 14:25:59 -07:00
Jason Wilder f72fd247b5 Fix panic when querying against non-fully replicated shards
The TSDBStore was returning a nil mapper if the shard did not exist.  The caller always
assumed the mapper would not be nil causing a panic.  Instead, have the mapper skip the mapping
phase if it's shard reference is nil.  This fixes queries against data-only nodes and against
shards that are not fully replicated in the cluster.

Fixes #3574
2015-08-31 10:03:07 -06:00
Philip O'Toole cf58c38995 go fmt fixes 2015-08-27 18:20:41 -07:00
Daniel Morsing ca7a806e93 Only seek the cursor if it would yield a value of interest
If we've seeked a cursor, then we can be sure that there will be no
data between it and the point that was seeked to. Take advantage of
this fact to only seek when it would yield us a value that would be
different from the last.

In addition, only init the pointsheap when doing a raw query. For
aggregate queries, it is reinitialized on every time bucket, so no
need to seek through all the cursors

For a synthetic database where there was only entries for a tiny
slice of time, it cut queries from 112 seconds to 30 seconds doing
`select mean(value) from cpu where time > now - 2h group by time(1h)`
2015-08-27 10:57:18 -06:00
dgnorton 2cf6233cbc Merge pull request #3808 from influxdb/dmq-show-measurements2
convert SHOW MEASUREMENTS to a distributed query
2015-08-26 11:43:38 -04:00
Daniel Morsing 391d8cd8d7 reuse pointsheapItem
Since we already got a pointsHeapItem, let's just reuse it instead
of allocating a new one. This cuts allocated memory of a 1 million
points aggregate query from 4881.97MB to 4139.86MB
2015-08-25 17:07:34 -06:00
David Norton 88f556af72 convert SHOW MEASUREMENTS to a distributed query 2015-08-23 23:09:51 -04:00
David Norton 5d26cfa4d7 return interface{} from nextChunk* functions 2015-08-22 10:59:29 -04:00
David Norton c8f88f9a61 refactor remote mapping 2015-08-22 10:16:41 -04:00
Paul Dix 1c24cbd8a7 Fix query engine not goroutine safe issue. 2015-08-19 18:43:50 -04:00
Philip O'Toole 7e72a1a6b9 Precompute cursor keys
CPU profiling shows that computing the tagset-based key of each point is significant CPU cost. These keys actually don't change per cursor, so precompute once at mapper-open time, and then use those values as points are drained from the cursor.

Before this change the cursor tag was getting computed on every point, which involved marshalling tags.
2015-08-14 20:02:21 -07:00
Cory LaNou 4e04c069f9 error out if only tags are in the select clause 2015-08-14 15:24:37 -05:00
Cory LaNou 1f7f977c5e minor refactorings based on pr feedback 2015-08-14 15:05:26 -05:00
Cory LaNou 7fdb682966 first pass at raw queries with tags 2015-08-14 15:05:26 -05:00
Cory LaNou dc83c57d7e more wip 2015-08-14 15:05:26 -05:00
Cory LaNou 8ea3c47747 wip 2015-08-14 15:05:26 -05:00
David Norton d661bf1a06 fix #3414: shard mappers perform query re-writing 2015-08-04 09:49:50 -04:00
David Norton b003522a18 use heap for tagSetCursor lookahead 2015-07-31 13:28:46 -04:00
David Norton 0b248e225c Fix aggregate queries and time precision on where clauses. 2015-07-29 15:54:55 -04:00
Philip O'Toole 9949de3f44 Fix typo in comment 2015-07-22 13:59:43 -07:00
Ben Johnson a7f50ae03c refactor storage to engine 2015-07-22 11:08:10 -06:00
Ben Johnson de1f9a3736 refactor tsdb tests into test package 2015-07-22 11:07:06 -06:00
Philip O'Toole 42b4a0b8bf string return is totally unused 2015-07-22 02:55:13 -07:00
Philip O'Toole 45dcf9960c Optimize the very inner loop of cursor iteration
This change moves tracking of next timestamp and values to simple
slices, as performance measurement showed that Peek() on TagSet cursors
was a huge performance drain. There is much more that can be done here,
but with this in place query performance has been restored to 0.9.1
levels.

This change also uses -1 to indicate that no value is available for a
given timestamp.
2015-07-22 02:55:09 -07:00
Philip O'Toole 7e0fa132c8 Raw query with no valid SELECT fields is not data 2015-07-20 15:59:52 -07:00
Philip O'Toole aeb51ec2f5 Remove existence restrictions on field and tags 2015-07-20 15:44:07 -07:00
Philip O'Toole 9b19e1e664 Correctly build union of fields and tags
Previously the fields and tags were getting overwritten with every loop
of Sources.
2015-07-20 14:44:40 -07:00
dgnorton 2aa2fe90dc Merge pull request #3399 from influxdb/mapper-use-statement
mapper takes Statement instead of *SelectStatement
2015-07-20 15:57:56 -04:00
David Norton 7e20c53025 mapper takes Statement instead of *SelectStatement 2015-07-20 15:48:38 -04:00
Philip O'Toole 425a65fca1 RemoteShard mapping now performed over TCP
With this change remote mapping no longer uses HTTP, as the HTTP ports
exposed by nodes on the cluster are not known cluster wide. The TCP
ports exposed by the cluster service are, so this change uses that
functionality. Each RemoteMapper has its own dedicated connection pool
for each node, and remote mapping TCP connections are in no way coupled
with query TCP connections.
2015-07-20 10:44:38 -07:00
Philip O'Toole 4569f3d2ea Factor out aggregate-only code in LocalMapper Open 2015-07-18 22:37:41 -07:00
Philip O'Toole 6b5b652f39 Correct explanatory comments for LocalMapper 2015-07-18 22:28:32 -07:00
Philip O'Toole 3695ebcd4e Move to a single LocalMapper type 2015-07-18 16:10:12 -07:00
Philip O'Toole a2e3f0af3c Remove unused field attribute 2015-07-18 13:19:36 -07:00
Philip O'Toole abc05b0fa8 Remove unused decoders attribute 2015-07-18 13:14:58 -07:00
Philip O'Toole 23b95bf939 Add comment re the complex mapperOutput type 2015-07-17 08:27:53 -07:00
Philip O'Toole 5f357020c6 It's not raw or aggregate, it's just "mapper" 2015-07-17 08:27:49 -07:00
Philip O'Toole 56b61beff9 Remove aggMapperOutput type
It's identical to rawMapperOutput type.
2015-07-17 08:23:36 -07:00