InfluxQL 查询管理
此页面记录了 InfluxDB OSS 的早期版本。InfluxDB OSS v2 是最新的稳定版本。请参阅 InfluxDB v2 文档。
使用以下内容管理您的 InfluxQL 查询:
- SHOW QUERIES 以识别当前正在运行的查询
- KILL QUERIES 以停止过载您系统的查询
- 配置设置 以防止和终止低效查询的执行
本页面提供的命令和配置仅适用于 Influx 查询语言(InfluxQL) – 目前不存在等效的 Flux 命令和配置。有关最新的 Flux 文档,请参见 开始使用 Flux。
列出当前正在运行的查询 SHOW QUERIES
SHOW QUERIES 列出查询 ID、查询文本、相关数据库和在您的 InfluxDB 实例上所有当前运行的查询的持续时间。
语法
SHOW QUERIES
示例
> SHOW QUERIES
qid query database duration status
--- ----- -------- -------- ------
37 SHOW QUERIES 100368u running
36 SELECT mean(myfield) FROM mymeas mydb 3s running
输出说明
qid: 查询的ID编号。使用这个值与KILL - QUERY。query: 查询文本。database: 查询针对的数据库。duration: 查询运行的时间长度。查看 Query Language Reference 以获取关于InfluxDB数据库中时间单位的解释。SHOW QUERIES可能会输出一个被终止的查询,并继续增加其持续时间,直到查询记录从内存中清除。status: 查询的当前状态。
使用 KILL QUERY 停止当前运行的查询
KILL QUERY 告诉 InfluxDB 停止运行相关的查询。
语法
其中 qid 是查询 ID,在 SHOW QUERIES 输出中显示:
KILL QUERY <qid>
InfluxDB企业集群: 在集群上终止查询时,您需要指定查询ID(qid)和TCP主机(例如,myhost:8088),可在SHOW QUERIES输出中获得。
KILL QUERY <qid> ON "<host>"
成功的 KILL QUERY 查询不返回任何结果。
示例
-- kill query with qid of 36 on the local host
> KILL QUERY 36
>
-- kill query on InfluxDB Enterprise cluster
> KILL QUERY 53 ON "myhost:8088"
>
查询管理的配置设置
以下配置设置位于配置文件的 coordinator部分。
max-concurrent-queries
允许在您的实例上运行的最大查询数。 默认设置 (0) 允许执行无限数量的查询。
如果超过 max-concurrent-queries,InfluxDB 将不执行查询并输出以下错误:
ERR: max concurrent queries reached
query-timeout
查询在您的实例上可以运行的最大时间,超过这个时间InfluxDB将终止查询。 默认设置 ("0") 允许查询无限制地运行。 此设置是一个 持续时间文字。
如果您的查询超过查询超时时间,InfluxDB 将终止查询并输出以下错误:
ERR: query timeout reached
log-queries-after
查询可以运行的最长时间,超过这个时间后,InfluxDB 会记录带有 Detected slow query 消息的查询。 默认设置 ("0") 将永远不会告诉 InfluxDB 记录该查询。 这个设置是一个 持续时间字面量。
设置 log-queries-after 为 "1s" 的示例日志输出:
[query] 2016/04/28 14:11:31 Detected slow query: SELECT mean(usage_idle) FROM cpu WHERE time >= 0 GROUP BY time(20s) (qid: 3, database: telegraf, threshold: 1s)
qid 是查询的ID号码。
使用这个值与 KILL QUERY。
日志输出文件的默认位置是 /var/log/influxdb/influxdb.log。然而,在使用systemd的系统上(大多数现代Linux发行版),这些日志会输出到 journalctl。您应该能够使用以下命令查看InfluxDB日志: journalctl -u influxdb
max-select-point
一个SELECT语句可以处理的最大points数量。默认设置 (0) 允许SELECT语句处理无限数量的点。
如果您的查询超过 max-select-point,InfluxDB 会终止查询并输出以下错误:
ERR: max number of points reached
InfluxDB每秒检查点数(因此超出最大值的查询不会立即中止)。
max-select-series
一个 series 的最大数量
SELECT 语句可以处理。默认设置 (0) 允许 SELECT 语句处理无限数量的系列。
如果您的查询超过 max-select-series,InfluxDB 将不会执行该查询并输出以下错误:
ERR: max select series count exceeded: <query_series_count> series
max-select-buckets
一个查询可以处理的GROUP BY time()桶的最大数量。默认设置 (0) 允许查询处理无限数量的桶。
如果您的查询超过了 max-select-buckets,InfluxDB 不会执行该查询并输出以下错误:
ERR: max select bucket count exceeded: <query_bucket_count> buckets