跳至主要內容

运维命令

...大约 4 分钟

运维命令

FLUSH

将指定 database 的内存缓存区 Memory Table 的数据持久化到磁盘上,并将数据文件封口。在集群模式下,我们提供了持久化本节点的指定 database 的缓存、持久化整个集群指定 database 的缓存命令。

注意:此命令客户端不需要手动调用,IoTDB 有 wal 保证数据安全,IoTDB 会选择合适的时机进行 flush。
如果频繁调用 flush 会导致数据文件很小,降低查询性能。

IoTDB> FLUSH 
IoTDB> FLUSH ON LOCAL
IoTDB> FLUSH ON CLUSTER
IoTDB> FLUSH root.ln
IoTDB> FLUSH root.sg1,root.sg2 ON LOCAL
IoTDB> FLUSH root.sg1,root.sg2 ON CLUSTER

CLEAR CACHE

手动清除chunk, chunk metadata和timeseries metadata的缓存,在内存资源紧张时,可以通过此命令,释放查询时缓存所占的内存空间。在集群模式下,我们提供了清空本节点缓存、清空整个集群缓存命令。

IoTDB> CLEAR CACHE
IoTDB> CLEAR CACHE ON LOCAL
IoTDB> CLEAR CACHE ON CLUSTER

SET SYSTEM TO READONLY / RUNNING

手动设置系统为正常运行、只读状态。在集群模式下,我们提供了设置本节点状态、设置整个集群状态的命令,默认对整个集群生效。

IoTDB> SET SYSTEM TO RUNNING
IoTDB> SET SYSTEM TO READONLY ON LOCAL
IoTDB> SET SYSTEM TO READONLY ON CLUSTER

终止查询

IoTDB 支持设置 Session 连接超时和查询超时时间,并支持手动终止正在执行的查询。

Session 超时

Session 超时控制何时关闭空闲 Session。空闲 Session 指在一段时间内没有发起任何操作的 Session。

Session 超时默认未开启。可以在配置文件中通过 dn_session_timeout_threshold 参数进行配置。

查询超时

对于执行时间过长的查询,IoTDB 将强行中断该查询,并抛出超时异常,如下所示:

IoTDB> select * from root.**;
Msg: 701 Current query is time out, please check your statement or modify timeout parameter.

系统默认的超时时间为 60000 ms,可以在配置文件中通过 query_timeout_threshold 参数进行自定义配置。

如果您使用 JDBC 或 Session,还支持对单个查询设置超时时间(单位为 ms):

((IoTDBStatement) statement).executeQuery(String sql, long timeoutInMS)
session.executeQueryStatement(String sql, long timeout)

如果不配置超时时间参数或将超时时间设置为负数,将使用服务器端默认的超时时间。
如果超时时间设置为0,则会禁用超时功能。

查询终止

除了被动地等待查询超时外,IoTDB 还支持主动地终止查询:

终止指定查询

KILL QUERY <queryId>

通过指定 queryId 可以中止指定的查询,queryId是一个字符串,所以使用时需要添加引号。

为了获取正在执行的查询 id,用户可以使用 show queries 命令,该命令将显示所有正在执行的查询列表。

示例
kill query '20221205_114444_00003_5'

终止所有查询

KILL ALL QUERIES

终止所有DataNode上的所有查询。

SHOW QUERIES

该命令用于显示所有正在执行的查询,有以下使用场景:

  • 想要中止某个查询时,需要获取查询对应的queryId
  • 中止某个查询后验证查询是否已被中止

语法

SHOW QUERIES | (QUERY PROCESSLIST)
[WHERE whereCondition]
[ORDER BY sortKey {ASC | DESC}]
[LIMIT rowLimit] [OFFSET rowOffset]

注意:

  • 兼容旧语法show query processlist
  • 使用WHERE时请保证过滤的目标列是结果集中存在的列
  • 使用ORDER BY时请保证sortKey是结果集中存在的列

结果集

Time:查询开始时间,数据类型为INT64
QueryId:集群级别唯一的查询标识,数据类型为TEXT,格式为yyyyMMdd_HHmmss_index_dataNodeId
DataNodeId:执行该查询的节点,数据类型为INT32
ElapsedTime:查询已执行时间(不完全精确),以为单位,数据类型为FLOAT
Statement:查询的原始语句,数据类型为TEXT

+-----------------------------+-----------------------+----------+-----------+------------+
|                         Time|                QueryId|DataNodeId|ElapsedTime|   Statement|
+-----------------------------+-----------------------+----------+-----------+------------+
|2022-12-30T13:26:47.260+08:00|20221230_052647_00005_1|         1|      0.019|show queries|
+-----------------------------+-----------------------+----------+-----------+------------+

注意:

  • 结果集默认按照Time列升序排列,如需按其他key进行排序,请使用ORDER BY子句

SQL示例

示例1:获取当前所有执行时间大于30s的查询

SQL 语句为:

SHOW QUERIES WHERE ElapsedTime > 30

该 SQL 语句的执行结果如下:

+-----------------------------+-----------------------+----------+-----------+-----------------------------+
|                         Time|                QueryId|DataNodeId|ElapsedTime|                    Statement|
+-----------------------------+-----------------------+----------+-----------+-----------------------------+
|2022-12-05T11:44:44.515+08:00|20221205_114444_00002_2|         2|     31.111|     select * from root.test1|
+-----------------------------+-----------------------+----------+-----------+-----------------------------+
|2022-12-05T11:44:45.515+08:00|20221205_114445_00003_2|         2|     30.111|     select * from root.test2|
+-----------------------------+-----------------------+----------+-----------+-----------------------------+
|2022-12-05T11:44:43.515+08:00|20221205_114443_00001_3|         3|     32.111|        select * from root.**|
+-----------------------------+-----------------------+----------+-----------+-----------------------------+

示例2:获取当前执行耗时Top5的查询

SQL 语句为:

SHOW QUERIES limit 5

等价于

SHOW QUERIES ORDER BY ElapsedTime DESC limit 5

该 SQL 语句的执行结果如下:

+-----------------------------+-----------------------+----------+-----------+-----------------------------+
|                         Time|                QueryId|DataNodeId|ElapsedTime|                    Statement|
+-----------------------------+-----------------------+----------+-----------+-----------------------------+
|2022-12-05T11:44:44.515+08:00|20221205_114444_00003_5|         5|     31.111|     select * from root.test1|
+-----------------------------+-----------------------+----------+-----------+-----------------------------+
|2022-12-05T11:44:45.515+08:00|20221205_114445_00003_2|         2|     30.111|     select * from root.test2|
+-----------------------------+-----------------------+----------+-----------+-----------------------------+
|2022-12-05T11:44:46.515+08:00|20221205_114446_00003_3|         3|     29.111|     select * from root.test3|
+-----------------------------+-----------------------+----------+-----------+-----------------------------+
|2022-12-05T11:44:47.515+08:00|20221205_114447_00003_2|         2|     28.111|     select * from root.test4|
+-----------------------------+-----------------------+----------+-----------+-----------------------------+
|2022-12-05T11:44:48.515+08:00|20221205_114448_00003_4|         4|     27.111|     select * from root.test5|
+-----------------------------+-----------------------+----------+-----------+-----------------------------+

Copyright © 2024 The Apache Software Foundation.
Apache IoTDB, IoTDB, Apache, the Apache feather logo, and the Apache IoTDB project logo are either registered trademarks or trademarks of The Apache Software Foundation in all countries

Have a question? Connect with us on QQ, WeChat, or Slack. Join the community now.