将指定存储组的内存缓存区 Memory Table 的数据持久化到磁盘上,并将数据文件封口。在集群模式下,我们提供了持久化本节点的指定存储组的缓存、持久化整个集群指定存储组的缓存命令。
注意:此命令客户端不需要手动调用,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
触发层级合并和乱序合并。当前 IoTDB 支持使用如下两种 SQL 手动触发数据文件的合并:
MERGE
先触发层级合并,等层级合并执行完后,再触发乱序合并。在乱序合并中,仅重写重复的 Chunk,整理速度快,但是最终磁盘会存在多余数据。FULL MERGE
先触发层级合并,等层级合并执行完后,再触发乱序合并。在乱序合并中,将需要合并的顺序和乱序文件的所有数据都重新写一份,整理速度慢,最终磁盘将不存在无用的数据。IoTDB> MERGE IoTDB> FULL MERGE
同时,在集群模式中支持对本节点或整个集群手动触发数据文件的合并:
IoTDB> MERGE ON LOCAL IoTDB> MERGE ON CLUSTER IoTDB> FULL MERGE ON LOCAL IoTDB> FULL MERGE ON CLUSTER
手动清除chunk, chunk metadata和timeseries metadata的缓存,在内存资源紧张时,可以通过此命令,释放查询时缓存所占的内存空间。在集群模式下,我们提供了清空本节点缓存、清空整个集群缓存命令。
IoTDB> CLEAR CACHE IoTDB> CLEAR CACHE ON LOCAL IoTDB> CLEAR CACHE ON CLUSTER
手动设置系统为正常运行、只读状态。在集群模式下,我们提供了设置本节点状态、设置整个集群状态的命令,默认对整个集群生效。
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_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 query processlist
命令,该命令将显示所有正在执行的查询列表,结果形式如下:
Time | queryId | statement |
---|---|---|
其中 statement 最大显示长度为 64 字符。对于超过 64 字符的查询语句,将截取部分进行显示。
当前 IoTDB 支持使用如下 SQL 查看 DataNode 的信息:
SHOW DATANODES
示例:
IoTDB> create timeseries root.sg.d1.s1 with datatype=BOOLEAN,encoding=PLAIN Msg: The statement is executed successfully. IoTDB> create timeseries root.sg.d2.s1 with datatype=BOOLEAN,encoding=PLAIN Msg: The statement is executed successfully. IoTDB> create timeseries root.ln.d1.s1 with datatype=BOOLEAN,encoding=PLAIN Msg: The statement is executed successfully. IoTDB> show regions +--------+------------+------+-------------+------------+----------+----------+---------+----+------+ |RegionId| Type|Status|storage group|Series Slots|Time Slots|DataNodeId| Host|Port| Role| +--------+------------+------+-------------+------------+----------+----------+---------+----+------+ | 0|SchemaRegion| Up| root.sg| 2| 0| 1|127.0.0.1|6667|Leader| | 1|SchemaRegion| Up| root.ln| 1| 0| 2|127.0.0.1|6668|Leader| +--------+------------+------+-------------+------------+----------+----------+---------+----+------+ Total line number = 2 It costs 0.013s IoTDB> show datanodes +------+-------+---------+----+-------------+---------------+ |NodeID| Status| Host|Port|DataRegionNum|SchemaRegionNum| +------+-------+---------+----+-------------+---------------+ | 1|Running|127.0.0.1|6667| 0| 1| | 2|Running|127.0.0.1|6668| 0| 1| +------+-------+---------+----+-------------+---------------+ Total line number = 2 It costs 0.007s IoTDB> insert into root.ln.d1(timestamp,s1) values(1,true) Msg: The statement is executed successfully. IoTDB> show regions +--------+------------+------+-------------+------------+----------+----------+---------+----+------+ |RegionId| Type|Status|storage group|Series Slots|Time Slots|DataNodeId| Host|Port| Role| +--------+------------+------+-------------+------------+----------+----------+---------+----+------+ | 0|SchemaRegion| Up| root.sg| 2| 0| 1|127.0.0.1|6667|Leader| | 1|SchemaRegion| Up| root.ln| 1| 0| 2|127.0.0.1|6668|Leader| | 2| DataRegion| Up| root.ln| 1| 1| 1|127.0.0.1|6667|Leader| +--------+------------+------+-------------+------------+----------+----------+---------+----+------+ Total line number = 3 It costs 0.008s IoTDB> show datanodes +------+-------+---------+----+-------------+---------------+ |NodeID| Status| Host|Port|DataRegionNum|SchemaRegionNum| +------+-------+---------+----+-------------+---------------+ | 1|Running|127.0.0.1|6667| 1| 1| | 2|Running|127.0.0.1|6668| 0| 1| +------+-------+---------+----+-------------+---------------+ Total line number = 2 It costs 0.006s
对 DataNode 各状态定义如下:
当前 IoTDB 支持使用如下 SQL 查看 ConfigNode 的信息:
SHOW CONFIGNODES
示例:
IoTDB> show confignodes +------+-------+-------+-----+--------+ |NodeID| Status| Host| Port| Role| +------+-------+-------+-----+--------+ | 0|Running|0.0.0.0|22277| Leader| | 1|Running|0.0.0.0|22279|Follower| | 2|Running|0.0.0.0|22281|Follower| +------+-------+-------+-----+--------+ Total line number = 3 It costs 0.030s
对 ConfigNode 各状态定义如下:
当前 IoTDB 支持使用如下 SQL 查看全部节点的信息:
SHOW CLUSTER
示例:
IoTDB> show cluster +------+----------+-------+---------+-----+ |NodeID| NodeType| Status| Host| Port| +------+----------+-------+---------+-----+ | 0|ConfigNode|Running| 0.0.0.0|22277| | 1|ConfigNode|Running| 0.0.0.0|22279| | 2|ConfigNode|Running| 0.0.0.0|22281| | 3| DataNode|Running|127.0.0.1| 9003| | 4| DataNode|Running|127.0.0.1| 9005| | 5| DataNode|Running|127.0.0.1| 9007| +------+----------+-------+---------+-----+ Total line number = 6 It costs 0.011s
集群中以 Region 作为数据复制和数据管理的单元,Region 的状态和分布对于系统运维和测试有很大帮助,如以下场景:
当前 IoTDB 支持使用如下 SQL 查看 Region:
SHOW REGIONS
: 展示所有 RegionSHOW SCHEMA REGIONS
: 展示所有 SchemaRegion 分布SHOW DATA REGIONS
: 展示所有 DataRegion 分布SHOW (DATA|SCHEMA)? REGIONS OF STORAGE GROUP <sg1,sg2,...>
: 展示指定的存储组<sg1,sg2,...>对应的Region分布。首先来看一下三副本下Region的分布情况:
IoTDB> create timeseries root.sg.d1.s1 with datatype=BOOLEAN,encoding=PLAIN Msg: The statement is executed successfully. IoTDB> create timeseries root.sg.d2.s1 with datatype=BOOLEAN,encoding=PLAIN Msg: The statement is executed successfully. IoTDB> create timeseries root.ln.d1.s1 with datatype=BOOLEAN,encoding=PLAIN Msg: The statement is executed successfully. +--------+------------+------+-------------+------------+----------+----------+---------+----+--------+ |RegionId| Type|Status|storage group|Series Slots|Time Slots|DataNodeId| Host|Port| Role| +--------+------------+------+-------------+------------+----------+----------+---------+----+--------+ | 0|SchemaRegion| Up| root.sg| 2| 0| 5|127.0.0.1|6671|Follower| | 0|SchemaRegion| Up| root.sg| 2| 0| 4|127.0.0.1|6669|Follower| | 0|SchemaRegion| Up| root.sg| 2| 0| 3|127.0.0.1|6667| Leader| | 1|SchemaRegion| Up| root.ln| 1| 0| 5|127.0.0.1|6671|Follower| | 1|SchemaRegion| Up| root.ln| 1| 0| 4|127.0.0.1|6669|Follower| | 1|SchemaRegion| Up| root.ln| 1| 0| 3|127.0.0.1|6667| Leader| +--------+------------+------+-------------+------------+----------+----------+---------+----+--------+ Total line number = 6 It costs 0.032s
然后再来看一下单副本下Region的分布情况:
IoTDB> show regions +--------+------------+------+-------------+------------+----------+----------+---------+----+------+ |RegionId| Type|Status|storage group|Series Slots|Time Slots|DataNodeId| Host|Port| Role| +--------+------------+------+-------------+------------+----------+----------+---------+----+------+ | 0|SchemaRegion| Up| root.sg| 2| 0| 5|127.0.0.1|6671|Leader| | 1|SchemaRegion| Up| root.ln| 1| 0| 4|127.0.0.1|6669|Leader| +--------+------------+------+-------------+------------+----------+----------+---------+----+------+ Total line number = 2 It costs 0.128s
查看Schema Region和Data Region的分布信息:
IoTDB> insert into root.sg.d1(timestamp,s1) values(1,true) Msg: The statement is executed successfully. IoTDB> insert into root.ln.d1(timestamp,s1) values(1,true) Msg: The statement is executed successfully. IoTDB> show data regions +--------+----------+------+-------------+------------+----------+----------+---------+----+--------+ |RegionId| Type|Status|storage group|Series Slots|Time Slots|DataNodeId| Host|Port| Role| +--------+----------+------+-------------+------------+----------+----------+---------+----+--------+ | 2|DataRegion| Up| root.sg| 1| 1| 5|127.0.0.1|6671|Follower| | 2|DataRegion| Up| root.sg| 1| 1| 4|127.0.0.1|6669| Leader| | 2|DataRegion| Up| root.sg| 1| 1| 3|127.0.0.1|6667|Follower| | 3|DataRegion| Up| root.ln| 1| 1| 5|127.0.0.1|6671| Leader| | 3|DataRegion| Up| root.ln| 1| 1| 4|127.0.0.1|6669|Follower| | 3|DataRegion| Up| root.ln| 1| 1| 3|127.0.0.1|6667|Follower| +--------+----------+------+-------------+------------+----------+----------+---------+----+--------+ Total line number = 2 It costs 0.011s IoTDB> show schema regions +--------+------------+------+-------------+------------+----------+----------+---------+----+--------+ |RegionId| Type|Status|storage group|Series Slots|Time Slots|DataNodeId| Host|Port| Role| +--------+------------+------+-------------+------------+----------+----------+---------+----+--------+ | 0|SchemaRegion| Up| root.sg| 2| 0| 5|127.0.0.1|6671|Follower| | 0|SchemaRegion| Up| root.sg| 2| 0| 4|127.0.0.1|6669| Leader| | 0|SchemaRegion| Up| root.sg| 2| 0| 3|127.0.0.1|6667|Follower| | 1|SchemaRegion| Up| root.ln| 1| 0| 5|127.0.0.1|6671|Follower| | 1|SchemaRegion| Up| root.ln| 1| 0| 4|127.0.0.1|6669|Follower| | 1|SchemaRegion| Up| root.ln| 1| 0| 3|127.0.0.1|6667| Leader| +--------+------------+------+-------------+------------+----------+----------+---------+----+--------+ Total line number = 2 It costs 0.012s
展示指定的存储组<sg1,sg2,...>对应的Region分布:
IoTDB> show regions of storage group root.sg +--------+------------+------+-------------+------------+----------+----------+---------+----+--------+ |RegionId| Type|Status|storage group|Series Slots|Time Slots|DataNodeId| Host|Port| Role| +--------+------------+------+-------------+------------+----------+----------+---------+----+--------+ | 0|SchemaRegion| Up| root.sg| 2| 0| 5|127.0.0.1|6671|Follower| | 0|SchemaRegion| Up| root.sg| 2| 0| 4|127.0.0.1|6669| Leader| | 0|SchemaRegion| Up| root.sg| 2| 0| 3|127.0.0.1|6667|Follower| | 2| DataRegion| Up| root.sg| 1| 1| 5|127.0.0.1|6671|Follower| | 2| DataRegion| Up| root.sg| 1| 1| 4|127.0.0.1|6669| Leader| | 2| DataRegion| Up| root.sg| 1| 1| 3|127.0.0.1|6667|Follower| +--------+------------+------+-------------+------------+----------+----------+---------+----+--------+ Total line number = 2 It costs 0.005s IoTDB> create timeseries root.sgcc.wf01.d1.wt01 with datatype=BOOLEAN,encoding=PLAIN Msg: The statement is executed successfully. IoTDB> show regions of storage group root.*.wf01 +--------+------------+------+--------------+------------+----------+----------+---------+----+--------+ |RegionId| Type|Status| storage group|Series Slots|Time Slots|DataNodeId| Host|Port| Role| +--------+------------+------+--------------+------------+----------+----------+---------+----+--------+ | 4|SchemaRegion| Up|root.sgcc.wf01| 1| 0| 5|127.0.0.1|6671| Leader| | 4|SchemaRegion| Up|root.sgcc.wf01| 1| 0| 4|127.0.0.1|6669|Follower| | 4|SchemaRegion| Up|root.sgcc.wf01| 1| 0| 3|127.0.0.1|6667|Follower| +--------+------------+------+--------------+------------+----------+----------+---------+----+--------+ Total line number = 3 It costs 0.012s
对 Region 各状态定义如下: