blob: 9f13e839749269356911bc7da97340bbc8c46530 [file] [log] [blame] [view]
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# 运维语句
## 1. 状态查看
### 1.1 查看连接的模型
**含义**:返回当前连接的 sql_dialect 是树模型/表模型。
#### 语法:
```SQL
showCurrentSqlDialectStatement
: SHOW CURRENT_SQL_DIALECT
;
```
#### 示例:
```SQL
IoTDB> SHOW CURRENT_SQL_DIALECT
```
执行结果如下:
```SQL
+-----------------+
|CurrentSqlDialect|
+-----------------+
| TABLE|
+-----------------+
```
### 1.2 查看登录的用户名
**含义**:返回当前登录的用户名。
#### 语法:
```SQL
showCurrentUserStatement
: SHOW CURRENT_USER
;
```
#### 示例:
```SQL
IoTDB> SHOW CURRENT_USER
```
执行结果如下:
```SQL
+-----------+
|CurrentUser|
+-----------+
| root|
+-----------+
```
### 1.3 查看连接的数据库名
**含义**:返回当前连接的数据库名,若没有执行过 use 语句,则为 null。
#### 语法:
```SQL
showCurrentDatabaseStatement
: SHOW CURRENT_DATABASE
;
```
#### 示例:
```SQL
IoTDB> SHOW CURRENT_DATABASE;
IoTDB> USE test;
IoTDB> SHOW CURRENT_DATABASE;
```
执行结果如下:
```SQL
+---------------+
|CurrentDatabase|
+---------------+
| null|
+---------------+
+---------------+
|CurrentDatabase|
+---------------+
| test|
+---------------+
```
### 1.4 查看集群版本
**含义**:返回当前集群的版本。
#### 语法:
```SQL
showVersionStatement
: SHOW VERSION
;
```
#### 示例:
```SQL
IoTDB> SHOW VERSION
```
执行结果如下:
```SQL
+-------+---------+
|Version|BuildInfo|
+-------+---------+
|2.0.1.2| 1ca4008|
+-------+---------+
```
### 1.5 查看集群关键参数
**含义**:返回当前集群的关键参数。
#### 语法:
```SQL
showVariablesStatement
: SHOW VARIABLES
;
```
关键参数如下:
1. **ClusterName**:当前集群的名称。
2. **DataReplicationFactor**:数据副本的数量,表示每个数据分区(DataRegion)的副本数。
3. **SchemaReplicationFactor**:元数据副本的数量,表示每个元数据分区(SchemaRegion)的副本数。
4. **DataRegionConsensusProtocolClass**:数据分区(DataRegion)使用的共识协议类。
5. **SchemaRegionConsensusProtocolClass**:元数据分区(SchemaRegion)使用的共识协议类。
6. **ConfigNodeConsensusProtocolClass**:配置节点(ConfigNode)使用的共识协议类。
7. **TimePartitionOrigin**:数据库时间分区的起始时间戳。
8. **TimePartitionInterval**:数据库的时间分区间隔(单位:毫秒)。
9. **ReadConsistencyLevel**:读取操作的一致性级别。
10. **SchemaRegionPerDataNode**:数据节点(DataNode)上的元数据分区(SchemaRegion)数量。
11. **DataRegionPerDataNode**:数据节点(DataNode)上的数据分区(DataRegion)数量。
12. **SeriesSlotNum**:数据分区(DataRegion)的序列槽(SeriesSlot)数量。
13. **SeriesSlotExecutorClass**:序列槽的实现类。
14. **DiskSpaceWarningThreshold**:磁盘空间告警阈值(单位:百分比)。
15. **TimestampPrecision**:时间戳精度。
#### 示例:
```SQL
IoTDB> SHOW VARIABLES
```
执行结果如下:
```SQL
+----------------------------------+-----------------------------------------------------------------+
| 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。
#### 语法:
```SQL
showClusterIdStatement
: SHOW (CLUSTERID | CLUSTER_ID)
;
```
#### 示例:
```SQL
IoTDB> SHOW CLUSTER_ID
```
执行结果如下:
```SQL
+------------------------------------+
| ClusterId|
+------------------------------------+
|40163007-9ec1-4455-aa36-8055d740fcda|
```
### 1.7 查看客户端直连的 DataNode 进程所在服务器的时间
#### 语法:
**含义**:返回当前客户端直连的 DataNode 进程所在服务器的时间。
```SQL
showCurrentTimestampStatement
: SHOW CURRENT_TIMESTAMP
;
```
#### 示例:
```SQL
IoTDB> SHOW CURRENT_TIMESTAMP
```
执行结果如下:
```SQL
+-----------------------------+
| CurrentTimestamp|
+-----------------------------+
|2025-02-17T11:11:52.987+08:00|
+-----------------------------+
```
### 1.8 查看正在执行的查询信息
**含义**:用于显示所有正在执行的查询信息。
> 更多系统表使用方法请参考[系统表](../Reference/System-Tables_apache.md)
#### 语法:
```SQL
showQueriesStatement
: SHOW (QUERIES | QUERY PROCESSLIST)
(WHERE where=booleanExpression)?
(ORDER BY sortItem (',' sortItem)*)?
limitOffsetClause
;
```
**参数解释**:
1. **WHERE** 子句:需保证过滤的目标列是结果集中存在的列
2. **ORDER BY** 子句:需保证`sortKey`是结果集中存在的列
3. **limitOffsetClause**:
- **含义**:用于限制结果集的返回数量。
- **格式**:`LIMIT <offset>, <row_count>`, `<offset>` 是偏移量,`<row_count>` 是返回的行数。
4. **QUERIES** 表中的列:
- **query_id**:查询语句的 ID
- **start_time**:查询开始的时间戳,时间戳精度与系统精度一致
- **datanode_id**:发起查询语句的 DataNode 的ID
- **elapsed_time**:查询的执行耗时,单位是秒
- **statement**:查询的 SQL 语句
- **user**:发起查询的用户
#### 示例:
```SQL
IoTDB> SHOW QUERIES WHERE elapsed_time > 30
```
执行结果如下:
```SQL
+-----------------------+-----------------------------+-----------+------------+------------+----+
| 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|
+-----------------------+-----------------------------+-----------+------------+------------+----+
```
### 1.9 查看分区信息
**含义**:返回当前集群的分区信息。
#### 语法:
```SQL
showRegionsStatement
: SHOW REGIONS
;
```
#### 示例:
```SQL
IoTDB> SHOW REGIONS
```
执行结果如下:
```SQL
+--------+------------+-------+----------+-------------+-----------+----------+----------+-------+---------------+------+-----------------------+----------+
|RegionId| Type| Status| Database|SeriesSlotNum|TimeSlotNum|DataNodeId|RpcAddress|RpcPort|InternalAddress| Role| CreateTime|TsFileSize|
+--------+------------+-------+----------+-------------+-----------+----------+----------+-------+---------------+------+-----------------------+----------+
| 6|SchemaRegion|Running|tcollector| 670| 0| 1| 0.0.0.0| 6667| 127.0.0.1|Leader|2025-08-01T17:37:01.194| |
| 7| DataRegion|Running|tcollector| 335| 335| 1| 0.0.0.0| 6667| 127.0.0.1|Leader|2025-08-01T17:37:01.196| 169.85 KB|
| 8| DataRegion|Running|tcollector| 335| 335| 1| 0.0.0.0| 6667| 127.0.0.1|Leader|2025-08-01T17:37:01.198| 161.63 KB|
+--------+------------+-------+----------+-------------+-----------+----------+----------+-------+---------------+------+-----------------------+----------+
```
## 2. 状态设置
### 2.1 设置连接的模型
**含义**:将当前连接的 sql_dialect 置为树模型/表模型,在树模型和表模型中均可使用该命令。
#### 语法:
```SQL
SET SQL_DIALECT EQ (TABLE | TREE)
```
#### 示例:
```SQL
IoTDB> SET SQL_DIALECT=TABLE
IoTDB> SHOW CURRENT_SQL_DIALECT
```
执行结果如下:
```SQL
+-----------------+
|CurrentSqlDialect|
+-----------------+
| TABLE|
+-----------------+
```
### 2.2 更新配置项
**含义**:用于更新配置项,执行完成后会进行配置项的热加载,对于支持热修改的配置项会立即生效。
#### 语法:
```SQL
setConfigurationStatement
: SET CONFIGURATION propertyAssignments (ON INTEGER_VALUE)?
;
propertyAssignments
: property (',' property)*
;
property
: identifier EQ propertyValue
;
propertyValue
: DEFAULT
| expression
;
```
**参数解释**:
1. **propertyAssignments**
- **含义**:更新的配置列表,由多个 `property` 组成。
- 可以更新多个配置列表,用逗号分隔。
- **取值**:
- `DEFAULT`:将配置项恢复为默认值。
- `expression`:具体的值,必须是一个字符串。
2. **ON INTEGER_VALUE**
- **含义**:指定要更新配置的节点 ID。
- **可选性**:可选。如果不指定或指定的值低于 0,则更新所有 ConfigNode 和 DataNode 的配置。
#### 示例:
```SQL
IoTDB> SET CONFIGURATION disk_space_warning_threshold='0.05',heartbeat_interval_in_ms='1000' ON 1;
```
### 2.3 读取手动修改的配置文件
**含义**:用于读取手动修改过的配置文件,并对配置项进行热加载,对于支持热修改的配置项会立即生效。
#### 语法:
```SQL
loadConfigurationStatement
: LOAD CONFIGURATION localOrClusterMode?
;
localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
```
**参数解释**:
1. **localOrClusterMode**
- **含义**:指定配置热加载的范围。
- **可选性**:可选。默认值为 `CLUSTER`。
- **取值**:
- `LOCAL`:只对客户端直连的 DataNode 进行配置热加载。
- `CLUSTER`:对集群中所有 DataNode 进行配置热加载。
#### 示例:
```SQL
IoTDB> LOAD CONFIGURATION ON LOCAL;
```
### 2.4 设置系统的状态
**含义**:用于设置系统的状态。
#### 语法:
```SQL
setSystemStatusStatement
: SET SYSTEM TO (READONLY | RUNNING) localOrClusterMode?
;
localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
```
**参数解释**:
1. **RUNNING | READONLY**
- **含义**:指定系统的新状态。
- **取值**:
- `RUNNING`:将系统设置为运行状态,允许读写操作。
- `READONLY`:将系统设置为只读状态,只允许读取操作,禁止写入操作。
2. **localOrClusterMode**
- **含义**:指定状态变更的范围。
- **可选性**:可选。默认值为 `CLUSTER`。
- **取值**:
- `LOCAL`:仅对客户端直连的 DataNode 生效。
- `CLUSTER`:对集群中所有 DataNode 生效。
#### 示例:
```SQL
IoTDB> SET SYSTEM TO READONLY ON CLUSTER;
```
## 3. 数据管理
### 3.1 刷写内存表中的数据到磁盘
**含义**:将内存表中的数据刷写到磁盘上。
#### 语法:
```SQL
flushStatement
: FLUSH identifier? (',' identifier)* booleanValue? localOrClusterMode?
;
booleanValue
: TRUE | FALSE
;
localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
```
**参数解释**:
1. **identifier**
- **含义**:指定要刷写的数据库名称。
- **可选性**:可选。如果不指定,则默认刷写所有数据库。
- **多个数据库**:可以指定多个数据库名称,用逗号分隔。例如:`FLUSH test_db1, test_db2`。
2. **booleanValue**
- **含义**:指定刷写的内容。
- **可选性**:可选。如果不指定,则默认刷写顺序和乱序空间的内存。
- **取值**:
- `TRUE`:只刷写顺序空间的内存表。
- `FALSE`:只刷写乱序空间的MemTable。
3. **localOrClusterMode**
- **含义**:指定刷写的范围。
- **可选性**:可选。默认值为 `CLUSTER`。
- **取值**:
- `ON LOCAL`:只刷写客户端直连的 DataNode 上的内存表。
- `ON CLUSTER`:刷写集群中所有 DataNode 上的内存表。
#### 示例:
```SQL
IoTDB> FLUSH test_db TRUE ON LOCAL;
```
### 3.2 清除 DataNode 上的缓存
**含义**:用于清除 DataNode 上的某种类型的缓存。
#### 语法:
```SQL
clearCacheStatement
: CLEAR clearCacheOptions? CACHE localOrClusterMode?
;
clearCacheOptions
: ATTRIBUTE
| QUERY
| ALL
;
localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
```
**参数解释**:
1. **clearCacheOptions**
- **含义**:指定要清除的缓存类型。
- **可选性**:可选。如果不指定,默认清除查询缓存(`QUERY`)。
- **取值**:
- `ATTRIBUTE`:清除设备属性缓存。
- `QUERY`:清除存储引擎中的查询缓存。
- `ALL`:清除所有缓存,包括设备属性缓存、查询缓存以及树模型中的模式缓存。
2. **localOrClusterMode**
- **含义**:指定清除缓存的范围。
- **可选性**:可选。默认值为 `CLUSTER`。
- **取值**:
- `ON LOCAL`:只清除客户端直连的 DataNode 上的缓存。
- `ON CLUSTER`:清除集群中所有 DataNode 上的缓存。
#### 示例:
```SQL
IoTDB> CLEAR ALL CACHE ON LOCAL;
```
## 4. 数据修复
### 4.1 启动后台扫描并修复 tsfile 任务
**含义**:启动一个后台任务,开始扫描并修复 tsfile,能够修复数据文件内的时间戳乱序类异常。
#### 语法:
```SQL
startRepairDataStatement
: START REPAIR DATA localOrClusterMode?
;
localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
```
**参数解释**:
1. **localOrClusterMode**
- **含义**:指定数据修复的范围。
- **可选性**:可选。默认值为 `CLUSTER`。
- **取值**:
- `ON LOCAL`:仅对客户端直连的 DataNode 执行。
- `ON CLUSTER`:对集群中所有 DataNode 执行。
#### 示例:
```SQL
IoTDB> START REPAIR DATA ON CLUSTER;
```
### 4.2 暂停后台修复 tsfile 任务
**含义**:暂停后台的修复任务,暂停中的任务可通过再次执行 start repair data 命令恢复。
#### 语法:
```SQL
stopRepairDataStatement
: STOP REPAIR DATA localOrClusterMode?
;
localOrClusterMode
: (ON (LOCAL | CLUSTER))
;
```
**参数解释**:
1. **localOrClusterMode**
- **含义**:指定数据修复的范围。
- **可选性**:可选。默认值为 `CLUSTER`。
- **取值**:
- `ON LOCAL`:仅对客户端直连的 DataNode 执行。
- `ON CLUSTER`:对集群中所有 DataNode 执行。
#### 示例:
```SQL
IoTDB> STOP REPAIR DATA ON CLUSTER;
```
## 5. 终止查询
### 5.1 主动终止查询
**含义**:使用该命令主动地终止查询。
#### 语法:
```SQL
killQueryStatement
: KILL (QUERY queryId=string | ALL QUERIES)
;
```
**参数解释**:
1. **QUERY queryId=string**
- **含义**:指定要终止的查询的 ID。 `<queryId>` 是正在执行的查询的唯一标识符。
- **获取查询 ID**:可以通过 `SHOW QUERIES` 命令获取所有正在执行的查询及其 ID。
2. **ALL QUERIES**
- **含义**:终止所有正在执行的查询。
#### 示例:
通过指定 `queryId` 可以中止指定的查询,为了获取正在执行的查询 id,用户可以使用 show queries 命令,该命令将显示所有正在执行的查询列表。
```SQL
IoTDB> KILL QUERY 20250108_101015_00000_1; -- 终止指定query
IoTDB> KILL ALL QUERIES; -- 终止所有query
```