跳至主要內容

运维命令

大约 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 and the Apache feather logo are trademarks of The Apache Software Foundation

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