# 运维命令

# FLUSH

将指定存储组的内存缓存区Memory Table的数据持久化到磁盘上,并将数据文件封口。

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

IoTDB> FLUSH 
IoTDB> FLUSH root.ln
IoTDB> FLUSH root.sg1,root.sg2
1
2
3

# MERGE

合并顺序和乱序数据。当前IoTDB支持使用如下两种SQL手动触发数据文件的合并:

  • MERGE 仅重写重复的Chunk,整理速度快,但是最终磁盘会存在多余数据。
  • FULL MERGE 将需要合并的顺序和乱序文件的所有数据都重新写一份,整理速度慢,最终磁盘将不存在无用的数据。
IoTDB> MERGE
IoTDB> FULL MERGE
1
2

# CLEAR CACHE

手动清除chunk, chunk metadata和timeseries metadata的缓存,在内存资源紧张时,可以通过此命令,释放查询时缓存所占的内存空间。

IoTDB> CLEAR CACHE
1

# SET STSTEM TO READONLY / WRITABLE

手动设置系统为只读或者可写入模式。

IoTDB> SET SYSTEM TO READONLY
IoTDB> SET SYSTEM TO WRITABLE
1
2

# SCHEMA SNAPSHOT

为了加快 IoTDB 重启速度,用户可以手动触发创建 schema 的快照,从而避免服务器从 mlog 文件中恢复。

IoTDB> CREATE SNAPSHOT FOR SCHEMA
1

# 中止查询

当使用 IoTDB 时,您可能会遇到以下情形:输入了一个查询,但是由于其包含的数据量过大或是其他原因,导致长时间无法返回结果,但是迫于生产环境无法中止该命令,只能被迫等待。

从 0.12 版本开始,IoTDB 对执行时间过长的查询给出了两种解决方案:查询超时和查询中止。

# 查询超时

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

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

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

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

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

如果不配置超时时间参数或将超时时间设置为 0,将使用服务器端默认的超时时间.

# 查询中止

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

KILL QUERY <queryId>
1

通过指定 queryId 可以中止指定的查询,而如果不指定 queryId,将中止所有正在执行的查询。

为了获取正在执行的查询 id,用户可以使用 show query processlist 命令,该命令将显示所有正在执行的查询列表,结果形式如下:

Time queryId statement

其中 statement 最大显示长度为 64 字符。对于超过 64 字符的查询语句,将截取部分进行显示。

Copyright © 2022 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.

We use Google Analytics to collect anonymous, aggregated usage information.