运维语句
2025年2月18日大约 8 分钟
运维语句
1. 状态查看
1.1 查看连接的模型
含义:返回当前连接的 sql_dialect 是树模型/表模型。
语法:
showCurrentSqlDialectStatement
: SHOW CURRENT_SQL_DIALECT
;
示例:
IoTDB> SHOW CURRENT_SQL_DIALECT
执行结果如下:
+-----------------+
|CurrentSqlDialect|
+-----------------+
| TABLE|
+-----------------+
1.2 查看登录的用户名
含义:返回当前登录的用户名。
语法:
showCurrentUserStatement
: SHOW CURRENT_USER
;
示例:
IoTDB> SHOW CURRENT_USER
执行结果如下:
+-----------+
|CurrentUser|
+-----------+
| root|
+-----------+
1.3 查看连接的数据库名
含义:返回当前连接的数据库名,若没有执行过 use 语句,则为 null。
语法:
showCurrentDatabaseStatement
: SHOW CURRENT_DATABASE
;
示例:
IoTDB> SHOW CURRENT_DATABASE;
IoTDB> USE test;
IoTDB> SHOW CURRENT_DATABASE;
执行结果如下:
+---------------+
|CurrentDatabase|
+---------------+
| null|
+---------------+
+---------------+
|CurrentDatabase|
+---------------+
| test|
+---------------+
1.4 查看集群版本
含义:返回当前集群的版本。
语法:
showVersionStatement
: SHOW VERSION
;
示例:
IoTDB> SHOW VERSION
执行结果如下:
+-------+---------+
|Version|BuildInfo|
+-------+---------+
|2.0.1.2| 1ca4008|
+-------+---------+
1.5 查看集群关键参数
含义:返回当前集群的关键参数。
语法:
showVariablesStatement
: SHOW VARIABLES
;
关键参数如下:
- ClusterName:当前集群的名称。
- DataReplicationFactor:数据副本的数量,表示每个数据分区(DataRegion)的副本数。
- SchemaReplicationFactor:元数据副本的数量,表示每个元数据分区(SchemaRegion)的副本数。
- DataRegionConsensusProtocolClass:数据分区(DataRegion)使用的共识协议类。
- SchemaRegionConsensusProtocolClass:元数据分区(SchemaRegion)使用的共识协议类。
- ConfigNodeConsensusProtocolClass:配置节点(ConfigNode)使用的共识协议类。
- TimePartitionOrigin:数据库时间分区的起始时间戳。
- TimePartitionInterval:数据库的时间分区间隔(单位:毫秒)。
- ReadConsistencyLevel:读取操作的一致性级别。
- SchemaRegionPerDataNode:数据节点(DataNode)上的元数据分区(SchemaRegion)数量。
- DataRegionPerDataNode:数据节点(DataNode)上的数据分区(DataRegion)数量。
- SeriesSlotNum:数据分区(DataRegion)的序列槽(SeriesSlot)数量。
- SeriesSlotExecutorClass:序列槽的实现类。
- DiskSpaceWarningThreshold:磁盘空间告警阈值(单位:百分比)。
- TimestampPrecision:时间戳精度。
示例:
IoTDB> SHOW VARIABLES
执行结果如下:
+----------------------------------+-----------------------------------------------------------------+
| Variable| Value|
+----------------------------------+-----------------------------------------------------------------+
| ClusterName| defaultCluster|
| DataReplicationFactor| 1|
| SchemaReplicationFactor| 1|
| DataRegionConsensusProtocolClass| org.apache.iotdb.consensus.iot.IoTConsensus|
|SchemaRegionConsensusProtocolClass| org.apache.iotdb.consensus.ratis.RatisConsensus|
| ConfigNodeConsensusProtocolClass| org.apache.iotdb.consensus.ratis.RatisConsensus|
| TimePartitionOrigin| 0|
| TimePartitionInterval| 604800000|
| ReadConsistencyLevel| strong|
| SchemaRegionPerDataNode| 1|
| DataRegionPerDataNode| 0|
| SeriesSlotNum| 1000|
| SeriesSlotExecutorClass|org.apache.iotdb.commons.partition.executor.hash.BKDRHashExecutor|
| DiskSpaceWarningThreshold| 0.05|
| TimestampPrecision| ms|
+----------------------------------+-----------------------------------------------------------------+
1.6 查看集群ID
含义:返回当前集群的ID。
语法:
showClusterIdStatement
: SHOW (CLUSTERID | CLUSTER_ID)
;
示例:
IoTDB> SHOW CLUSTER_ID
执行结果如下:
+------------------------------------+
| ClusterId|
+------------------------------------+
|40163007-9ec1-4455-aa36-8055d740fcda|
1.7 查看客户端直连的 DataNode 进程所在服务器的时间
语法:
含义:返回当前客户端直连的 DataNode 进程所在服务器的时间。
showCurrentTimestampStatement
: SHOW CURRENT_TIMESTAMP
;
示例:
IoTDB> SHOW CURRENT_TIMESTAMP
执行结果如下:
+-----------------------------+
| CurrentTimestamp|
+-----------------------------+
|2025-02-17T11:11:52.987+08:00|
+-----------------------------+
1.8 查看正在执行的查询信息
含义:用于显示所有正在执行的查询信息。
语法:
showQueriesStatement
: SHOW (QUERIES | QUERY PROCESSLIST)
(WHERE where=booleanExpression)?
(ORDER BY sortItem (',' sortItem)*)?
limitOffsetClause
;
参数解释:
- WHERE 子句:需保证过滤的目标列是结果集中存在的列
- ORDER BY 子句:需保证
sortKey
是结果集中存在的列 - limitOffsetClause:
- 含义:用于限制结果集的返回数量。
- 格式:
LIMIT <offset>, <row_count>
,<offset>
是偏移量,<row_count>
是返回的行数。
- QUERIES 表中的列:
- query_id:查询语句的 ID
- start_time:查询开始的时间戳,时间戳精度与系统精度一致
- datanode_id:发起查询语句的 DataNode 的ID
- elapsed_time:查询的执行耗时,单位是秒
- statement:查询的 SQL 语句
- user:发起查询的用户
示例:
IoTDB> SHOW QUERIES WHERE elapsed_time > 30
执行结果如下:
+-----------------------+-----------------------------+-----------+------------+------------+----+
| query_id| start_time|datanode_id|elapsed_time| statement|user|
+-----------------------+-----------------------------+-----------+------------+------------+----+
|20250108_101015_00000_1|2025-01-08T18:10:15.935+08:00| 1| 32.283|show queries|root|
+-----------------------+-----------------------------+-----------+------------+------------+----+
2. 状态设置
2.1 设置连接的模型
含义:将当前连接的 sql_dialect 置为树模型/表模型。
语法:
SET SQL_DIALECT EQ (TABLE | TREE)
示例:
IoTDB> SET SQL_DIALECT=TABLE
IoTDB> SHOW CURRENT_SQL_DIALECT
执行结果如下:
+-----------------+
|CurrentSqlDialect|
+-----------------+
| TABLE|
+-----------------+
2.2 更新配置项
含义:用于更新配置项,执行完成后会进行配置项的热加载,对于支持热修改的配置项会立即生效。
语法:
setConfigurationStatement
: SET CONFIGURATION propertyAssignments (ON INTEGER_VALUE)?
;
propertyAssignments
: property (',' property)*
;
property
: identifier EQ propertyValue
;
propertyValue
: DEFAULT
| expression
;
参数解释:
- propertyAssignments
- 含义:更新的配置列表,由多个
property
组成。 - 可以更新多个配置列表,用逗号分隔。
- 取值:
DEFAULT
:将配置项恢复为默认值。expression
:具体的值,必须是一个字符串。
- 含义:更新的配置列表,由多个
- ON INTEGER_VALUE
- 含义:指定要更新配置的节点 ID。
- 可选性:可选。如果不指定或指定的值低于 0,则更新所有 ConfigNode 和 DataNode 的配置。
示例:
IoTDB> SET CONFIGURATION "a"='1',b='1' ON 1;
2.3 读取手动修改的配置文件
含义:用于读取手动修改过的配置文件,并对配置项进行热加载,对于支持热修改的配置项会立即生效。
语法:
loadConfigurationStatement
: LOAD CONFIGURATION localOrClusterMode?
;
localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
参数解释:
- localOrClusterMode
- 含义:指定配置热加载的范围。
- 可选性:可选。默认值为
CLUSTER
。 - 取值:
ON LOCAL
:只对客户端直连的 DataNode 进行配置热加载。ON CLUSTER
:对集群中所有 DataNode 进行配置热加载。
示例:
IoTDB> LOAD CONFIGURATION ON LOCAL;
2.4 设置系统的状态
含义:用于设置系统的状态。
语法:
setSystemStatusStatement
: SET SYSTEM TO (READONLY | RUNNING) localOrClusterMode?
;
localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
参数解释:
- RUNNING | READONLY
- 含义:指定系统的新状态。
- 取值:
RUNNING
:将系统设置为运行状态,允许读写操作。READONLY
:将系统设置为只读状态,只允许读取操作,禁止写入操作。
- localOrClusterMode
- 含义:指定状态变更的范围。
- 可选性:可选。默认值为
CLUSTER
。 - 取值:
ON LOCAL
:仅对客户端直连的 DataNode 生效。ON CLUSTER
:对集群中所有 DataNode 生效。
示例:
IoTDB> SET SYSTEM TO READONLY ON CLUSTER;
3. 数据管理
3.1 刷写内存表中的数据到磁盘
含义:将内存表中的数据刷写到磁盘上。
语法:
flushStatement
: FLUSH identifier? (',' identifier)* booleanValue? localOrClusterMode?
;
booleanValue
: TRUE | FALSE
;
localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
参数解释:
- identifier
- 含义:指定要刷写的数据库名称。
- 可选性:可选。如果不指定,则默认刷写所有数据库。
- 多个数据库:可以指定多个数据库名称,用逗号分隔。例如:
FLUSH test_db1, test_db2
。
- booleanValue
- 含义:指定刷写的内容。
- 可选性:可选。如果不指定,则默认刷写顺序和乱序空间的内存。
- 取值:
TRUE
:只刷写顺序空间的内存表。FALSE
:只刷写乱序空间的MemTable。
- localOrClusterMode
- 含义:指定刷写的范围。
- 可选性:可选。默认值为
CLUSTER
。 - 取值:
ON LOCAL
:只刷写客户端直连的 DataNode 上的内存表。ON CLUSTER
:刷写集群中所有 DataNode 上的内存表。
示例:
IoTDB> FLUSH test_db TRUE ON LOCAL;
3.2 清除 DataNode 上的缓存
含义:用于清除 DataNode 上的某种类型的缓存。
语法:
clearCacheStatement
: CLEAR clearCacheOptions? CACHE localOrClusterMode?
;
clearCacheOptions
: ATTRIBUTE
| QUERY
| ALL
;
localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
参数解释:
- clearCacheOptions
- 含义:指定要清除的缓存类型。
- 可选性:可选。如果不指定,默认清除查询缓存(
QUERY
)。 - 取值:
ATTRIBUTE
:清除设备属性缓存。QUERY
:清除存储引擎中的查询缓存。ALL
:清除所有缓存,包括设备属性缓存、查询缓存以及树模型中的模式缓存。
- localOrClusterMode
- 含义:指定清除缓存的范围。
- 可选性:可选。默认值为
CLUSTER
。 - 取值:
ON LOCAL
:只清除客户端直连的 DataNode 上的缓存。ON CLUSTER
:清除集群中所有 DataNode 上的缓存。
示例:
IoTDB> CLEAR ALL CACHE ON LOCAL;
4. 数据修复
4.1 启动后台扫描并修复 tsfile 任务
含义:启动一个后台任务,开始扫描并修复 tsfile,能够修复数据文件内的时间戳乱序类异常。
语法:
startRepairDataStatement
: START REPAIR DATA localOrClusterMode?
;
localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
参数解释:
- localOrClusterMode
- 含义:指定数据修复的范围。
- 可选性:可选。默认值为
CLUSTER
。 - 取值:
ON LOCAL
:仅对客户端直连的 DataNode 执行。ON CLUSTER
:对集群中所有 DataNode 执行。
示例:
IoTDB> START REPAIR DATA ON CLUSTER;
4.2 暂停后台修复 tsfile 任务
含义:暂停后台的修复任务,暂停中的任务可通过再次执行 start repair data 命令恢复。
语法:
stopRepairDataStatement
: STOP REPAIR DATA localOrClusterMode?
;
localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
参数解释:
- localOrClusterMode
- 含义:指定数据修复的范围。
- 可选性:可选。默认值为
CLUSTER
。 - 取值:
ON LOCAL
:仅对客户端直连的 DataNode 执行。ON CLUSTER
:对集群中所有 DataNode 执行。
示例:
IoTDB> STOP REPAIR DATA ON CLUSTER;
5. 终止查询
5.1 主动终止查询
含义:使用该命令主动地终止查询。
语法:
killQueryStatement
: KILL (QUERY queryId=string | ALL QUERIES)
;
参数解释:
- QUERY queryId=string
- 含义:指定要终止的查询的 ID。
<queryId>
是正在执行的查询的唯一标识符。 - 获取查询 ID:可以通过
SHOW QUERIES
命令获取所有正在执行的查询及其 ID。
- 含义:指定要终止的查询的 ID。
- ALL QUERIES
- 含义:终止所有正在执行的查询。
示例:
通过指定 queryId
可以中止指定的查询,为了获取正在执行的查询 id,用户可以使用 show queries 命令,该命令将显示所有正在执行的查询列表。
IoTDB> KILL QUERY 20250108_101015_00000_1; -- 终止指定query
IoTDB> KILL ALL QUERIES; -- 终止所有query