Documentation

Influx 查询语言 (InfluxQL) 参考

简介

InfluxQL 是一种类似于 SQL 的查询语言,用于与 InfluxDB 进行交互,提供特定于存储和分析时间序列数据的功能。

查找Influx查询语言(InfluxQL)的定义和详细信息,包括:

要了解更多关于InfluxQL的信息,请浏览以下主题:

符号

语法使用扩展巴克斯-诺尔范式(“EBNF”)指定。 EBNF是Go编程语言规范中使用的相同符号,可以在这里找到。

Production  = production_name "=" [ Expression ] "." .
Expression  = Alternative { "|" Alternative } .
Alternative = Term { Term } .
Term        = production_name | token [ "…" token ] | Group | Option | Repetition .
Group       = "(" Expression ")" .
Option      = "[" Expression "]" .
Repetition  = "{" Expression "}" .

按优先级递增顺序的符号运算符:

|   alternation
()  grouping
[]  option (0 or 1 times)
{}  repetition (0 to n times)

查询表示

字符

InfluxQL是以UTF-8编码的Unicode文本。

newline             = /* the Unicode code point U+000A */ .
unicode_char        = /* an arbitrary Unicode code point except newline */ .

字母和数字

字母是ASCII字符集加上下划线字符_(U+005F)被视为字母。

仅支持十进制数字。

letter              = ascii_letter | "_" .
ascii_letter        = "A" … "Z" | "a" … "z" .
digit               = "0" … "9" .

标识符

标识符是指代 数据库 名称、保留策略 名称、用户 名称、测量 名称、标签键字段键 的标记。

规则:

  • 双引号标识符可以包含除换行符以外的任何Unicode字符
  • 双引号标识符可以包含转义的 " 字符(即,\"
  • 双引号标识符可以包含 InfluxQL 关键字
  • 未加引号的标识符必须以大写或小写ASCII字符或“_”开头
  • 未引用的标识符只能包含ASCII字母、十进制数字和“_”
identifier          = unquoted_identifier | quoted_identifier .
unquoted_identifier = ( letter ) { letter | digit } .
quoted_identifier   = `"` unicode_char { unicode_char } `"` .

示例

cpu
_cpu_stats
"1h"
"anything really"
"1_Crazy-1337.identifier>NAME👍"

关键词

ALL           ALTER         ANY           AS            ASC           BEGIN
BY            CREATE        CONTINUOUS    DATABASE      DATABASES     DEFAULT
DELETE        DESC          DESTINATIONS  DIAGNOSTICS   DISTINCT      DROP
DURATION      END           EVERY         EXPLAIN       FIELD         FOR
FROM          GRANT         GRANTS        GROUP         GROUPS        IN
INF           INSERT        INTO          KEY           KEYS          KILL
LIMIT         SHOW          MEASUREMENT   MEASUREMENTS  NAME          OFFSET
ON            ORDER         PASSWORD      POLICY        POLICIES      PRIVILEGES
QUERIES       QUERY         READ          REPLICATION   RESAMPLE      RETENTION
REVOKE        SELECT        SERIES        SET           SHARD         SHARDS
SLIMIT        SOFFSET       STATS         SUBSCRIPTION  SUBSCRIPTIONS TAG
TO            USER          USERS         VALUES        WHERE         WITH
WRITE

如果您在查询中使用 InfluxQL 关键字作为 标识符,您需要在每个查询中对该标识符进行双引号包围。

关键字 time 是一个特例。 time 可以是一个 连续查询 名称, 数据库名称, 测量 名称, 保留策略 名称, 订阅 名称,以及 用户 名称。 在这些情况下,time 在查询中不需要双引号。 time 不能是 字段关键字标签关键字; InfluxDB 拒绝将 time 作为字段关键字或标签关键字的写入,并返回错误。 有关更多信息,请参见 常见问题解答

字面量

整数

InfluxQL 支持十进制整数文字。目前不支持十六进制和八进制文字。

int_lit             = ( "1" … "9" ) { digit } .

浮动数

InfluxQL支持浮点文字。 目前不支持指数。

float_lit           = int_lit "." int_lit .

字符串

字符串字面量必须用单引号括起来。 字符串可以包含 ' 字符,只要它们被转义(即,\')。

string_lit          = `'` { unicode_char } `'` .

持续时间

持续时间字面量指定一段时间。紧跟其后没有空格的整数字面量与下面列出的持续时间单位组合被解释为持续时间字面量。持续时间可以用混合单位来指定。

持续时间单位
单位含义
ns纳秒(十亿分之一秒)
u或µ微秒(1百万分之一秒)
ms毫秒 (千分之一秒)
s
m分钟
h小时
d
w
duration_lit        = int_lit duration_unit .
duration_unit       = "ns" | "u" | "µ" | "ms" | "s" | "m" | "h" | "d" | "w" .

日期和时间

日期和时间文字格式在EBNF中未像本文档的其余部分那样指定。它是使用Go的日期/时间解析格式进行指定的,该格式是以InfluxQL所需的格式书写的参考日期。参考日期时间为:

InfluxQL 参考日期时间:2006年1月2日下午3:04:05

time_lit            = "2006-01-02 15:04:05.999999" | "2006-01-02" .

布尔值

bool_lit            = TRUE | FALSE .

正则表达式

regex_lit           = "/" { unicode_char } "/" .

比较器: =~ 匹配 !~ 不匹配

注意: InfluxQL 在指定时支持使用正则表达式:

目前,InfluxQL 不支持在 WHERE 子句中匹配 非字符串 字段值,数据库保留策略

查询

查询由一个或多个用分号分隔的语句组成。

query               = statement { ";" statement } .

statement           = alter_retention_policy_stmt |
                      create_continuous_query_stmt |
                      create_database_stmt |
                      create_retention_policy_stmt |
                      create_subscription_stmt |
                      create_user_stmt |
                      delete_stmt |
                      drop_continuous_query_stmt |
                      drop_database_stmt |
                      drop_measurement_stmt |
                      drop_retention_policy_stmt |
                      drop_series_stmt |
                      drop_shard_stmt |
                      drop_subscription_stmt |
                      drop_user_stmt |
                      explain_stmt |
                      explain_analyze_stmt |
                      grant_stmt |
                      kill_query_statement |
                      revoke_stmt |
                      select_stmt |
                      show_continuous_queries_stmt |
                      show_databases_stmt |
                      show_diagnostics_stmt |
                      show_field_key_cardinality_stmt |
                      show_field_keys_stmt |
                      show_grants_stmt |
                      show_measurement_cardinality_stmt |
                      show_measurement_exact_cardinality_stmt |
                      show_measurements_stmt |
                      show_queries_stmt |
                      show_retention_policies_stmt |
                      show_series_cardinality_stmt |
                      show_series_exact_cardinality_stmt |
                      show_series_stmt |
                      show_shard_groups_stmt |
                      show_shards_stmt |
                      show_stats_stmt |
                      show_subscriptions_stmt |
                      show_tag_key_cardinality_stmt |
                      show_tag_key_exact_cardinality_stmt |
                      show_tag_keys_stmt |
                      show_tag_values_stmt |
                      show_tag_values_cardinality_stmt |
                      show_users_stmt .

语句

更改保留策略

alter_retention_policy_stmt  = "ALTER RETENTION POLICY" policy_name on_clause
                               retention_policy_option
                               [ retention_policy_option ]
                               [ retention_policy_option ]
                               [ retention_policy_option ] .

示例

-- Set default retention policy for mydb to 1h.cpu.
ALTER RETENTION POLICY "1h.cpu" ON "mydb" DEFAULT

-- Change duration and replication factor.
-- REPLICATION (replication factor) not valid for OSS instances.
ALTER RETENTION POLICY "policy1" ON "somedb" DURATION 1h REPLICATION 4

创建连续查询

create_continuous_query_stmt = "CREATE CONTINUOUS QUERY" query_name on_clause
                               [ "RESAMPLE" resample_opts ]
                               "BEGIN" select_stmt "END" .

query_name                   = identifier .

resample_opts                = (every_stmt for_stmt | every_stmt | for_stmt) .
every_stmt                   = "EVERY" duration_lit
for_stmt                     = "FOR" duration_lit

示例

-- selects from DEFAULT retention policy and writes into 6_months retention policy
CREATE CONTINUOUS QUERY "10m_event_count"
ON "db_name"
BEGIN
  SELECT count("value")
  INTO "6_months"."events"
  FROM "events"
  GROUP (10m)
END;

-- this selects from the output of one continuous query in one retention policy and outputs to another series in another retention policy
CREATE CONTINUOUS QUERY "1h_event_count"
ON "db_name"
BEGIN
  SELECT sum("count") as "count"
  INTO "2_years"."events"
  FROM "6_months"."events"
  GROUP BY time(1h)
END;

-- this customizes the resample interval so the interval is queried every 10s and intervals are resampled until 2m after their start time
-- when resample is used, at least one of "EVERY" or "FOR" must be used
CREATE CONTINUOUS QUERY "cpu_mean"
ON "db_name"
RESAMPLE EVERY 10s FOR 2m
BEGIN
  SELECT mean("value")
  INTO "cpu_mean"
  FROM "cpu"
  GROUP BY time(1m)
END;

创建数据库

create_database_stmt = "CREATE DATABASE" db_name
                       [ WITH
                           [ retention_policy_duration ]
                           [ retention_policy_replication ]
                           [ retention_policy_shard_group_duration ]
                           [ retention_policy_name ]
                       ] .

复制因子在单节点实例中没有作用。

示例

-- Create a database called foo
CREATE DATABASE "foo"

-- Create a database called bar with a new DEFAULT retention policy and specify the duration, replication, shard group duration, and name of that retention policy
CREATE DATABASE "bar" WITH DURATION 1d REPLICATION 1 SHARD DURATION 30m NAME "myrp"

-- Create a database called mydb with a new DEFAULT retention policy and specify the name of that retention policy
CREATE DATABASE "mydb" WITH NAME "myrp"

创建保留策略

create_retention_policy_stmt = "CREATE RETENTION POLICY" policy_name on_clause
                               retention_policy_duration
                               retention_policy_replication
                               [ retention_policy_shard_group_duration ]
                               [ "DEFAULT" ] .

复制因子在单节点实例中没有作用。

示例

-- Create a retention policy.
CREATE RETENTION POLICY "10m.events" ON "somedb" DURATION 60m REPLICATION 2

-- Create a retention policy and set it as the DEFAULT.
CREATE RETENTION POLICY "10m.events" ON "somedb" DURATION 60m REPLICATION 2 DEFAULT

-- Create a retention policy and specify the shard group duration.
CREATE RETENTION POLICY "10m.events" ON "somedb" DURATION 60m REPLICATION 2 SHARD DURATION 30m

创建订阅

订阅告诉InfluxDB将其接收到的所有数据发送到 Kapacitor

create_subscription_stmt = "CREATE SUBSCRIPTION" subscription_name "ON" db_name "." retention_policy "DESTINATIONS" ("ANY"|"ALL") host { "," host} .

示例

-- Create a SUBSCRIPTION on database 'mydb' and retention policy 'autogen' that send data to 'example.com:9090' via UDP.
CREATE SUBSCRIPTION "sub0" ON "mydb"."autogen" DESTINATIONS ALL 'udp://example.com:9090'

-- Create a SUBSCRIPTION on database 'mydb' and retention policy 'autogen' that round robins the data to 'h1.example.com:9090' and 'h2.example.com:9090'.
CREATE SUBSCRIPTION "sub0" ON "mydb"."autogen" DESTINATIONS ANY 'udp://h1.example.com:9090', 'udp://h2.example.com:9090'

创建用户

create_user_stmt = "CREATE USER" user_name "WITH PASSWORD" password
                   [ "WITH ALL PRIVILEGES" ] .

示例

-- Create a normal database user.
CREATE USER "jdoe" WITH PASSWORD '1337password'

-- Create an admin user.
-- Note: Unlike the GRANT statement, the "PRIVILEGES" keyword is required here.
CREATE USER "jdoe" WITH PASSWORD '1337password' WITH ALL PRIVILEGES

注意: 密码字符串必须用单引号括起来。

删除

delete_stmt = "DELETE" ( from_clause | where_clause | from_clause where_clause ) .

示例

DELETE FROM "cpu"
DELETE FROM "cpu" WHERE time < '2000-01-01T00:00:00Z'
DELETE WHERE time < '2000-01-01T00:00:00Z'

删除连续查询

drop_continuous_query_stmt = "DROP CONTINUOUS QUERY" query_name on_clause .

示例

DROP CONTINUOUS QUERY "myquery" ON "mydb"

删除数据库

drop_database_stmt = "DROP DATABASE" db_name .

示例

DROP DATABASE "mydb"

删除度量

drop_measurement_stmt = "DROP MEASUREMENT" measurement .

示例

-- drop the cpu measurement
DROP MEASUREMENT "cpu"

删除保留策略

drop_retention_policy_stmt = "DROP RETENTION POLICY" policy_name on_clause .

示例

-- drop the retention policy named 1h.cpu from mydb
DROP RETENTION POLICY "1h.cpu" ON "mydb"

删除系列

drop_series_stmt = "DROP SERIES" ( from_clause | where_clause | from_clause where_clause ) .

注意:WHERE子句中不支持按时间过滤。

示例

DROP SERIES FROM "telegraf"."autogen"."cpu" WHERE cpu = 'cpu8'

删除分片

drop_shard_stmt = "DROP SHARD" ( shard_id ) .

示例

DROP SHARD 1

删除订阅

drop_subscription_stmt = "DROP SUBSCRIPTION" subscription_name "ON" db_name "." retention_policy .

示例

DROP SUBSCRIPTION "sub0" ON "mydb"."autogen"

删除用户

drop_user_stmt = "DROP USER" user_name .

示例

DROP USER "jdoe"

解释

解析并规划查询,然后打印出估计成本的摘要。

许多SQL引擎使用EXPLAIN语句来显示连接顺序、连接算法以及谓词和表达式下推。由于InfluxQL不支持连接,因此InfluxQL查询的成本通常是访问的总系列、对TSM文件的迭代器访问次数以及需要扫描的TSM块数量的函数。

查询计划的 EXPLAIN 元素包括:

  • 表达式
  • 辅助字段
  • 分片数量
  • 序列的数量
  • 缓存值
  • 文件数量
  • 块的数量
  • 块的大小
explain_stmt = "EXPLAIN" select_stmt .

示例

> explain select sum(pointReq) from "_internal"."monitor"."write" group by hostname;
> QUERY PLAN
------
EXPRESSION: sum(pointReq::integer)
NUMBER OF SHARDS: 2
NUMBER OF SERIES: 2
CACHED VALUES: 110
NUMBER OF FILES: 1
NUMBER OF BLOCKS: 1
SIZE OF BLOCKS: 931

解释分析

执行指定的 SELECT 语句,并在运行时返回查询性能和存储的数据,表现为树形结构。使用此语句分析查询性能和存储,包括 执行时间计划时间,以及 迭代器类型游标类型

例如,执行以下语句:

> explain analyze select mean(usage_steal) from cpu where time >= '2018-02-22T00:00:00Z' and time < '2018-02-22T12:00:00Z'

可能会产生类似以下的输出:

EXPLAIN ANALYZE
---------------
.
└── select
    ├── execution_time: 2.25823ms
    ├── planning_time: 18.381616ms
    ├── total_time: 20.639846ms
    └── field_iterators
        ├── labels
           └── statement: SELECT mean(usage_steal::float) FROM telegraf."default".cpu
        └── expression
            ├── labels
               └── expr: mean(usage_steal::float)
            └── create_iterator
                ├── labels
                   ├── measurement: cpu
                   └── shard_id: 608
                ├── cursors_ref: 779
                ├── cursors_aux: 0
                ├── cursors_cond: 0
                ├── float_blocks_decoded: 431
                ├── float_blocks_size_bytes: 1003552
                ├── integer_blocks_decoded: 0
                ├── integer_blocks_size_bytes: 0
                ├── unsigned_blocks_decoded: 0
                ├── unsigned_blocks_size_bytes: 0
                ├── string_blocks_decoded: 0
                ├── string_blocks_size_bytes: 0
                ├── boolean_blocks_decoded: 0
                ├── boolean_blocks_size_bytes: 0
                └── planning_time: 14.805277ms```

注意:EXPLAIN ANALYZE 忽略查询输出,因此序列化为 JSON 或 CSV 的成本不计入。

执行时间

显示查询执行所需的时间,包括读取时间序列数据、在迭代器中进行操作,以及从迭代器中排出处理后的数据。执行时间不包括将输出序列化为JSON或其他格式所需的时间。

计划时间

显示查询计划所需的时间。 在 InfluxDB 中计划查询需要多个步骤。根据查询的复杂性,计划可能需要比执行查询更多的工作,并消耗更多的 CPU 和内存资源。例如,执行查询所需的系列键的数量会影响查询的计划速度和所需的内存。

首先,InfluxDB 确定查询的有效时间范围并选择要访问的分片(在 InfluxDB Enterprise 中,分片可能位于远程节点上)。接下来,对于每个分片和每个测量值,InfluxDB 执行以下步骤:

  1. 从索引中选择匹配的系列键,通过WHERE子句中的标签谓词进行过滤。
  2. 根据 GROUP BY 维度将筛选后的系列键分组到标签集合中。
  3. 枚举每个标签集,并为每个系列键创建一个游标和迭代器。
  4. 合并迭代器并将合并结果返回给查询执行器。
迭代器类型

EXPLAIN ANALYZE 支持以下迭代器类型:

  • create_iterator 节点表示本地 influxd 实例完成的工作──一个复杂的嵌套迭代器组合和合并,生成最终查询输出。
  • (仅限 InfluxDB Enterprise) remote_iterator 节点表示在远程机器上完成的工作。

有关迭代器的更多信息,请参见 Understanding iterators

光标类型

EXPLAIN ANALYZE 区分了 3 种游标类型。虽然游标类型具有相同的数据结构并且 CPU 和 I/O 成本相等,但每种游标类型都是出于不同的原因构建的,并在最终输出中分开。在调整语句时,请考虑以下游标类型:

  • cursor_ref: 为包含函数的SELECT投影创建的引用游标,例如 last()mean()
  • cursor_aux: 为简单表达式投影创建的辅助游标(不是选择器或聚合)。例如,SELECT foo FROM mSELECT foo+bar FROM m,其中 foobar 是字段。
  • cursor_cond: 为在 WHERE 子句中引用的字段创建的条件游标。

有关游标的更多信息,请参阅 Understanding cursors

区块类型

EXPLAIN ANALYZE 分离存储块类型,并报告解码的总块数及其在磁盘上的大小(以字节为单位)。支持以下块类型:

| float | 64位 IEEE-754 浮点数 | | integer | 64位有符号整数 | | unsigned | 64位无符号整数 | | boolean | 1位,LSB 编码 | | string | UTF-8 字符串 |

有关存储块的更多信息,请参见 TSM files

授予

注意: 用户可以被授予尚不存在的数据库的权限。

grant_stmt = "GRANT" privilege [ on_clause ] to_clause .

示例

-- grant admin privileges
GRANT ALL TO "jdoe"

-- grant read access to a database
GRANT READ ON "mydb" TO "jdoe"

终止查询

停止当前正在运行的查询。

kill_query_statement = "KILL QUERY" query_id .

其中 query_id 是查询 ID,在 SHOW QUERIES 输出中显示为 qid

InfluxDB企业集群: 在集群上终止查询时,您需要指定查询ID(qid)和TCP主机(例如,myhost:8088),可在SHOW QUERIES输出中获得。

终止查询 在“


#### Examples

```sql
-- 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"

撤销

revoke_stmt = "REVOKE" privilege [ on_clause ] "FROM" user_name .

示例

-- revoke admin privileges from jdoe
REVOKE ALL PRIVILEGES FROM "jdoe"

-- revoke read privileges from jdoe on mydb
REVOKE READ ON "mydb" FROM "jdoe"

选择

select_stmt = "SELECT" fields from_clause [ into_clause ] [ where_clause ]
              [ group_by_clause ] [ order_by_clause ] [ limit_clause ]
              [ offset_clause ] [ slimit_clause ] [ soffset_clause ] [ timezone_clause ] .

示例

从所有以cpu开头的测量中选择,进入cpu_1h保留策略中的相同测量名称

SELECT mean("value") INTO "cpu_1h".:MEASUREMENT FROM /cpu.*/

选择按天分组的测量数据,并带有时区

SELECT mean("value") FROM "cpu" GROUP BY region, time(1d) fill(0) tz('America/Chicago')

显示基数

指用于精确估计或计算测量值、系列、标签键、标签键值和字段键基数的命令组。

SHOW CARDINALITY 命令有两种变体:估算和精确。估算值是使用草图计算的,适用于所有基数大小的安全默认值。精确值是直接来自 TSM(时间结构化合并树)数据的计数,但对于高基数数据运行成本很高。除非必要,使用估算变体。

当数据库启用时间序列索引(TSI)时,才能支持通过 time 进行过滤。

有关详细信息,请参阅特定的SHOW CARDINALITY命令:

显示连续查询

show_continuous_queries_stmt = "SHOW CONTINUOUS QUERIES" .

示例

-- show all continuous queries
SHOW CONTINUOUS QUERIES

显示数据库

show_databases_stmt = "SHOW DATABASES" .

示例

-- show all databases
SHOW DATABASES

显示诊断信息

显示节点信息,例如构建信息、正常运行时间、主机名、服务器配置、内存使用情况和Go运行时诊断。

有关使用 SHOW DIAGNOSTICS 命令的更多信息,请参阅 使用 SHOW DIAGNOSTICS 命令监控 InfluxDB

show_diagnostics_stmt = "SHOW DIAGNOSTICS"

显示字段键基数

估算或准确计算当前数据库的字段键集的基数,除非使用 ON <database> 选项指定了一个数据库。

注意: ON <database>, FROM <sources>, WITH KEY = <key>, WHERE <condition>, GROUP BY <dimensions>,以及 LIMIT/OFFSET 子句是可选的。 使用这些查询子句时,查询将退回到精确计数。 只有在启用时间序列索引(TSI)时,才支持按 time 过滤,并且 time 不支持在 WHERE 子句中。

show_field_key_cardinality_stmt = "SHOW FIELD KEY CARDINALITY" [ on_clause ] [ from_clause ] [ where_clause ] [ group_by_clause ] [ limit_clause ] [ offset_clause ]

show_field_key_exact_cardinality_stmt = "SHOW FIELD KEY EXACT CARDINALITY" [ on_clause ] [ from_clause ] [ where_clause ] [ group_by_clause ] [ limit_clause ] [ offset_clause ]

示例

-- show estimated cardinality of the field key set of current database
SHOW FIELD KEY CARDINALITY
-- show exact cardinality on field key set of specified database
SHOW FIELD KEY EXACT CARDINALITY ON mydb

显示字段键

show_field_keys_stmt = "SHOW FIELD KEYS" [on_clause] [ from_clause ] .

示例

-- show field keys and field value data types from all measurements
SHOW FIELD KEYS

-- show field keys and field value data types from specified measurement
SHOW FIELD KEYS FROM "cpu"

显示授权

show_grants_stmt = "SHOW GRANTS FOR" user_name .

示例

-- show grants for jdoe
SHOW GRANTS FOR "jdoe"

显示测量基数

估算或精确计算当前数据库的测量集的基数,除非使用 ON <database> 选项指定了数据库。

注意: ON <database>, FROM <sources>, WITH KEY = <key>, WHERE <condition>, GROUP BY <dimensions>, 和 LIMIT/OFFSET 子句是可选的。 使用这些查询子句时,查询将回退到精确计数。 仅在启用TSI(时间序列索引)时支持按 time 过滤,并且在 WHERE 子句中不支持 time

show_measurement_cardinality_stmt = "SHOW MEASUREMENT CARDINALITY" [ on_clause ] [ from_clause ] [ where_clause ] [ group_by_clause ] [ limit_clause ] [ offset_clause ]

show_measurement_exact_cardinality_stmt = "SHOW MEASUREMENT EXACT CARDINALITY" [ on_clause ] [ from_clause ] [ where_clause ] [ group_by_clause ] [ limit_clause ] [ offset_clause ]

示例

-- show estimated cardinality of measurement set on current database
SHOW MEASUREMENT CARDINALITY
-- show exact cardinality of measurement set on specified database
SHOW MEASUREMENT EXACT CARDINALITY ON mydb

显示测量值

show_measurements_stmt = "SHOW MEASUREMENTS" [on_clause] [ with_measurement_clause ] [ where_clause ] [ limit_clause ] [ offset_clause ] .

示例

-- show all measurements
SHOW MEASUREMENTS

-- show measurements where region tag = 'uswest' AND host tag = 'serverA'
SHOW MEASUREMENTS WHERE "region" = 'uswest' AND "host" = 'serverA'

-- show measurements that start with 'h2o'
SHOW MEASUREMENTS WITH MEASUREMENT =~ /h2o.*/

显示查询

show_queries_stmt = "SHOW QUERIES" .

示例

-- show all currently-running queries
SHOW QUERIES
--

显示保留策略

show_retention_policies_stmt = "SHOW RETENTION POLICIES" [on_clause] .

示例

-- show all retention policies on a database
SHOW RETENTION POLICIES ON "mydb"

显示系列

show_series_stmt = "SHOW SERIES" [on_clause] [ from_clause ] [ where_clause ] [ limit_clause ] [ offset_clause ] .

示例

SHOW SERIES FROM "telegraf"."autogen"."cpu" WHERE cpu = 'cpu8'

显示系列基数

估算或精确计算当前数据库系列的基数,除非使用 ON <database> 选项指定了数据库。

系列基数是影响RAM需求的主要因素。有关更多信息,请参见:

注意: ON <database>, FROM <sources>, WITH KEY = <key>, WHERE <condition>, GROUP BY <dimensions>, 和 LIMIT/OFFSET 子句是可选的。 当使用这些查询子句时,查询会回退到精确计数。 在 WHERE 子句中不支持按 time 进行过滤。

show_series_cardinality_stmt = "SHOW SERIES CARDINALITY" [ on_clause ] [ from_clause ] [ where_clause ] [ group_by_clause ] [ limit_clause ] [ offset_clause ]

show_series_exact_cardinality_stmt = "SHOW SERIES EXACT CARDINALITY" [ on_clause ] [ from_clause ] [ where_clause ] [ group_by_clause ] [ limit_clause ] [ offset_clause ]

示例

-- show estimated cardinality of the series on current database
SHOW SERIES CARDINALITY
-- show estimated cardinality of the series on specified database
SHOW SERIES CARDINALITY ON mydb
-- show exact series cardinality
SHOW SERIES EXACT CARDINALITY
-- show series cardinality of the series on specified database
SHOW SERIES EXACT CARDINALITY ON mydb

显示分片组

show_shard_groups_stmt = "SHOW SHARD GROUPS" .

示例

SHOW SHARD GROUPS

显示分片

show_shards_stmt = "SHOW SHARDS" .

示例

SHOW SHARDS

name: telegraf
id  database   retention_policy shard_group start_time           end_time             expiry_time          owners
--  --------   ---------------- ----------- ----------           --------             -----------          ------
16  telegraf   autogen          6           2020-10-19T00:00:00Z 2020-10-26T00:00:00Z 2020-10-26T00:00:00Z 6,7,8
17  telegraf   autogen          6           2020-10-19T00:00:00Z 2020-10-26T00:00:00Z 2020-10-26T00:00:00Z 9,4,5
21  telegraf   autogen          8           2020-10-26T00:00:00Z 2020-11-02T00:00:00Z 2020-11-02T00:00:00Z 8,9,4
22  telegraf   autogen          8           2020-10-26T00:00:00Z 2020-11-02T00:00:00Z 2020-11-02T00:00:00Z 5,6,7
26  telegraf   autogen          10          2020-11-02T00:00:00Z 2020-11-09T00:00:00Z 2020-11-09T00:00:00Z 9,4,5
27  telegraf   autogen          10          2020-11-02T00:00:00Z 2020-11-09T00:00:00Z 2020-11-09T00:00:00Z 6,7,8
31  telegraf   autogen          12          2020-11-09T00:00:00Z 2020-11-16T00:00:00Z 2020-11-16T00:00:00Z 6,7,8

SHOW SHARDS 输出以下数据:

  • id 列: 属于指定的 databaseretention policy 的分片 ID。
  • shard_group 列:一个分片所属的组编号。同一分片组中的分片具有相同的 start_timeend_time。这个时间间隔表示分片活跃的时间,expiry_time 列显示了分片组过期的时间。如果保留策略的持续时间设置为无限,则在 expiry_time 下将不会显示任何时间戳。
  • owners 列:显示拥有分片的数据节点。拥有一个分片的节点数量等于复制因子。在这个例子中,复制因子是 3,所以每个分片有 3 个节点。

显示统计信息

返回有关InfluxDB节点的可用组件和可用(启用的)组件的详细统计信息。

SHOW STATS 返回的统计信息存储在内存中,并在节点重启时重置为零,但 SHOW STATS 每10秒触发一次,以填充 _internal 数据库。

SHOW STATS 命令不列出索引内存使用情况 – 请使用 SHOW STATS FOR 'indexes' 命令。

有关使用 SHOW STATS 命令的更多信息,请参阅 使用 SHOW STATS 命令监控 InfluxDB

show_stats_stmt = "SHOW STATS [ FOR '<component>' | 'indexes' ]"

示例

> show stats
name: runtime
-------------
Alloc   Frees   HeapAlloc       HeapIdle        HeapInUse       HeapObjects     HeapReleased    HeapSys         Lookups Mallocs NumGC   NumGoroutine    PauseTotalNs    Sys             TotalAlloc
4136056 6684537 4136056         34586624        5816320         49412           0               40402944        110     6733949 83      44              36083006        46692600        439945704

name: graphite
tags: proto=tcp
batches_tx      bytes_rx        connections_active      connections_handled     points_rx       points_tx
----------      --------        ------------------      -------------------     ---------       ---------
159             3999750         0                       1                       158110          158110

SHOW STATS FOR

对于指定的组件 (),该命令返回可用的统计信息。 对于 runtime 组件,该命令返回 InfluxDB 系统内存使用情况的概述, 使用 Go runtime 包。

SHOW STATS FOR 'indexes'

返回所有索引的内存使用估算。
索引内存使用不会通过 SHOW STATS 报告,因为这可能是一个昂贵的操作。

显示订阅

show_subscriptions_stmt = "SHOW SUBSCRIPTIONS" .

示例

SHOW SUBSCRIPTIONS

显示标签键基数

估计或准确计算当前数据库中标签键集合的基数,除非使用 ON <database> 选项指定了数据库。

注意: ON <database>, FROM <sources>, WITH KEY = <key>, WHERE <condition>, GROUP BY <dimensions>, 和 LIMIT/OFFSET 子句是可选的。 使用这些查询子句时,查询将回退到精确计数。 仅在启用TSI(时间序列索引)时支持按 time 过滤,并且在 WHERE 子句中不支持 time

show_tag_key_cardinality_stmt = "SHOW TAG KEY CARDINALITY" [ on_clause ] [ from_clause ] [ where_clause ] [ group_by_clause ] [ limit_clause ] [ offset_clause ]

show_tag_key_exact_cardinality_stmt = "SHOW TAG KEY EXACT CARDINALITY" [ on_clause ] [ from_clause ] [ where_clause ] [ group_by_clause ] [ limit_clause ] [ offset_clause ]

示例

-- show estimated tag key cardinality
SHOW TAG KEY CARDINALITY
-- show exact tag key cardinality
SHOW TAG KEY EXACT CARDINALITY

显示标签键

show_tag_keys_stmt = "SHOW TAG KEYS" [on_clause] [ from_clause ] [ where_clause ]
                     [ limit_clause ] [ offset_clause ] .

示例

-- show all tag keys
SHOW TAG KEYS

-- show all tag keys from the cpu measurement
SHOW TAG KEYS FROM "cpu"

-- show all tag keys from the cpu measurement where the region key = 'uswest'
SHOW TAG KEYS FROM "cpu" WHERE "region" = 'uswest'

-- show all tag keys where the host key = 'serverA'
SHOW TAG KEYS WHERE "host" = 'serverA'

显示标签值

show_tag_values_stmt = "SHOW TAG VALUES" [on_clause] [ from_clause ] with_tag_clause [ where_clause ]
                       [ limit_clause ] [ offset_clause ] .

示例

-- show all tag values across all measurements for the region tag
SHOW TAG VALUES WITH KEY = "region"

-- show tag values from the cpu measurement for the region tag
SHOW TAG VALUES FROM "cpu" WITH KEY = "region"

-- show tag values across all measurements for all tag keys that do not include the letter c
SHOW TAG VALUES WITH KEY !~ /.*c.*/

-- show tag values from the cpu measurement for region & host tag keys where service = 'redis'
SHOW TAG VALUES FROM "cpu" WITH KEY IN ("region", "host") WHERE "service" = 'redis'

显示标签值基数

估算或准确计算当前数据库中指定标签键的标签键值的基数,除非使用 ON <database> 选项指定了一个数据库。

注意: ON <database>, FROM <sources>, WITH KEY = <key>, WHERE <condition>, GROUP BY <dimensions>, 和 LIMIT/OFFSET 子句是可选的。 使用这些查询子句时,查询将回退到精确计数。 仅在启用TSI(时间序列索引)时支持按 time 进行过滤。

show_tag_values_cardinality_stmt = "SHOW TAG VALUES CARDINALITY" [ on_clause ] [ from_clause ] [ where_clause ] [ group_by_clause ] [ limit_clause ] [ offset_clause ] with_key_clause

show_tag_values_exact_cardinality_stmt = "SHOW TAG VALUES EXACT CARDINALITY" [ on_clause ] [ from_clause ] [ where_clause ] [ group_by_clause ] [ limit_clause ] [ offset_clause ] with_key_clause

示例

-- show estimated tag key values cardinality for a specified tag key
SHOW TAG VALUES CARDINALITY WITH KEY = "myTagKey"
-- show estimated tag key values cardinality for a specified tag key
SHOW TAG VALUES CARDINALITY WITH KEY = "myTagKey"
-- show exact tag key values cardinality for a specified tag key
SHOW TAG VALUES EXACT CARDINALITY WITH KEY = "myTagKey"
-- show exact tag key values cardinality for a specified tag key
SHOW TAG VALUES EXACT CARDINALITY WITH KEY = "myTagKey"

显示用户

show_users_stmt = "SHOW USERS" .

示例

-- show all users
SHOW USERS

条款

from_clause     = "FROM" measurements .

group_by_clause = "GROUP BY" dimensions fill(fill_option).

into_clause     = "INTO" ( measurement | back_ref ).

limit_clause    = "LIMIT" int_lit .

offset_clause   = "OFFSET" int_lit .

slimit_clause   = "SLIMIT" int_lit .

soffset_clause  = "SOFFSET" int_lit .

timezone_clause = tz(string_lit) .

on_clause       = "ON" db_name .

order_by_clause = "ORDER BY" sort_fields .

to_clause       = "TO" user_name .

where_clause    = "WHERE" expr .

with_measurement_clause = "WITH MEASUREMENT" ( "=" measurement | "=~" regex_lit ) .

with_tag_clause = "WITH KEY" ( "=" tag_key | "!=" tag_key | "=~" regex_lit | "IN (" tag_keys ")"  ) .

表达式

binary_op        = "+" | "-" | "*" | "/" | "%" | "&" | "|" | "^" | "AND" |
                   "OR" | "=" | "!=" | "<>" | "<" | "<=" | ">" | ">=" .

expr             = unary_expr { binary_op unary_expr } .

unary_expr       = "(" expr ")" | var_ref | time_lit | string_lit | int_lit |
                   float_lit | bool_lit | duration_lit | regex_lit .

评论

使用注释来描述您的 InfluxQL 查询。

  • 单行注释以两个连字符 (--) 开始,并在 InfluxDB 检测到换行时结束。 这种注释类型不能跨越多行。
  • 多行注释以 /* 开始,以 */ 结束。这种注释类型可以跨越多行。 多行注释不支持嵌套的多行注释。

其他

alias            = "AS" identifier .

back_ref         = ( policy_name ".:MEASUREMENT" ) |
                   ( db_name "." [ policy_name ] ".:MEASUREMENT" ) .

db_name          = identifier .

dimension        = expr .

dimensions       = dimension { "," dimension } .

field_key        = identifier .

field            = expr [ alias ] .

fields           = field { "," field } .

fill_option      = "null" | "none" | "previous" | int_lit | float_lit | "linear" .

host             = string_lit .

measurement      = measurement_name |
                   ( policy_name "." measurement_name ) |
                   ( db_name "." [ policy_name ] "." measurement_name ) .

measurements     = measurement { "," measurement } .

measurement_name = identifier | regex_lit .

password         = string_lit .

policy_name      = identifier .

privilege        = "ALL" [ "PRIVILEGES" ] | "READ" | "WRITE" .

query_id         = int_lit .

query_name       = identifier .

retention_policy = identifier .

retention_policy_option      = retention_policy_duration |
                               retention_policy_replication |
                               retention_policy_shard_group_duration |
                               "DEFAULT" .

retention_policy_duration    = "DURATION" duration_lit .

retention_policy_replication = "REPLICATION" int_lit .

retention_policy_shard_group_duration = "SHARD DURATION" duration_lit .

retention_policy_name = "NAME" identifier .

series_id        = int_lit .

shard_id         = int_lit .

sort_field       = field_key [ ASC | DESC ] .

sort_fields      = sort_field { "," sort_field } .

subscription_name = identifier .

tag_key          = identifier .

tag_keys         = tag_key { "," tag_key } .

user_name        = identifier .

var_ref          = measurement .


Flux的未来

Flux 正在进入维护模式。您可以像现在一样继续使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB 3 开源版本现已公开Alpha测试

InfluxDB 3 Open Source is now available for alpha testing, licensed under MIT or Apache 2 licensing.

我们将发布两个产品作为测试版的一部分。

InfluxDB 3 核心,是我们新的开源产品。 它是一个用于时间序列和事件数据的实时数据引擎。 InfluxDB 3 企业版是建立在核心基础之上的商业版本,增加了历史查询能力、读取副本、高可用性、可扩展性和细粒度安全性。

有关如何开始的更多信息,请查看: