From 6a0549b4e1e15da6b89b4f53f24976b3afbe170e Mon Sep 17 00:00:00 2001 From: Leto_b Date: Wed, 30 Jul 2025 10:58:52 +0800 Subject: [PATCH] adjust table model sql manual --- src/.vuepress/sidebar/V2.0.x/en-Table.ts | 9 +- src/.vuepress/sidebar/V2.0.x/zh-Table.ts | 9 +- .../sidebar_timecho/V2.0.x/en-Table.ts | 9 +- .../sidebar_timecho/V2.0.x/zh-Table.ts | 9 +- .../SQL-Manual/SQL-Data-Addition-Deletion.md | 160 +++++ .../SQL-Manual/SQL-Maintenance-Statements.md | 590 ++++++++++++++++++ .../SQL-Manual/SQL-Metadata-Operations.md | 304 +++++++++ .../SQL-Manual/SQL-Data-Addition-Deletion.md | 160 +++++ .../SQL-Manual/SQL-Maintenance-Statements.md | 590 ++++++++++++++++++ .../SQL-Manual/SQL-Metadata-Operations.md | 304 +++++++++ .../SQL-Manual/SQL-Data-Addition-Deletion.md | 158 +++++ .../SQL-Manual/SQL-Maintenance-Statements.md | 590 ++++++++++++++++++ .../SQL-Manual/SQL-Metadata-Operations.md | 304 +++++++++ .../SQL-Manual/SQL-Data-Addition-Deletion.md | 158 +++++ .../SQL-Manual/SQL-Maintenance-Statements.md | 590 ++++++++++++++++++ .../SQL-Manual/SQL-Metadata-Operations.md | 304 +++++++++ 16 files changed, 4236 insertions(+), 12 deletions(-) create mode 100644 src/UserGuide/Master/Table/SQL-Manual/SQL-Data-Addition-Deletion.md create mode 100644 src/UserGuide/Master/Table/SQL-Manual/SQL-Maintenance-Statements.md create mode 100644 src/UserGuide/Master/Table/SQL-Manual/SQL-Metadata-Operations.md create mode 100644 src/UserGuide/latest-Table/SQL-Manual/SQL-Data-Addition-Deletion.md create mode 100644 src/UserGuide/latest-Table/SQL-Manual/SQL-Maintenance-Statements.md create mode 100644 src/UserGuide/latest-Table/SQL-Manual/SQL-Metadata-Operations.md create mode 100644 src/zh/UserGuide/Master/Table/SQL-Manual/SQL-Data-Addition-Deletion.md create mode 100644 src/zh/UserGuide/Master/Table/SQL-Manual/SQL-Maintenance-Statements.md create mode 100644 src/zh/UserGuide/Master/Table/SQL-Manual/SQL-Metadata-Operations.md create mode 100644 src/zh/UserGuide/latest-Table/SQL-Manual/SQL-Data-Addition-Deletion.md create mode 100644 src/zh/UserGuide/latest-Table/SQL-Manual/SQL-Maintenance-Statements.md create mode 100644 src/zh/UserGuide/latest-Table/SQL-Manual/SQL-Metadata-Operations.md diff --git a/src/.vuepress/sidebar/V2.0.x/en-Table.ts b/src/.vuepress/sidebar/V2.0.x/en-Table.ts index fce0dc4a6..f4f290505 100644 --- a/src/.vuepress/sidebar/V2.0.x/en-Table.ts +++ b/src/.vuepress/sidebar/V2.0.x/en-Table.ts @@ -195,10 +195,10 @@ export const enSidebar = { collapsible: true, prefix: 'SQL-Manual/', children: [ - { text: 'Identifier', link: 'Identifier' }, - { text: 'Keywords', link: 'Keywords' }, + { text: 'Metadata Operations', link: 'SQL-Metadata-Operations' }, + { text: 'Data Addition&Deletion', link: 'SQL-Data-Addition-Deletion' }, { - text: 'Query statement', + text: 'Data Query', collapsible: true, children: [ { text: 'overview', link: 'overview' }, @@ -213,6 +213,9 @@ export const enSidebar = { { text: 'Nested Queries', link: 'Nested-Queries' }, ], }, + { text: 'Maintenance Statements', link: 'SQL-Maintenance-Statements' }, + { text: 'Identifier', link: 'Identifier' }, + { text: 'Keywords', link: 'Keywords' }, { text: 'Functions and Operators', collapsible: true, diff --git a/src/.vuepress/sidebar/V2.0.x/zh-Table.ts b/src/.vuepress/sidebar/V2.0.x/zh-Table.ts index bb50350f9..0567fed42 100644 --- a/src/.vuepress/sidebar/V2.0.x/zh-Table.ts +++ b/src/.vuepress/sidebar/V2.0.x/zh-Table.ts @@ -185,10 +185,10 @@ export const zhSidebar = { collapsible: true, prefix: 'SQL-Manual/', children: [ - { text: '标识符', link: 'Identifier' }, - { text: '保留字&关键字', link: 'Keywords' }, + { text: '元数据操作', link: 'SQL-Metadata-Operations' }, + { text: '数据增删', link: 'SQL-Data-Addition-Deletion' }, { - text: '查询语句', + text: '数据查询', collapsible: true, children: [ { text: '概览', link: 'overview' }, @@ -203,6 +203,9 @@ export const zhSidebar = { { text: '嵌套查询', link: 'Nested-Queries' }, ], }, + { text: '运维语句', link: 'SQL-Maintenance-Statements' }, + { text: '标识符', link: 'Identifier' }, + { text: '保留字&关键字', link: 'Keywords' }, { text: '函数与操作符', collapsible: true, diff --git a/src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts b/src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts index 948feab9d..5a81f1933 100644 --- a/src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts +++ b/src/.vuepress/sidebar_timecho/V2.0.x/en-Table.ts @@ -200,10 +200,10 @@ export const enSidebar = { collapsible: true, prefix: 'SQL-Manual/', children: [ - { text: 'Identifier', link: 'Identifier' }, - { text: 'Keywords', link: 'Keywords' }, + { text: 'Metadata Operations', link: 'SQL-Metadata-Operations' }, + { text: 'Data Addition&Deletion', link: 'SQL-Data-Addition-Deletion' }, { - text: 'Query statement', + text: 'Data Query', collapsible: true, children: [ { text: 'overview', link: 'overview' }, @@ -218,6 +218,9 @@ export const enSidebar = { { text: 'Nested Queries', link: 'Nested-Queries' }, ], }, + { text: 'Maintenance Statements', link: 'SQL-Maintenance-Statements' }, + { text: 'Identifier', link: 'Identifier' }, + { text: 'Keywords', link: 'Keywords' }, { text: 'Functions and Operators', collapsible: true, diff --git a/src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts b/src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts index 962e210f0..7829f7c59 100644 --- a/src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts +++ b/src/.vuepress/sidebar_timecho/V2.0.x/zh-Table.ts @@ -189,10 +189,10 @@ export const zhSidebar = { collapsible: true, prefix: 'SQL-Manual/', children: [ - { text: '标识符', link: 'Identifier' }, - { text: '保留字&关键字', link: 'Keywords' }, + { text: '元数据操作', link: 'SQL-Metadata-Operations' }, + { text: '数据增删', link: 'SQL-Data-Addition-Deletion' }, { - text: '查询语句', + text: '数据查询', collapsible: true, children: [ { text: '概览', link: 'overview' }, @@ -207,6 +207,9 @@ export const zhSidebar = { { text: '嵌套查询', link: 'Nested-Queries' }, ], }, + { text: '运维语句', link: 'SQL-Maintenance-Statements' }, + { text: '标识符', link: 'Identifier' }, + { text: '保留字&关键字', link: 'Keywords' }, { text: '函数与操作符', collapsible: true, diff --git a/src/UserGuide/Master/Table/SQL-Manual/SQL-Data-Addition-Deletion.md b/src/UserGuide/Master/Table/SQL-Manual/SQL-Data-Addition-Deletion.md new file mode 100644 index 000000000..d4b5b398e --- /dev/null +++ b/src/UserGuide/Master/Table/SQL-Manual/SQL-Data-Addition-Deletion.md @@ -0,0 +1,160 @@ + + +# Data Addition & Deletion + +## 1. Data Insertion + +**Syntax:** + +```SQL +INSERT INTO [(COLUMN_NAME[, COLUMN_NAME]*)]? VALUES (COLUMN_VALUE[, COLUMN_VALUE]*) +``` + +[Detailed syntax reference](../Basic-Concept/Write-Updata-Data.md#_1-1-syntax) + +**Example 1: Specified Columns Insertion** + +```SQL +INSERT INTO table1("Region", "PlantID", "DeviceID", Time, "Temperature", "Displacement") +VALUES ('Hunan', '3001', '3', 4, 90.0, 1200.0); + +INSERT INTO table1("Region", "PlantID", "DeviceID", Time, "Temperature") +VALUES ('Hunan', '3001', '3', 5, 90.0); +``` + +**Example 2: NULL Value Insertion** + +```SQL +-- Equivalent to partial insertion with NULL values +INSERT INTO table1("Region", "PlantID", "DeviceID", "Model", "MaintenanceCycle", Time, "Temperature", "Displacement") +VALUES ('Hunan', '3001', '3', NULL, NULL, 4, 90.0, 1200.0); + +INSERT INTO table1("Region", "PlantID", "DeviceID", "Model", "MaintenanceCycle", Time, "Temperature", "Displacement") +VALUES ('Hunan', '3001', '3', NULL, NULL, 5, 90.0, NULL); +``` + +**Example 3: Multi-row Insertion** + +```SQL +INSERT INTO table1 VALUES +('Beijing', '3001', '3', '1', '10', 4, 90.0, 1200.0), +('Beijing', '3001', '3', '1', '10', 5, 90.0, 1200.0); + +INSERT INTO table1("Region", "PlantID", "DeviceID", Time, "Temperature", "Displacement") +VALUES +('Beijing', '3001', '3', 4, 90.0, 1200.0), +('Beijing', '3001', '3', 5, 90.0, 1200.0); +``` + +## 2. Data Update + +**Syntax:** + +```SQL +UPDATE SET updateAssignment (',' updateAssignment)* (WHERE where=booleanExpression)? + +updateAssignment + : identifier EQ expression + ; +``` + +[Detailed syntax reference](../Basic-Concept/Write-Updata-Data.md#_2-1-syntax) + +**Example:** + +```SQL +update table1 set b = a where substring(a, 1, 1) like '%' +``` + +## 3. Data Deletion + +**Syntax:** + +```SQL +DELETE FROM [WHERE_CLAUSE]? + +WHERE_CLAUSE: + WHERE DELETE_CONDITION + +DELETE_CONDITION: + SINGLE_CONDITION + | DELETE_CONDITION AND DELETE_CONDITION + | DELETE_CONDITION OR DELETE_CONDITION + +SINGLE_CODITION: + TIME_CONDITION | ID_CONDITION + +TIME_CONDITION: + time TIME_OPERATOR LONG_LITERAL + +TIME_OPERATOR: + < | > | <= | >= | = + +ID_CONDITION: + identifier = STRING_LITERAL +``` + +**Example 1: Full Table Deletion** + +```SQL +DELETE FROM table1 +``` + +**Example 2: Time-range Deletion** + +```SQL +-- Single time range +DELETE FROM table1 WHERE time <= 2024-11-29 00:00:00 + +-- Multiple time ranges +DELETE FROM table1 WHERE time >= 2024-11-27 00:00:00 and time <= 2024-11-29 00:00:00 +``` + +**Example 3: Device-Specific Deletion** + +```SQL +-- Delete data for specific device +DELETE FROM table1 +WHERE device_id='101' AND model_id = 'B'; + +-- Delete data for device within time range +DELETE FROM table1 +WHERE time >= '2024-11-27 16:39:00' AND time <= '2024-11-29 16:42:00' + AND device_id='101' AND model_id = 'B'; + +-- Delete data for specific device model +DELETE FROM table1 WHERE model_id = 'B'; +``` + +## 4. Device Deletion + +**Syntax:** + +```SQL +DELETE DEVICES FROM tableName=qualifiedName (WHERE booleanExpression)? +``` + +**Example: Delete specified device and all associated data** + +```SQL +DELETE DEVICES FROM table1 WHERE device_id = '101' +``` diff --git a/src/UserGuide/Master/Table/SQL-Manual/SQL-Maintenance-Statements.md b/src/UserGuide/Master/Table/SQL-Manual/SQL-Maintenance-Statements.md new file mode 100644 index 000000000..5410373fa --- /dev/null +++ b/src/UserGuide/Master/Table/SQL-Manual/SQL-Maintenance-Statements.md @@ -0,0 +1,590 @@ + + +# Management Statements + +## 1. Status Inspection + +### 1.1 View Current Tree/Table Model + +**Syntax:** + +```SQL +showCurrentSqlDialectStatement + : SHOW CURRENT_SQL_DIALECT + ; +``` + +**Example:** + +```SQL +IoTDB> SHOW CURRENT_SQL_DIALECT ++-----------------+ +|CurrentSqlDialect| ++-----------------+ +| TABLE| ++-----------------+ +``` + +### 1.2 View Current User + +**Syntax:** + +```SQL +showCurrentUserStatement + : SHOW CURRENT_USER + ; +``` + +**Example:** + +```SQL +IoTDB> SHOW CURRENT_USER ++-----------+ +|CurrentUser| ++-----------+ +| root| ++-----------+ +``` + +### 1.3 View Connected Database + +**Syntax:** + +```SQL +showCurrentDatabaseStatement + : SHOW CURRENT_DATABASE + ; +``` + +**Example:** + +```SQL +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| null| ++---------------+ + +IoTDB> USE test; + +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| test| ++---------------+ +``` + +### 1.4 View Cluster Version + +**Syntax:** + +```SQL +showVersionStatement + : SHOW VERSION + ; +``` + +**Example:** + +```SQL +IoTDB> SHOW VERSION ++-------+---------+ +|Version|BuildInfo| ++-------+---------+ +|2.0.1.2| 1ca4008| ++-------+---------+ +``` + +### 1.5 View Key Cluster Parameters + +**Syntax:** + +```SQL +showVariablesStatement + : SHOW VARIABLES + ; +``` + +**Example:** + +```SQL +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 View Cluster ID + +**Syntax:** + +```SQL +showClusterIdStatement + : SHOW (CLUSTERID | CLUSTER_ID) + ; +``` + +**Example:** + +```SQL +IoTDB> SHOW CLUSTER_ID ++------------------------------------+ +| ClusterId| ++------------------------------------+ +|40163007-9ec1-4455-aa36-8055d740fcda| +``` + +### 1.7 View Server Time + +Shows time of the DataNode server directly connected to client + +**Syntax:** + +```SQL +showCurrentTimestampStatement + : SHOW CURRENT_TIMESTAMP + ; +``` + +**Example:** + +```SQL +IoTDB> SHOW CURRENT_TIMESTAMP ++-----------------------------+ +| CurrentTimestamp| ++-----------------------------+ +|2025-02-17T11:11:52.987+08:00| ++-----------------------------+ +``` + +## 2. Status Configuration + +### 2.1 Set Connection Tree/Table Model + +**Syntax:** + +```SQL +SET SQL_DIALECT EQ (TABLE | TREE) +``` + +**Example:** + +```SQL +IoTDB> SET SQL_DIALECT=TABLE +IoTDB> SHOW CURRENT_SQL_DIALECT ++-----------------+ +|CurrentSqlDialect| ++-----------------+ +| TABLE| ++-----------------+ +``` + +### 2.2 Update Configuration Items + +**Syntax:** + +```SQL +setConfigurationStatement + : SET CONFIGURATION propertyAssignments (ON INTEGER_VALUE)? + ; + +propertyAssignments + : property (',' property)* + ; + +property + : identifier EQ propertyValue + ; + +propertyValue + : DEFAULT + | expression + ; +``` + +**Example:** + +```SQL +IoTDB> SET CONFIGURATION a='1',b='1' ON 1; +``` + +### 2.3 Load Manually Modified Configuration + +**Syntax:** + +```SQL +loadConfigurationStatement + : LOAD CONFIGURATION localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**Example:** + +```SQL +IoTDB> LOAD CONFIGURATION ON LOCAL; +``` + +### 2.4 Set System Status + +**Syntax:** + +```SQL +setSystemStatusStatement + : SET SYSTEM TO (READONLY | RUNNING) localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**Example:** + +```SQL +IoTDB> SET SYSTEM TO READONLY ON CLUSTER; +``` + +## 3. Data Management + +### 3.1 Flush Memory Table to Disk + +**Syntax:** + +```SQL +flushStatement + : FLUSH identifier? (',' identifier)* booleanValue? localOrClusterMode? + ; + +booleanValue + : TRUE | FALSE + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**Example:** + +```SQL +IoTDB> FLUSH test_db TRUE ON LOCAL; +``` + +### 3.2 Clear DataNode Cache + +**Syntax:** + +```SQL +clearCacheStatement + : CLEAR clearCacheOptions? CACHE localOrClusterMode? + ; + +clearCacheOptions + : ATTRIBUTE + | QUERY + | ALL + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**Example:** + +```SQL +IoTDB> CLEAR ALL CACHE ON LOCAL; +``` + +## 4. Data Repair + +### 4.1 Start Background TsFile Repair + +**Syntax:** + +```SQL +startRepairDataStatement + : START REPAIR DATA localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**Example:** + +```SQL +IoTDB> START REPAIR DATA ON CLUSTER; +``` + +### 4.2 Pause TsFile Repair + +**Syntax:** + +```SQL +stopRepairDataStatement + : STOP REPAIR DATA localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**Example:** + +```SQL +IoTDB> STOP REPAIR DATA ON CLUSTER; +``` + +## 5. Query Operations + +### 5.1 View Active Queries + +**Syntax:** + +```SQL +showQueriesStatement + : SHOW (QUERIES | QUERY PROCESSLIST) + (WHERE where=booleanExpression)? + (ORDER BY sortItem (',' sortItem)*)? + limitOffsetClause + ; +``` + +**Example:** + +```SQL +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| ++-----------------------+-----------------------------+-----------+------------+------------+----+ +``` + +### 5.2 Terminate Queries + +**Syntax:** + +```SQL +killQueryStatement + : KILL (QUERY queryId=string | ALL QUERIES) + ; +``` + +**Example:** + +```SQL +IoTDB> KILL QUERY 20250108_101015_00000_1; -- teminate specific query +IoTDB> KILL ALL QUERIES; -- teminate all query +``` + +### 5.3 Query Performance Analysis + +#### 5.3.1 View Execution Plan + +**Syntax:** + +```SQL +EXPLAIN +``` + +Detailed syntax reference: [EXPLAIN STATEMENT](../User-Manual/Query-Performance-Analysis.md#_1-explain-statement) + +**Example:** + +```SQL +IoTDB> explain select * from t1 ++-----------------------------------------------------------------------------------------------+ +| distribution plan| ++-----------------------------------------------------------------------------------------------+ +| ┌─────────────────────────────────────────────┐ | +| │OutputNode-4 │ | +| │OutputColumns-[time, device_id, type, speed] │ | +| │OutputSymbols: [time, device_id, type, speed]│ | +| └─────────────────────────────────────────────┘ | +| │ | +| │ | +| ┌─────────────────────────────────────────────┐ | +| │Collect-21 │ | +| │OutputSymbols: [time, device_id, type, speed]│ | +| └─────────────────────────────────────────────┘ | +| ┌───────────────────────┴───────────────────────┐ | +| │ │ | +|┌─────────────────────────────────────────────┐ ┌───────────┐ | +|│TableScan-19 │ │Exchange-28│ | +|│QualifiedTableName: test.t1 │ └───────────┘ | +|│OutputSymbols: [time, device_id, type, speed]│ │ | +|│DeviceNumber: 1 │ │ | +|│ScanOrder: ASC │ ┌─────────────────────────────────────────────┐| +|│PushDownOffset: 0 │ │TableScan-20 │| +|│PushDownLimit: 0 │ │QualifiedTableName: test.t1 │| +|│PushDownLimitToEachDevice: false │ │OutputSymbols: [time, device_id, type, speed]│| +|│RegionId: 2 │ │DeviceNumber: 1 │| +|└─────────────────────────────────────────────┘ │ScanOrder: ASC │| +| │PushDownOffset: 0 │| +| │PushDownLimit: 0 │| +| │PushDownLimitToEachDevice: false │| +| │RegionId: 1 │| +| └─────────────────────────────────────────────┘| ++-----------------------------------------------------------------------------------------------+ +``` + +#### 5.3.2 Analyze Query Performance + +**Syntax:** + +```SQL +EXPLAIN ANALYZE [VERBOSE] +``` + +Detailed syntax reference: [EXPLAIN ANALYZE STATEMENT](../User-Manual/Query-Performance-Analysis.md#_2-explain-analyze-statement) + +**Example:** + +```SQL +IoTDB> explain analyze verbose select * from t1 ++-----------------------------------------------------------------------------------------------+ +| Explain Analyze| ++-----------------------------------------------------------------------------------------------+ +|Analyze Cost: 38.860 ms | +|Fetch Partition Cost: 9.888 ms | +|Fetch Schema Cost: 54.046 ms | +|Logical Plan Cost: 10.102 ms | +|Logical Optimization Cost: 17.396 ms | +|Distribution Plan Cost: 2.508 ms | +|Dispatch Cost: 22.126 ms | +|Fragment Instances Count: 2 | +| | +|FRAGMENT-INSTANCE[Id: 20241127_090849_00009_1.2.0][IP: 0.0.0.0][DataRegion: 2][State: FINISHED]| +| Total Wall Time: 18 ms | +| Cost of initDataQuerySource: 6.153 ms | +| Seq File(unclosed): 1, Seq File(closed): 0 | +| UnSeq File(unclosed): 0, UnSeq File(closed): 0 | +| ready queued time: 0.164 ms, blocked queued time: 0.342 ms | +| Query Statistics: | +| loadBloomFilterFromCacheCount: 0 | +| loadBloomFilterFromDiskCount: 0 | +| loadBloomFilterActualIOSize: 0 | +| loadBloomFilterTime: 0.000 | +| loadTimeSeriesMetadataAlignedMemSeqCount: 1 | +| loadTimeSeriesMetadataAlignedMemSeqTime: 0.246 | +| loadTimeSeriesMetadataFromCacheCount: 0 | +| loadTimeSeriesMetadataFromDiskCount: 0 | +| loadTimeSeriesMetadataActualIOSize: 0 | +| constructAlignedChunkReadersMemCount: 1 | +| constructAlignedChunkReadersMemTime: 0.294 | +| loadChunkFromCacheCount: 0 | +| loadChunkFromDiskCount: 0 | +| loadChunkActualIOSize: 0 | +| pageReadersDecodeAlignedMemCount: 1 | +| pageReadersDecodeAlignedMemTime: 0.047 | +| [PlanNodeId 43]: IdentitySinkNode(IdentitySinkOperator) | +| CPU Time: 5.523 ms | +| output: 2 rows | +| HasNext() Called Count: 6 | +| Next() Called Count: 5 | +| Estimated Memory Size: : 327680 | +| [PlanNodeId 31]: CollectNode(CollectOperator) | +| CPU Time: 5.512 ms | +| output: 2 rows | +| HasNext() Called Count: 6 | +| Next() Called Count: 5 | +| Estimated Memory Size: : 327680 | +| [PlanNodeId 29]: TableScanNode(TableScanOperator) | +| CPU Time: 5.439 ms | +| output: 1 rows | +| HasNext() Called Count: 3 +| Next() Called Count: 2 | +| Estimated Memory Size: : 327680 | +| DeviceNumber: 1 | +| CurrentDeviceIndex: 0 | +| [PlanNodeId 40]: ExchangeNode(ExchangeOperator) | +| CPU Time: 0.053 ms | +| output: 1 rows | +| HasNext() Called Count: 2 | +| Next() Called Count: 1 | +| Estimated Memory Size: : 131072 | +| | +|FRAGMENT-INSTANCE[Id: 20241127_090849_00009_1.3.0][IP: 0.0.0.0][DataRegion: 1][State: FINISHED]| +| Total Wall Time: 13 ms | +| Cost of initDataQuerySource: 5.725 ms | +| Seq File(unclosed): 1, Seq File(closed): 0 | +| UnSeq File(unclosed): 0, UnSeq File(closed): 0 | +| ready queued time: 0.118 ms, blocked queued time: 5.844 ms | +| Query Statistics: | +| loadBloomFilterFromCacheCount: 0 | +| loadBloomFilterFromDiskCount: 0 | +| loadBloomFilterActualIOSize: 0 | +| loadBloomFilterTime: 0.000 | +| loadTimeSeriesMetadataAlignedMemSeqCount: 1 | +| loadTimeSeriesMetadataAlignedMemSeqTime: 0.004 | +| loadTimeSeriesMetadataFromCacheCount: 0 | +| loadTimeSeriesMetadataFromDiskCount: 0 | +| loadTimeSeriesMetadataActualIOSize: 0 | +| constructAlignedChunkReadersMemCount: 1 | +| constructAlignedChunkReadersMemTime: 0.001 | +| loadChunkFromCacheCount: 0 | +| loadChunkFromDiskCount: 0 | +| loadChunkActualIOSize: 0 | +| pageReadersDecodeAlignedMemCount: 1 | +| pageReadersDecodeAlignedMemTime: 0.007 | +| [PlanNodeId 42]: IdentitySinkNode(IdentitySinkOperator) | +| CPU Time: 0.270 ms | +| output: 1 rows | +| HasNext() Called Count: 3 | +| Next() Called Count: 2 | +| Estimated Memory Size: : 327680 | +| [PlanNodeId 30]: TableScanNode(TableScanOperator) | +| CPU Time: 0.250 ms | +| output: 1 rows | +| HasNext() Called Count: 3 | +| Next() Called Count: 2 | +| Estimated Memory Size: : 327680 | +| DeviceNumber: 1 | +| CurrentDeviceIndex: 0 | ++-----------------------------------------------------------------------------------------------+ +``` diff --git a/src/UserGuide/Master/Table/SQL-Manual/SQL-Metadata-Operations.md b/src/UserGuide/Master/Table/SQL-Manual/SQL-Metadata-Operations.md new file mode 100644 index 000000000..c09789283 --- /dev/null +++ b/src/UserGuide/Master/Table/SQL-Manual/SQL-Metadata-Operations.md @@ -0,0 +1,304 @@ + + +# Metadata Operations + +## 1. Database Management + +### 1.1 Create Database + +**Syntax:** + +```SQL +CREATE DATABASE (IF NOT EXISTS)? (WITH properties)? +``` + +[Detailed syntax reference](../Basic-Concept/Database-Management.md#_1-1-create-a-database) + +**Examples:** + +```SQL +CREATE DATABASE database1; +CREATE DATABASE IF NOT EXISTS database1; + +-- Create database with 1-year TTL +CREATE DATABASE IF NOT EXISTS database1 with(TTL=31536000000); +``` + +### 1.2 Use Database + +**Syntax:** + +```SQL +USE +``` + +**Examples:** + +```SQL +USE database1 +``` + +### 1.3 View Current Database + +**Syntax:** + +```SQL +SHOW CURRENT_DATABASE +``` + +**Examples:** + +```SQL +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| null| ++---------------+ + +IoTDB> USE test; + +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| iot_database| ++---------------+ +``` + +### 1.4 List All Databases + +**Syntax:** + +```SQL +SHOW DATABASES (DETAILS)? +``` + +[Detailed syntax reference](../Basic-Concept/Database-Management.md#_1-4-view-all-databases) + +**Examples:** + +```SQL +IoTDB> show databases ++---------+-------+-----------------------+---------------------+---------------------+ +| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval| ++---------+-------+-----------------------+---------------------+---------------------+ +|test_prop| 300| 3| 2| 100000| +| test2| 300| 3| 2| 604800000| ++---------+-------+-----------------------+---------------------+---------------------+ +IoTDB> show databases details ++---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+ +| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|SchemaRegionGroupNum| DataRegionGroupNum| ++---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+ +|test_prop| 300| 3| 2| 100000| 1| 2| +| test2| 300| 3| 2| 604800000| 1| 2| ++---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+ +``` + +### 1.5 Modify Database + +**Syntax:** + +```SQL +ALTER DATABASE (IF EXISTS)? database=identifier SET PROPERTIES propertyAssignments +``` + +**Examples:** + +```SQL +ALTER DATABASE database1 SET PROPERTIES TTL=31536000000; +``` + +### 1.6 Drop Database + +**Syntax:** + +```SQL +DROP DATABASE (IF EXISTS)? +``` + +**Examples:** + +```SQL +DROP DATABASE IF EXISTS database1 +``` + +## 2. Table Management + +### 2.1 Create Table + +**Syntax:** + +```SQL +createTableStatement + : CREATE TABLE (IF NOT EXISTS)? qualifiedName + '(' (columnDefinition (',' columnDefinition)*)? ')' + charsetDesc? + comment? + (WITH properties)? + ; + +charsetDesc + : DEFAULT? (CHAR SET | CHARSET | CHARACTER SET) EQ? identifierOrString + ; + +columnDefinition + : identifier columnCategory=(TAG | ATTRIBUTE | TIME) charsetName? comment? + | identifier type (columnCategory=(TAG | ATTRIBUTE | TIME | FIELD))? charsetName? comment? + ; + +charsetName + : CHAR SET identifier + | CHARSET identifier + | CHARACTER SET identifier + ; + +comment + : COMMENT string + ; +``` + +[Detailed syntax reference](../Basic-Concept/Table-Management.md#_1-1-create-a-table) + +**Examples:** + +```SQL +CREATE TABLE table1 ( + time TIMESTAMP TIME, + region STRING TAG, + plant_id STRING TAG, + device_id STRING TAG, + model_id STRING ATTRIBUTE, + maintenance STRING ATTRIBUTE COMMENT 'maintenance', + temperature FLOAT FIELD COMMENT 'temperature', + humidity FLOAT FIELD COMMENT 'humidity', + status BOOLEAN FIELD COMMENT 'status', + arrival_time TIMESTAMP FIELD COMMENT 'arrival_time' +) COMMENT 'table1' WITH (TTL=31536000000); + +CREATE TABLE IF NOT EXISTS table2 (); + +CREATE TABLE tableC ( + "plant" STRING TAG, + "temperature" INT32 FIELD COMMENT 'temperature' +) WITH (TTL=DEFAULT); +``` + +### 2.2 List Tables + +**Syntax:** + +```SQL +SHOW TABLES (DETAILS)? ((FROM | IN) database_name)? +``` + +**Examples:** + +```SQL +IoTDB> show tables from test_db ++---------+-------+-------+ +|TableName|TTL(ms)|Comment| ++---------+-------+-------+ +| test| INF| TEST| ++---------+-------+-------+ + +IoTDB> show tables details from test_db ++---------+-------+----------+-------+ +|TableName|TTL(ms)| Status|Comment| ++---------+-------+----------+-------+ +| test| INF| USING| TEST| +| turbine| INF|PRE_CREATE| null| +| car| 1000|PRE_DELETE| null| ++---------+-------+----------+-------+ +``` + +### 2.3 Describe Table Columns + +**Syntax:** + +```SQL +(DESC | DESCRIBE) (DETAILS)? +``` + +**Examples:** + +```SQL +IoTDB> desc tableB ++----------+---------+-----------+-------+ +|ColumnName| DataType| Category|Comment| ++----------+---------+-----------+-------+ +| time|TIMESTAMP| TIME| null| +| a| STRING| TAG| a| +| b| STRING| ATTRIBUTE| b| +| c| INT32| FIELD| c| ++----------+---------+-----------+-------+ + +IoTDB> desc tableB details ++----------+---------+-----------+----------+-------+ +|ColumnName| DataType| Category| Status|Comment| ++----------+---------+-----------+----------+-------+ +| time|TIMESTAMP| TIME| USING| null| +| a| STRING| TAG| USING| a| +| b| STRING| ATTRIBUTE| USING| b| +| c| INT32| FIELD| USING| c| +| d| INT32| FIELD|PRE_DELETE| d| ++----------+---------+-----------+----------+-------+ +``` + +### 2.4 Modify Table + +**Syntax:** + +```SQL +ALTER TABLE (IF EXISTS)? tableName=qualifiedName ADD COLUMN (IF NOT EXISTS)? column=columnDefinition COMMENT 'column_comment' #addColumn +| ALTER TABLE (IF EXISTS)? tableName=qualifiedName DROP COLUMN (IF EXISTS)? column=identifier #dropColumn +// set TTL can use this +| ALTER TABLE (IF EXISTS)? tableName=qualifiedName SET PROPERTIES propertyAssignments #setTableProperties +| COMMENT ON TABLE tableName=qualifiedName IS 'table_comment' +| COMMENT ON COLUMN tableName.column IS 'column_comment' +``` + +**Examples:** + +```SQL +ALTER TABLE tableB ADD COLUMN IF NOT EXISTS a TAG COMMENT 'a' +ALTER TABLE tableB set properties TTL=3600 +COMMENT ON TABLE table1 IS 'table1' +COMMENT ON COLUMN table1.a IS null +``` + +### 2.5 Drop Table + +**Syntax:** + +```SQL +DROP TABLE (IF EXISTS)? +``` + +**Examples:** + +```SQL +DROP TABLE tableA +DROP TABLE test.tableB +``` + + diff --git a/src/UserGuide/latest-Table/SQL-Manual/SQL-Data-Addition-Deletion.md b/src/UserGuide/latest-Table/SQL-Manual/SQL-Data-Addition-Deletion.md new file mode 100644 index 000000000..d4b5b398e --- /dev/null +++ b/src/UserGuide/latest-Table/SQL-Manual/SQL-Data-Addition-Deletion.md @@ -0,0 +1,160 @@ + + +# Data Addition & Deletion + +## 1. Data Insertion + +**Syntax:** + +```SQL +INSERT INTO [(COLUMN_NAME[, COLUMN_NAME]*)]? VALUES (COLUMN_VALUE[, COLUMN_VALUE]*) +``` + +[Detailed syntax reference](../Basic-Concept/Write-Updata-Data.md#_1-1-syntax) + +**Example 1: Specified Columns Insertion** + +```SQL +INSERT INTO table1("Region", "PlantID", "DeviceID", Time, "Temperature", "Displacement") +VALUES ('Hunan', '3001', '3', 4, 90.0, 1200.0); + +INSERT INTO table1("Region", "PlantID", "DeviceID", Time, "Temperature") +VALUES ('Hunan', '3001', '3', 5, 90.0); +``` + +**Example 2: NULL Value Insertion** + +```SQL +-- Equivalent to partial insertion with NULL values +INSERT INTO table1("Region", "PlantID", "DeviceID", "Model", "MaintenanceCycle", Time, "Temperature", "Displacement") +VALUES ('Hunan', '3001', '3', NULL, NULL, 4, 90.0, 1200.0); + +INSERT INTO table1("Region", "PlantID", "DeviceID", "Model", "MaintenanceCycle", Time, "Temperature", "Displacement") +VALUES ('Hunan', '3001', '3', NULL, NULL, 5, 90.0, NULL); +``` + +**Example 3: Multi-row Insertion** + +```SQL +INSERT INTO table1 VALUES +('Beijing', '3001', '3', '1', '10', 4, 90.0, 1200.0), +('Beijing', '3001', '3', '1', '10', 5, 90.0, 1200.0); + +INSERT INTO table1("Region", "PlantID", "DeviceID", Time, "Temperature", "Displacement") +VALUES +('Beijing', '3001', '3', 4, 90.0, 1200.0), +('Beijing', '3001', '3', 5, 90.0, 1200.0); +``` + +## 2. Data Update + +**Syntax:** + +```SQL +UPDATE SET updateAssignment (',' updateAssignment)* (WHERE where=booleanExpression)? + +updateAssignment + : identifier EQ expression + ; +``` + +[Detailed syntax reference](../Basic-Concept/Write-Updata-Data.md#_2-1-syntax) + +**Example:** + +```SQL +update table1 set b = a where substring(a, 1, 1) like '%' +``` + +## 3. Data Deletion + +**Syntax:** + +```SQL +DELETE FROM [WHERE_CLAUSE]? + +WHERE_CLAUSE: + WHERE DELETE_CONDITION + +DELETE_CONDITION: + SINGLE_CONDITION + | DELETE_CONDITION AND DELETE_CONDITION + | DELETE_CONDITION OR DELETE_CONDITION + +SINGLE_CODITION: + TIME_CONDITION | ID_CONDITION + +TIME_CONDITION: + time TIME_OPERATOR LONG_LITERAL + +TIME_OPERATOR: + < | > | <= | >= | = + +ID_CONDITION: + identifier = STRING_LITERAL +``` + +**Example 1: Full Table Deletion** + +```SQL +DELETE FROM table1 +``` + +**Example 2: Time-range Deletion** + +```SQL +-- Single time range +DELETE FROM table1 WHERE time <= 2024-11-29 00:00:00 + +-- Multiple time ranges +DELETE FROM table1 WHERE time >= 2024-11-27 00:00:00 and time <= 2024-11-29 00:00:00 +``` + +**Example 3: Device-Specific Deletion** + +```SQL +-- Delete data for specific device +DELETE FROM table1 +WHERE device_id='101' AND model_id = 'B'; + +-- Delete data for device within time range +DELETE FROM table1 +WHERE time >= '2024-11-27 16:39:00' AND time <= '2024-11-29 16:42:00' + AND device_id='101' AND model_id = 'B'; + +-- Delete data for specific device model +DELETE FROM table1 WHERE model_id = 'B'; +``` + +## 4. Device Deletion + +**Syntax:** + +```SQL +DELETE DEVICES FROM tableName=qualifiedName (WHERE booleanExpression)? +``` + +**Example: Delete specified device and all associated data** + +```SQL +DELETE DEVICES FROM table1 WHERE device_id = '101' +``` diff --git a/src/UserGuide/latest-Table/SQL-Manual/SQL-Maintenance-Statements.md b/src/UserGuide/latest-Table/SQL-Manual/SQL-Maintenance-Statements.md new file mode 100644 index 000000000..5410373fa --- /dev/null +++ b/src/UserGuide/latest-Table/SQL-Manual/SQL-Maintenance-Statements.md @@ -0,0 +1,590 @@ + + +# Management Statements + +## 1. Status Inspection + +### 1.1 View Current Tree/Table Model + +**Syntax:** + +```SQL +showCurrentSqlDialectStatement + : SHOW CURRENT_SQL_DIALECT + ; +``` + +**Example:** + +```SQL +IoTDB> SHOW CURRENT_SQL_DIALECT ++-----------------+ +|CurrentSqlDialect| ++-----------------+ +| TABLE| ++-----------------+ +``` + +### 1.2 View Current User + +**Syntax:** + +```SQL +showCurrentUserStatement + : SHOW CURRENT_USER + ; +``` + +**Example:** + +```SQL +IoTDB> SHOW CURRENT_USER ++-----------+ +|CurrentUser| ++-----------+ +| root| ++-----------+ +``` + +### 1.3 View Connected Database + +**Syntax:** + +```SQL +showCurrentDatabaseStatement + : SHOW CURRENT_DATABASE + ; +``` + +**Example:** + +```SQL +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| null| ++---------------+ + +IoTDB> USE test; + +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| test| ++---------------+ +``` + +### 1.4 View Cluster Version + +**Syntax:** + +```SQL +showVersionStatement + : SHOW VERSION + ; +``` + +**Example:** + +```SQL +IoTDB> SHOW VERSION ++-------+---------+ +|Version|BuildInfo| ++-------+---------+ +|2.0.1.2| 1ca4008| ++-------+---------+ +``` + +### 1.5 View Key Cluster Parameters + +**Syntax:** + +```SQL +showVariablesStatement + : SHOW VARIABLES + ; +``` + +**Example:** + +```SQL +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 View Cluster ID + +**Syntax:** + +```SQL +showClusterIdStatement + : SHOW (CLUSTERID | CLUSTER_ID) + ; +``` + +**Example:** + +```SQL +IoTDB> SHOW CLUSTER_ID ++------------------------------------+ +| ClusterId| ++------------------------------------+ +|40163007-9ec1-4455-aa36-8055d740fcda| +``` + +### 1.7 View Server Time + +Shows time of the DataNode server directly connected to client + +**Syntax:** + +```SQL +showCurrentTimestampStatement + : SHOW CURRENT_TIMESTAMP + ; +``` + +**Example:** + +```SQL +IoTDB> SHOW CURRENT_TIMESTAMP ++-----------------------------+ +| CurrentTimestamp| ++-----------------------------+ +|2025-02-17T11:11:52.987+08:00| ++-----------------------------+ +``` + +## 2. Status Configuration + +### 2.1 Set Connection Tree/Table Model + +**Syntax:** + +```SQL +SET SQL_DIALECT EQ (TABLE | TREE) +``` + +**Example:** + +```SQL +IoTDB> SET SQL_DIALECT=TABLE +IoTDB> SHOW CURRENT_SQL_DIALECT ++-----------------+ +|CurrentSqlDialect| ++-----------------+ +| TABLE| ++-----------------+ +``` + +### 2.2 Update Configuration Items + +**Syntax:** + +```SQL +setConfigurationStatement + : SET CONFIGURATION propertyAssignments (ON INTEGER_VALUE)? + ; + +propertyAssignments + : property (',' property)* + ; + +property + : identifier EQ propertyValue + ; + +propertyValue + : DEFAULT + | expression + ; +``` + +**Example:** + +```SQL +IoTDB> SET CONFIGURATION a='1',b='1' ON 1; +``` + +### 2.3 Load Manually Modified Configuration + +**Syntax:** + +```SQL +loadConfigurationStatement + : LOAD CONFIGURATION localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**Example:** + +```SQL +IoTDB> LOAD CONFIGURATION ON LOCAL; +``` + +### 2.4 Set System Status + +**Syntax:** + +```SQL +setSystemStatusStatement + : SET SYSTEM TO (READONLY | RUNNING) localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**Example:** + +```SQL +IoTDB> SET SYSTEM TO READONLY ON CLUSTER; +``` + +## 3. Data Management + +### 3.1 Flush Memory Table to Disk + +**Syntax:** + +```SQL +flushStatement + : FLUSH identifier? (',' identifier)* booleanValue? localOrClusterMode? + ; + +booleanValue + : TRUE | FALSE + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**Example:** + +```SQL +IoTDB> FLUSH test_db TRUE ON LOCAL; +``` + +### 3.2 Clear DataNode Cache + +**Syntax:** + +```SQL +clearCacheStatement + : CLEAR clearCacheOptions? CACHE localOrClusterMode? + ; + +clearCacheOptions + : ATTRIBUTE + | QUERY + | ALL + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**Example:** + +```SQL +IoTDB> CLEAR ALL CACHE ON LOCAL; +``` + +## 4. Data Repair + +### 4.1 Start Background TsFile Repair + +**Syntax:** + +```SQL +startRepairDataStatement + : START REPAIR DATA localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**Example:** + +```SQL +IoTDB> START REPAIR DATA ON CLUSTER; +``` + +### 4.2 Pause TsFile Repair + +**Syntax:** + +```SQL +stopRepairDataStatement + : STOP REPAIR DATA localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**Example:** + +```SQL +IoTDB> STOP REPAIR DATA ON CLUSTER; +``` + +## 5. Query Operations + +### 5.1 View Active Queries + +**Syntax:** + +```SQL +showQueriesStatement + : SHOW (QUERIES | QUERY PROCESSLIST) + (WHERE where=booleanExpression)? + (ORDER BY sortItem (',' sortItem)*)? + limitOffsetClause + ; +``` + +**Example:** + +```SQL +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| ++-----------------------+-----------------------------+-----------+------------+------------+----+ +``` + +### 5.2 Terminate Queries + +**Syntax:** + +```SQL +killQueryStatement + : KILL (QUERY queryId=string | ALL QUERIES) + ; +``` + +**Example:** + +```SQL +IoTDB> KILL QUERY 20250108_101015_00000_1; -- teminate specific query +IoTDB> KILL ALL QUERIES; -- teminate all query +``` + +### 5.3 Query Performance Analysis + +#### 5.3.1 View Execution Plan + +**Syntax:** + +```SQL +EXPLAIN +``` + +Detailed syntax reference: [EXPLAIN STATEMENT](../User-Manual/Query-Performance-Analysis.md#_1-explain-statement) + +**Example:** + +```SQL +IoTDB> explain select * from t1 ++-----------------------------------------------------------------------------------------------+ +| distribution plan| ++-----------------------------------------------------------------------------------------------+ +| ┌─────────────────────────────────────────────┐ | +| │OutputNode-4 │ | +| │OutputColumns-[time, device_id, type, speed] │ | +| │OutputSymbols: [time, device_id, type, speed]│ | +| └─────────────────────────────────────────────┘ | +| │ | +| │ | +| ┌─────────────────────────────────────────────┐ | +| │Collect-21 │ | +| │OutputSymbols: [time, device_id, type, speed]│ | +| └─────────────────────────────────────────────┘ | +| ┌───────────────────────┴───────────────────────┐ | +| │ │ | +|┌─────────────────────────────────────────────┐ ┌───────────┐ | +|│TableScan-19 │ │Exchange-28│ | +|│QualifiedTableName: test.t1 │ └───────────┘ | +|│OutputSymbols: [time, device_id, type, speed]│ │ | +|│DeviceNumber: 1 │ │ | +|│ScanOrder: ASC │ ┌─────────────────────────────────────────────┐| +|│PushDownOffset: 0 │ │TableScan-20 │| +|│PushDownLimit: 0 │ │QualifiedTableName: test.t1 │| +|│PushDownLimitToEachDevice: false │ │OutputSymbols: [time, device_id, type, speed]│| +|│RegionId: 2 │ │DeviceNumber: 1 │| +|└─────────────────────────────────────────────┘ │ScanOrder: ASC │| +| │PushDownOffset: 0 │| +| │PushDownLimit: 0 │| +| │PushDownLimitToEachDevice: false │| +| │RegionId: 1 │| +| └─────────────────────────────────────────────┘| ++-----------------------------------------------------------------------------------------------+ +``` + +#### 5.3.2 Analyze Query Performance + +**Syntax:** + +```SQL +EXPLAIN ANALYZE [VERBOSE] +``` + +Detailed syntax reference: [EXPLAIN ANALYZE STATEMENT](../User-Manual/Query-Performance-Analysis.md#_2-explain-analyze-statement) + +**Example:** + +```SQL +IoTDB> explain analyze verbose select * from t1 ++-----------------------------------------------------------------------------------------------+ +| Explain Analyze| ++-----------------------------------------------------------------------------------------------+ +|Analyze Cost: 38.860 ms | +|Fetch Partition Cost: 9.888 ms | +|Fetch Schema Cost: 54.046 ms | +|Logical Plan Cost: 10.102 ms | +|Logical Optimization Cost: 17.396 ms | +|Distribution Plan Cost: 2.508 ms | +|Dispatch Cost: 22.126 ms | +|Fragment Instances Count: 2 | +| | +|FRAGMENT-INSTANCE[Id: 20241127_090849_00009_1.2.0][IP: 0.0.0.0][DataRegion: 2][State: FINISHED]| +| Total Wall Time: 18 ms | +| Cost of initDataQuerySource: 6.153 ms | +| Seq File(unclosed): 1, Seq File(closed): 0 | +| UnSeq File(unclosed): 0, UnSeq File(closed): 0 | +| ready queued time: 0.164 ms, blocked queued time: 0.342 ms | +| Query Statistics: | +| loadBloomFilterFromCacheCount: 0 | +| loadBloomFilterFromDiskCount: 0 | +| loadBloomFilterActualIOSize: 0 | +| loadBloomFilterTime: 0.000 | +| loadTimeSeriesMetadataAlignedMemSeqCount: 1 | +| loadTimeSeriesMetadataAlignedMemSeqTime: 0.246 | +| loadTimeSeriesMetadataFromCacheCount: 0 | +| loadTimeSeriesMetadataFromDiskCount: 0 | +| loadTimeSeriesMetadataActualIOSize: 0 | +| constructAlignedChunkReadersMemCount: 1 | +| constructAlignedChunkReadersMemTime: 0.294 | +| loadChunkFromCacheCount: 0 | +| loadChunkFromDiskCount: 0 | +| loadChunkActualIOSize: 0 | +| pageReadersDecodeAlignedMemCount: 1 | +| pageReadersDecodeAlignedMemTime: 0.047 | +| [PlanNodeId 43]: IdentitySinkNode(IdentitySinkOperator) | +| CPU Time: 5.523 ms | +| output: 2 rows | +| HasNext() Called Count: 6 | +| Next() Called Count: 5 | +| Estimated Memory Size: : 327680 | +| [PlanNodeId 31]: CollectNode(CollectOperator) | +| CPU Time: 5.512 ms | +| output: 2 rows | +| HasNext() Called Count: 6 | +| Next() Called Count: 5 | +| Estimated Memory Size: : 327680 | +| [PlanNodeId 29]: TableScanNode(TableScanOperator) | +| CPU Time: 5.439 ms | +| output: 1 rows | +| HasNext() Called Count: 3 +| Next() Called Count: 2 | +| Estimated Memory Size: : 327680 | +| DeviceNumber: 1 | +| CurrentDeviceIndex: 0 | +| [PlanNodeId 40]: ExchangeNode(ExchangeOperator) | +| CPU Time: 0.053 ms | +| output: 1 rows | +| HasNext() Called Count: 2 | +| Next() Called Count: 1 | +| Estimated Memory Size: : 131072 | +| | +|FRAGMENT-INSTANCE[Id: 20241127_090849_00009_1.3.0][IP: 0.0.0.0][DataRegion: 1][State: FINISHED]| +| Total Wall Time: 13 ms | +| Cost of initDataQuerySource: 5.725 ms | +| Seq File(unclosed): 1, Seq File(closed): 0 | +| UnSeq File(unclosed): 0, UnSeq File(closed): 0 | +| ready queued time: 0.118 ms, blocked queued time: 5.844 ms | +| Query Statistics: | +| loadBloomFilterFromCacheCount: 0 | +| loadBloomFilterFromDiskCount: 0 | +| loadBloomFilterActualIOSize: 0 | +| loadBloomFilterTime: 0.000 | +| loadTimeSeriesMetadataAlignedMemSeqCount: 1 | +| loadTimeSeriesMetadataAlignedMemSeqTime: 0.004 | +| loadTimeSeriesMetadataFromCacheCount: 0 | +| loadTimeSeriesMetadataFromDiskCount: 0 | +| loadTimeSeriesMetadataActualIOSize: 0 | +| constructAlignedChunkReadersMemCount: 1 | +| constructAlignedChunkReadersMemTime: 0.001 | +| loadChunkFromCacheCount: 0 | +| loadChunkFromDiskCount: 0 | +| loadChunkActualIOSize: 0 | +| pageReadersDecodeAlignedMemCount: 1 | +| pageReadersDecodeAlignedMemTime: 0.007 | +| [PlanNodeId 42]: IdentitySinkNode(IdentitySinkOperator) | +| CPU Time: 0.270 ms | +| output: 1 rows | +| HasNext() Called Count: 3 | +| Next() Called Count: 2 | +| Estimated Memory Size: : 327680 | +| [PlanNodeId 30]: TableScanNode(TableScanOperator) | +| CPU Time: 0.250 ms | +| output: 1 rows | +| HasNext() Called Count: 3 | +| Next() Called Count: 2 | +| Estimated Memory Size: : 327680 | +| DeviceNumber: 1 | +| CurrentDeviceIndex: 0 | ++-----------------------------------------------------------------------------------------------+ +``` diff --git a/src/UserGuide/latest-Table/SQL-Manual/SQL-Metadata-Operations.md b/src/UserGuide/latest-Table/SQL-Manual/SQL-Metadata-Operations.md new file mode 100644 index 000000000..c09789283 --- /dev/null +++ b/src/UserGuide/latest-Table/SQL-Manual/SQL-Metadata-Operations.md @@ -0,0 +1,304 @@ + + +# Metadata Operations + +## 1. Database Management + +### 1.1 Create Database + +**Syntax:** + +```SQL +CREATE DATABASE (IF NOT EXISTS)? (WITH properties)? +``` + +[Detailed syntax reference](../Basic-Concept/Database-Management.md#_1-1-create-a-database) + +**Examples:** + +```SQL +CREATE DATABASE database1; +CREATE DATABASE IF NOT EXISTS database1; + +-- Create database with 1-year TTL +CREATE DATABASE IF NOT EXISTS database1 with(TTL=31536000000); +``` + +### 1.2 Use Database + +**Syntax:** + +```SQL +USE +``` + +**Examples:** + +```SQL +USE database1 +``` + +### 1.3 View Current Database + +**Syntax:** + +```SQL +SHOW CURRENT_DATABASE +``` + +**Examples:** + +```SQL +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| null| ++---------------+ + +IoTDB> USE test; + +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| iot_database| ++---------------+ +``` + +### 1.4 List All Databases + +**Syntax:** + +```SQL +SHOW DATABASES (DETAILS)? +``` + +[Detailed syntax reference](../Basic-Concept/Database-Management.md#_1-4-view-all-databases) + +**Examples:** + +```SQL +IoTDB> show databases ++---------+-------+-----------------------+---------------------+---------------------+ +| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval| ++---------+-------+-----------------------+---------------------+---------------------+ +|test_prop| 300| 3| 2| 100000| +| test2| 300| 3| 2| 604800000| ++---------+-------+-----------------------+---------------------+---------------------+ +IoTDB> show databases details ++---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+ +| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|SchemaRegionGroupNum| DataRegionGroupNum| ++---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+ +|test_prop| 300| 3| 2| 100000| 1| 2| +| test2| 300| 3| 2| 604800000| 1| 2| ++---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+ +``` + +### 1.5 Modify Database + +**Syntax:** + +```SQL +ALTER DATABASE (IF EXISTS)? database=identifier SET PROPERTIES propertyAssignments +``` + +**Examples:** + +```SQL +ALTER DATABASE database1 SET PROPERTIES TTL=31536000000; +``` + +### 1.6 Drop Database + +**Syntax:** + +```SQL +DROP DATABASE (IF EXISTS)? +``` + +**Examples:** + +```SQL +DROP DATABASE IF EXISTS database1 +``` + +## 2. Table Management + +### 2.1 Create Table + +**Syntax:** + +```SQL +createTableStatement + : CREATE TABLE (IF NOT EXISTS)? qualifiedName + '(' (columnDefinition (',' columnDefinition)*)? ')' + charsetDesc? + comment? + (WITH properties)? + ; + +charsetDesc + : DEFAULT? (CHAR SET | CHARSET | CHARACTER SET) EQ? identifierOrString + ; + +columnDefinition + : identifier columnCategory=(TAG | ATTRIBUTE | TIME) charsetName? comment? + | identifier type (columnCategory=(TAG | ATTRIBUTE | TIME | FIELD))? charsetName? comment? + ; + +charsetName + : CHAR SET identifier + | CHARSET identifier + | CHARACTER SET identifier + ; + +comment + : COMMENT string + ; +``` + +[Detailed syntax reference](../Basic-Concept/Table-Management.md#_1-1-create-a-table) + +**Examples:** + +```SQL +CREATE TABLE table1 ( + time TIMESTAMP TIME, + region STRING TAG, + plant_id STRING TAG, + device_id STRING TAG, + model_id STRING ATTRIBUTE, + maintenance STRING ATTRIBUTE COMMENT 'maintenance', + temperature FLOAT FIELD COMMENT 'temperature', + humidity FLOAT FIELD COMMENT 'humidity', + status BOOLEAN FIELD COMMENT 'status', + arrival_time TIMESTAMP FIELD COMMENT 'arrival_time' +) COMMENT 'table1' WITH (TTL=31536000000); + +CREATE TABLE IF NOT EXISTS table2 (); + +CREATE TABLE tableC ( + "plant" STRING TAG, + "temperature" INT32 FIELD COMMENT 'temperature' +) WITH (TTL=DEFAULT); +``` + +### 2.2 List Tables + +**Syntax:** + +```SQL +SHOW TABLES (DETAILS)? ((FROM | IN) database_name)? +``` + +**Examples:** + +```SQL +IoTDB> show tables from test_db ++---------+-------+-------+ +|TableName|TTL(ms)|Comment| ++---------+-------+-------+ +| test| INF| TEST| ++---------+-------+-------+ + +IoTDB> show tables details from test_db ++---------+-------+----------+-------+ +|TableName|TTL(ms)| Status|Comment| ++---------+-------+----------+-------+ +| test| INF| USING| TEST| +| turbine| INF|PRE_CREATE| null| +| car| 1000|PRE_DELETE| null| ++---------+-------+----------+-------+ +``` + +### 2.3 Describe Table Columns + +**Syntax:** + +```SQL +(DESC | DESCRIBE) (DETAILS)? +``` + +**Examples:** + +```SQL +IoTDB> desc tableB ++----------+---------+-----------+-------+ +|ColumnName| DataType| Category|Comment| ++----------+---------+-----------+-------+ +| time|TIMESTAMP| TIME| null| +| a| STRING| TAG| a| +| b| STRING| ATTRIBUTE| b| +| c| INT32| FIELD| c| ++----------+---------+-----------+-------+ + +IoTDB> desc tableB details ++----------+---------+-----------+----------+-------+ +|ColumnName| DataType| Category| Status|Comment| ++----------+---------+-----------+----------+-------+ +| time|TIMESTAMP| TIME| USING| null| +| a| STRING| TAG| USING| a| +| b| STRING| ATTRIBUTE| USING| b| +| c| INT32| FIELD| USING| c| +| d| INT32| FIELD|PRE_DELETE| d| ++----------+---------+-----------+----------+-------+ +``` + +### 2.4 Modify Table + +**Syntax:** + +```SQL +ALTER TABLE (IF EXISTS)? tableName=qualifiedName ADD COLUMN (IF NOT EXISTS)? column=columnDefinition COMMENT 'column_comment' #addColumn +| ALTER TABLE (IF EXISTS)? tableName=qualifiedName DROP COLUMN (IF EXISTS)? column=identifier #dropColumn +// set TTL can use this +| ALTER TABLE (IF EXISTS)? tableName=qualifiedName SET PROPERTIES propertyAssignments #setTableProperties +| COMMENT ON TABLE tableName=qualifiedName IS 'table_comment' +| COMMENT ON COLUMN tableName.column IS 'column_comment' +``` + +**Examples:** + +```SQL +ALTER TABLE tableB ADD COLUMN IF NOT EXISTS a TAG COMMENT 'a' +ALTER TABLE tableB set properties TTL=3600 +COMMENT ON TABLE table1 IS 'table1' +COMMENT ON COLUMN table1.a IS null +``` + +### 2.5 Drop Table + +**Syntax:** + +```SQL +DROP TABLE (IF EXISTS)? +``` + +**Examples:** + +```SQL +DROP TABLE tableA +DROP TABLE test.tableB +``` + + diff --git a/src/zh/UserGuide/Master/Table/SQL-Manual/SQL-Data-Addition-Deletion.md b/src/zh/UserGuide/Master/Table/SQL-Manual/SQL-Data-Addition-Deletion.md new file mode 100644 index 000000000..0493da392 --- /dev/null +++ b/src/zh/UserGuide/Master/Table/SQL-Manual/SQL-Data-Addition-Deletion.md @@ -0,0 +1,158 @@ + + +# 数据增删 + +## 1. 数据写入 + +**语法:** + +```SQL +INSERT INTO [(COLUMN_NAME[, COLUMN_NAME]*)]? VALUES (COLUMN_VALUE[, COLUMN_VALUE]*) +``` + +更多详细语法说明请参考:[写入语法](../Basic-Concept/Write-Updata-Data.md#_1-1-语法) + +**示例一:指定列写入** + +```SQL +insert into table1("地区", "厂号", "设备号", Time, "温度", "排量") values ('湖南', '3001', '3', 4, 90.0, 1200.0) + +insert into table1("地区", "厂号", "设备号", Time, "温度") values ('湖南, '3001', '3', 5, 90.0) +``` + +**示例二:空值写入** + +```SQL +-- 上述部分列写入等价于如下的带空值写入 +insert into table1("地区", "厂号", "设备号", "型号", "维修周期", Time, "温度", "排量") values ('湖南', '3001', '3', null, null, 4, 90.0, 1200.0) + +insert into table1("地区", "厂号", "设备号", "型号", "维修周期", Time, "温度", "排量") values ('湖南', '3001', '3', null, null, 5, 90.0, null) +``` + +**示例三:多行写入** + +```SQL +insert into table1 +values +('北京', '3001', '3', '1', '10', 4, 90.0, 1200.0), +('北京', '3001', '3', '1', '10', 5, 90.0, 1200.0); + +insert into table1 +("地区", "厂号", "设备号", Time, "温度", "排量") +values +('北京', '3001', '3', 4, 90.0, 1200.0), +('北京', '3001', '3', 5, 90.0, 1200.0); +``` + +## 2. 数据更新 + +**语法:** + +```SQL +UPDATE SET updateAssignment (',' updateAssignment)* (WHERE where=booleanExpression)? + +updateAssignment + : identifier EQ expression + ; +``` + +更多详细语法说明请参考:[更新语法](../Basic-Concept/Write-Updata-Data.md#_2-1-语法) + +**示例:** + +```SQL +update table1 set b = a where substring(a, 1, 1) like '%' +``` + +## 3. 数据删除 + +**语法:** + +```SQL +DELETE FROM [WHERE_CLAUSE]? + +WHERE_CLAUSE: + WHERE DELETE_CONDITION + +DELETE_CONDITION: + SINGLE_CONDITION + | DELETE_CONDITION AND DELETE_CONDITION + | DELETE_CONDITION OR DELETE_CONDITION + +SINGLE_CODITION: + TIME_CONDITION | ID_CONDITION + +TIME_CONDITION: + time TIME_OPERATOR LONG_LITERAL + +TIME_OPERATOR: + < | > | <= | >= | = + +ID_CONDITION: + identifier = STRING_LITERAL +``` + +**示例一: 删除全表数据** + +```SQL +-- 全表删除 +DELETE FROM table1 +``` + +**示例二:删除一段时间范围内的数据** + +```SQL +-- 单时间段数据删除 +DELETE FROM table1 WHERE time <= 2024-11-29 00:00:00 + +-- 多时间段数据删除 +DELETE FROM table1 WHERE time >= 2024-11-27 00:00:00 and time <= 2024-11-29 00:00:00 +``` + +**示例三:删除指定设备的数据** + +```SQL +-- 删除指定设备的数据 +DELETE FROM table1 WHERE device_id='101' and model_id = 'B' + +-- 删除指定设备及时间段的数据 +DELETE FROM table1 + WHERE time >= 2024-11-27 16:39:00 and time <= 2024-11-29 16:42:00 + AND device_id='101' and model_id = 'B' + +-- 删除指定类型设备的数据 +DELETE FROM table1 WHERE model_id = 'B' +``` + +## 4. 设备删除 + +**语法:** + +```SQL +DELETE DEVICES FROM tableName=qualifiedName (WHERE booleanExpression)? +``` + +**示例:删除指定设备及其相关的所有数据** + +```SQL +DELETE DEVICES FROM table1 WHERE device_id = '101' +``` diff --git a/src/zh/UserGuide/Master/Table/SQL-Manual/SQL-Maintenance-Statements.md b/src/zh/UserGuide/Master/Table/SQL-Manual/SQL-Maintenance-Statements.md new file mode 100644 index 000000000..b931d0c55 --- /dev/null +++ b/src/zh/UserGuide/Master/Table/SQL-Manual/SQL-Maintenance-Statements.md @@ -0,0 +1,590 @@ + + +# 运维语句 + +## 1. 状态查看 + +### 1.1 查看当前的树/表模型 + +**语法:** + +```SQL +showCurrentSqlDialectStatement + : SHOW CURRENT_SQL_DIALECT + ; +``` + +**示例:** + +```SQL +IoTDB> SHOW CURRENT_SQL_DIALECT ++-----------------+ +|CurrentSqlDialect| ++-----------------+ +| TABLE| ++-----------------+ +``` + +### 1.2 查看登录的用户名 + +**语法:** + +```SQL +showCurrentUserStatement + : SHOW CURRENT_USER + ; +``` + +**示例:** + +```SQL +IoTDB> SHOW CURRENT_USER ++-----------+ +|CurrentUser| ++-----------+ +| root| ++-----------+ +``` + +### 1.3 查看连接的数据库名 + +**语法:** + +```SQL +showCurrentDatabaseStatement + : SHOW CURRENT_DATABASE + ; +``` + +**示例:** + +```SQL +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| null| ++---------------+ + +IoTDB> USE test; + +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| test| ++---------------+ +``` + +### 1.4 查看集群版本 + +**语法:** + +```SQL +showVersionStatement + : SHOW VERSION + ; +``` + +**示例:** + +```SQL +IoTDB> SHOW VERSION ++-------+---------+ +|Version|BuildInfo| ++-------+---------+ +|2.0.1.2| 1ca4008| ++-------+---------+ +``` + +### 1.5 查看集群关键参数 + +**语法:** + +```SQL +showVariablesStatement + : SHOW VARIABLES + ; +``` + +**示例:** + +```SQL +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 + +**语法:** + +```SQL +showClusterIdStatement + : SHOW (CLUSTERID | CLUSTER_ID) + ; +``` + +**示例:** + +```SQL +IoTDB> SHOW CLUSTER_ID ++------------------------------------+ +| ClusterId| ++------------------------------------+ +|40163007-9ec1-4455-aa36-8055d740fcda| +``` + +### 1.7 查看服务器的时间 + +查看客户端直连的 DataNode 进程所在的服务器的时间 + +**语法:** + +```SQL +showCurrentTimestampStatement + : SHOW CURRENT_TIMESTAMP + ; +``` + +**示例:** + +```SQL +IoTDB> SHOW CURRENT_TIMESTAMP ++-----------------------------+ +| CurrentTimestamp| ++-----------------------------+ +|2025-02-17T11:11:52.987+08:00| ++-----------------------------+ +``` + +## 2. 状态设置 + +### 2.1 设置连接的树/表模型 + +**语法:** + +```SQL +SET SQL_DIALECT EQ (TABLE | TREE) +``` + +**示例:** + +```SQL +IoTDB> SET SQL_DIALECT=TABLE +IoTDB> SHOW CURRENT_SQL_DIALECT ++-----------------+ +|CurrentSqlDialect| ++-----------------+ +| TABLE| ++-----------------+ +``` + +### 2.2 更新配置项 + +**语法:** + +```SQL +setConfigurationStatement + : SET CONFIGURATION propertyAssignments (ON INTEGER_VALUE)? + ; + +propertyAssignments + : property (',' property)* + ; + +property + : identifier EQ propertyValue + ; + +propertyValue + : DEFAULT + | expression + ; +``` + +**示例:** + +```SQL +IoTDB> SET CONFIGURATION a='1',b='1' ON 1; +``` + +### 2.3 读取手动修改的配置文件 + +**语法:** + +```SQL +loadConfigurationStatement + : LOAD CONFIGURATION localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**示例:** + +```SQL +IoTDB> LOAD CONFIGURATION ON LOCAL; +``` + +### 2.4 设置系统的状态 + +**语法:** + +```SQL +setSystemStatusStatement + : SET SYSTEM TO (READONLY | RUNNING) localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**示例:** + +```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)) + ; +``` + +**示例:** + +```SQL +IoTDB> FLUSH test_db TRUE ON LOCAL; +``` + +### 3.2 清除 DataNode 上的缓存 + +**语法:** + +```SQL +clearCacheStatement + : CLEAR clearCacheOptions? CACHE localOrClusterMode? + ; + +clearCacheOptions + : ATTRIBUTE + | QUERY + | ALL + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**示例:** + +```SQL +IoTDB> CLEAR ALL CACHE ON LOCAL; +``` + +## 4. 数据修复 + +### 4.1 启动后台扫描并修复 tsfile 任务 + +**语法:** + +```SQL +startRepairDataStatement + : START REPAIR DATA localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**示例:** + +```SQL +IoTDB> START REPAIR DATA ON CLUSTER; +``` + +### 4.2 暂停后台修复 tsfile 任务 + +**语法:** + +```SQL +stopRepairDataStatement + : STOP REPAIR DATA localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**示例:** + +```SQL +IoTDB> STOP REPAIR DATA ON CLUSTER; +``` + +## 5. 查询相关 + +### 5.1 查看正在执行的查询 + +**语法:** + +```SQL +showQueriesStatement + : SHOW (QUERIES | QUERY PROCESSLIST) + (WHERE where=booleanExpression)? + (ORDER BY sortItem (',' sortItem)*)? + limitOffsetClause + ; +``` + +**示例:** + +```SQL +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| ++-----------------------+-----------------------------+-----------+------------+------------+----+ +``` + +### 5.2 主动终止查询 + +**语法:** + +```SQL +killQueryStatement + : KILL (QUERY queryId=string | ALL QUERIES) + ; +``` + +**示例:** + +```SQL +IoTDB> KILL QUERY 20250108_101015_00000_1; -- 终止指定query +IoTDB> KILL ALL QUERIES; -- 终止所有query +``` + +### 5.3 查询性能分析 + +#### 5.3.1 查看执行计划 + +**语法:** + +```SQL +EXPLAIN +``` + +更多详细语法说明请参考:[EXPLAIN 语句](../User-Manual/Query-Performance-Analysis.md#_1-explain-语句) + +**示例:** + +```SQL +IoTDB> explain select * from t1 ++-----------------------------------------------------------------------------------------------+ +| distribution plan| ++-----------------------------------------------------------------------------------------------+ +| ┌─────────────────────────────────────────────┐ | +| │OutputNode-4 │ | +| │OutputColumns-[time, device_id, type, speed] │ | +| │OutputSymbols: [time, device_id, type, speed]│ | +| └─────────────────────────────────────────────┘ | +| │ | +| │ | +| ┌─────────────────────────────────────────────┐ | +| │Collect-21 │ | +| │OutputSymbols: [time, device_id, type, speed]│ | +| └─────────────────────────────────────────────┘ | +| ┌───────────────────────┴───────────────────────┐ | +| │ │ | +|┌─────────────────────────────────────────────┐ ┌───────────┐ | +|│TableScan-19 │ │Exchange-28│ | +|│QualifiedTableName: test.t1 │ └───────────┘ | +|│OutputSymbols: [time, device_id, type, speed]│ │ | +|│DeviceNumber: 1 │ │ | +|│ScanOrder: ASC │ ┌─────────────────────────────────────────────┐| +|│PushDownOffset: 0 │ │TableScan-20 │| +|│PushDownLimit: 0 │ │QualifiedTableName: test.t1 │| +|│PushDownLimitToEachDevice: false │ │OutputSymbols: [time, device_id, type, speed]│| +|│RegionId: 2 │ │DeviceNumber: 1 │| +|└─────────────────────────────────────────────┘ │ScanOrder: ASC │| +| │PushDownOffset: 0 │| +| │PushDownLimit: 0 │| +| │PushDownLimitToEachDevice: false │| +| │RegionId: 1 │| +| └─────────────────────────────────────────────┘| ++-----------------------------------------------------------------------------------------------+ +``` + +#### 5.3.2 查询性能分析 + +**语法:** + +```SQL +EXPLAIN ANALYZE [VERBOSE] +``` + +更多详细语法说明请参考:[EXPLAIN ANALYZE 语句](../User-Manual/Query-Performance-Analysis.md#_2-explain-analyze-语句) + +**示例:** + +```SQL +IoTDB> explain analyze verbose select * from t1 ++-----------------------------------------------------------------------------------------------+ +| Explain Analyze| ++-----------------------------------------------------------------------------------------------+ +|Analyze Cost: 38.860 ms | +|Fetch Partition Cost: 9.888 ms | +|Fetch Schema Cost: 54.046 ms | +|Logical Plan Cost: 10.102 ms | +|Logical Optimization Cost: 17.396 ms | +|Distribution Plan Cost: 2.508 ms | +|Dispatch Cost: 22.126 ms | +|Fragment Instances Count: 2 | +| | +|FRAGMENT-INSTANCE[Id: 20241127_090849_00009_1.2.0][IP: 0.0.0.0][DataRegion: 2][State: FINISHED]| +| Total Wall Time: 18 ms | +| Cost of initDataQuerySource: 6.153 ms | +| Seq File(unclosed): 1, Seq File(closed): 0 | +| UnSeq File(unclosed): 0, UnSeq File(closed): 0 | +| ready queued time: 0.164 ms, blocked queued time: 0.342 ms | +| Query Statistics: | +| loadBloomFilterFromCacheCount: 0 | +| loadBloomFilterFromDiskCount: 0 | +| loadBloomFilterActualIOSize: 0 | +| loadBloomFilterTime: 0.000 | +| loadTimeSeriesMetadataAlignedMemSeqCount: 1 | +| loadTimeSeriesMetadataAlignedMemSeqTime: 0.246 | +| loadTimeSeriesMetadataFromCacheCount: 0 | +| loadTimeSeriesMetadataFromDiskCount: 0 | +| loadTimeSeriesMetadataActualIOSize: 0 | +| constructAlignedChunkReadersMemCount: 1 | +| constructAlignedChunkReadersMemTime: 0.294 | +| loadChunkFromCacheCount: 0 | +| loadChunkFromDiskCount: 0 | +| loadChunkActualIOSize: 0 | +| pageReadersDecodeAlignedMemCount: 1 | +| pageReadersDecodeAlignedMemTime: 0.047 | +| [PlanNodeId 43]: IdentitySinkNode(IdentitySinkOperator) | +| CPU Time: 5.523 ms | +| output: 2 rows | +| HasNext() Called Count: 6 | +| Next() Called Count: 5 | +| Estimated Memory Size: : 327680 | +| [PlanNodeId 31]: CollectNode(CollectOperator) | +| CPU Time: 5.512 ms | +| output: 2 rows | +| HasNext() Called Count: 6 | +| Next() Called Count: 5 | +| Estimated Memory Size: : 327680 | +| [PlanNodeId 29]: TableScanNode(TableScanOperator) | +| CPU Time: 5.439 ms | +| output: 1 rows | +| HasNext() Called Count: 3 +| Next() Called Count: 2 | +| Estimated Memory Size: : 327680 | +| DeviceNumber: 1 | +| CurrentDeviceIndex: 0 | +| [PlanNodeId 40]: ExchangeNode(ExchangeOperator) | +| CPU Time: 0.053 ms | +| output: 1 rows | +| HasNext() Called Count: 2 | +| Next() Called Count: 1 | +| Estimated Memory Size: : 131072 | +| | +|FRAGMENT-INSTANCE[Id: 20241127_090849_00009_1.3.0][IP: 0.0.0.0][DataRegion: 1][State: FINISHED]| +| Total Wall Time: 13 ms | +| Cost of initDataQuerySource: 5.725 ms | +| Seq File(unclosed): 1, Seq File(closed): 0 | +| UnSeq File(unclosed): 0, UnSeq File(closed): 0 | +| ready queued time: 0.118 ms, blocked queued time: 5.844 ms | +| Query Statistics: | +| loadBloomFilterFromCacheCount: 0 | +| loadBloomFilterFromDiskCount: 0 | +| loadBloomFilterActualIOSize: 0 | +| loadBloomFilterTime: 0.000 | +| loadTimeSeriesMetadataAlignedMemSeqCount: 1 | +| loadTimeSeriesMetadataAlignedMemSeqTime: 0.004 | +| loadTimeSeriesMetadataFromCacheCount: 0 | +| loadTimeSeriesMetadataFromDiskCount: 0 | +| loadTimeSeriesMetadataActualIOSize: 0 | +| constructAlignedChunkReadersMemCount: 1 | +| constructAlignedChunkReadersMemTime: 0.001 | +| loadChunkFromCacheCount: 0 | +| loadChunkFromDiskCount: 0 | +| loadChunkActualIOSize: 0 | +| pageReadersDecodeAlignedMemCount: 1 | +| pageReadersDecodeAlignedMemTime: 0.007 | +| [PlanNodeId 42]: IdentitySinkNode(IdentitySinkOperator) | +| CPU Time: 0.270 ms | +| output: 1 rows | +| HasNext() Called Count: 3 | +| Next() Called Count: 2 | +| Estimated Memory Size: : 327680 | +| [PlanNodeId 30]: TableScanNode(TableScanOperator) | +| CPU Time: 0.250 ms | +| output: 1 rows | +| HasNext() Called Count: 3 | +| Next() Called Count: 2 | +| Estimated Memory Size: : 327680 | +| DeviceNumber: 1 | +| CurrentDeviceIndex: 0 | ++-----------------------------------------------------------------------------------------------+ +``` diff --git a/src/zh/UserGuide/Master/Table/SQL-Manual/SQL-Metadata-Operations.md b/src/zh/UserGuide/Master/Table/SQL-Manual/SQL-Metadata-Operations.md new file mode 100644 index 000000000..1831e8557 --- /dev/null +++ b/src/zh/UserGuide/Master/Table/SQL-Manual/SQL-Metadata-Operations.md @@ -0,0 +1,304 @@ + + +# 元数据操作 + +## 1. 数据库管理 + +### 1.1 创建数据库 + +**语法:** + +```SQL +CREATE DATABASE (IF NOT EXISTS)? (WITH properties)? +``` + +更多详细语法说明请参考:[创建数据库](../Basic-Concept/Database-Management.md#_1-1-创建数据库) + +**示例:** + +```SQL +CREATE DATABASE database1; +CREATE DATABASE IF NOT EXISTS database1; + +-- 创建一个名为 database1 的数据库,并将数据库的TTL时间设置为1年。 +CREATE DATABASE IF NOT EXISTS database1 with(TTL=31536000000); +``` + +### 1.2 使用数据库 + +**语法:** + +```SQL +USE +``` + +**示例:** + +```SQL +USE database1 +``` + +### 1.3 查看当前数据库 + +**语法:** + +```SQL +SHOW CURRENT_DATABASE +``` + +**示例:** + +```SQL +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| null| ++---------------+ + +IoTDB> USE test; + +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| iot_database| ++---------------+ +``` + +### 1.4 查看所有数据库 + +**语法:** + +```SQL +SHOW DATABASES (DETAILS)? +``` + +更多返回结果详细说明请参考:[查看所有数据库](../Basic-Concept/Database-Management.md#_1-4-查看所有数据库) + +**示例:** + +```SQL +IoTDB> show databases ++---------+-------+-----------------------+---------------------+---------------------+ +| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval| ++---------+-------+-----------------------+---------------------+---------------------+ +|test_prop| 300| 3| 2| 100000| +| test2| 300| 3| 2| 604800000| ++---------+-------+-----------------------+---------------------+---------------------+ +IoTDB> show databases details ++---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+ +| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|SchemaRegionGroupNum| DataRegionGroupNum| ++---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+ +|test_prop| 300| 3| 2| 100000| 1| 2| +| test2| 300| 3| 2| 604800000| 1| 2| ++---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+ +``` + +### 1.5 修改数据库 + +**语法:** + +```SQL +ALTER DATABASE (IF EXISTS)? database=identifier SET PROPERTIES propertyAssignments +``` + +**示例:** + +```SQL +ALTER DATABASE database1 SET PROPERTIES TTL=31536000000; +``` + +### 1.6 删除数据库 + +**语法:** + +```SQL +DROP DATABASE (IF EXISTS)? +``` + +**示例:** + +```SQL +DROP DATABASE IF EXISTS database1 +``` + +## 2. 表管理 + +### 2.1 创建表 + +**语法:** + +```SQL +createTableStatement + : CREATE TABLE (IF NOT EXISTS)? qualifiedName + '(' (columnDefinition (',' columnDefinition)*)? ')' + charsetDesc? + comment? + (WITH properties)? + ; + +charsetDesc + : DEFAULT? (CHAR SET | CHARSET | CHARACTER SET) EQ? identifierOrString + ; + +columnDefinition + : identifier columnCategory=(TAG | ATTRIBUTE | TIME) charsetName? comment? + | identifier type (columnCategory=(TAG | ATTRIBUTE | TIME | FIELD))? charsetName? comment? + ; + +charsetName + : CHAR SET identifier + | CHARSET identifier + | CHARACTER SET identifier + ; + +comment + : COMMENT string + ; +``` + +更多详细语法说明请参考:[创建表](../Basic-Concept/Table-Management.md#_1-1-创建表) + +**示例:** + +```SQL +CREATE TABLE table1 ( + time TIMESTAMP TIME, + region STRING TAG, + plant_id STRING TAG, + device_id STRING TAG, + model_id STRING ATTRIBUTE, + maintenance STRING ATTRIBUTE COMMENT 'maintenance', + temperature FLOAT FIELD COMMENT 'temperature', + humidity FLOAT FIELD COMMENT 'humidity', + status Boolean FIELD COMMENT 'status', + arrival_time TIMESTAMP FIELD COMMENT 'arrival_time' +) COMMENT 'table1' WITH (TTL=31536000000); + +CREATE TABLE if not exists table2 (); + +CREATE TABLE tableC ( + "场站" STRING TAG, + "温度" int32 FIELD COMMENT 'temperature' + ) with (TTL=DEFAULT); +``` + +### 2.2 查看表 + +**语法:** + +```SQL +SHOW TABLES (DETAILS)? ((FROM | IN) database_name)? +``` + +**示例:** + +```SQL +IoTDB> show tables from test_db ++---------+-------+-------+ +|TableName|TTL(ms)|Comment| ++---------+-------+-------+ +| test| INF| TEST| ++---------+-------+-------+ + +IoTDB> show tables details from test_db ++---------+-------+----------+-------+ +|TableName|TTL(ms)| Status|Comment| ++---------+-------+----------+-------+ +| test| INF| USING| TEST| +| turbine| INF|PRE_CREATE| null| +| car| 1000|PRE_DELETE| null| ++---------+-------+----------+-------+ +``` + +### 2.3 查看表的列 + +**语法:** + +```SQL +(DESC | DESCRIBE) (DETAILS)? +``` + +**示例:** + +```SQL +IoTDB> desc tableB ++----------+---------+-----------+-------+ +|ColumnName| DataType| Category|Comment| ++----------+---------+-----------+-------+ +| time|TIMESTAMP| TIME| null| +| a| STRING| TAG| a| +| b| STRING| ATTRIBUTE| b| +| c| INT32| FIELD| c| ++----------+---------+-----------+-------+ + +IoTDB> desc tableB details ++----------+---------+-----------+----------+-------+ +|ColumnName| DataType| Category| Status|Comment| ++----------+---------+-----------+----------+-------+ +| time|TIMESTAMP| TIME| USING| null| +| a| STRING| TAG| USING| a| +| b| STRING| ATTRIBUTE| USING| b| +| c| INT32| FIELD| USING| c| +| d| INT32| FIELD|PRE_DELETE| d| ++----------+---------+-----------+----------+-------+ +``` + +### 2.4 修改表 + +**语法:** + +```SQL +ALTER TABLE (IF EXISTS)? tableName=qualifiedName ADD COLUMN (IF NOT EXISTS)? column=columnDefinition COMMENT 'column_comment' #addColumn +| ALTER TABLE (IF EXISTS)? tableName=qualifiedName DROP COLUMN (IF EXISTS)? column=identifier #dropColumn +// set TTL can use this +| ALTER TABLE (IF EXISTS)? tableName=qualifiedName SET PROPERTIES propertyAssignments #setTableProperties +| COMMENT ON TABLE tableName=qualifiedName IS 'table_comment' +| COMMENT ON COLUMN tableName.column IS 'column_comment' +``` + +**示例:** + +```SQL +ALTER TABLE tableB ADD COLUMN IF NOT EXISTS a TAG COMMENT 'a' +ALTER TABLE tableB set properties TTL=3600 +COMMENT ON TABLE table1 IS 'table1' +COMMENT ON COLUMN table1.a IS null +``` + +### 2.5 删除表 + +**语法:** + +```SQL +DROP TABLE (IF EXISTS)? +``` + +**示例:** + +```SQL +DROP TABLE tableA +DROP TABLE test.tableB +``` + + diff --git a/src/zh/UserGuide/latest-Table/SQL-Manual/SQL-Data-Addition-Deletion.md b/src/zh/UserGuide/latest-Table/SQL-Manual/SQL-Data-Addition-Deletion.md new file mode 100644 index 000000000..0493da392 --- /dev/null +++ b/src/zh/UserGuide/latest-Table/SQL-Manual/SQL-Data-Addition-Deletion.md @@ -0,0 +1,158 @@ + + +# 数据增删 + +## 1. 数据写入 + +**语法:** + +```SQL +INSERT INTO [(COLUMN_NAME[, COLUMN_NAME]*)]? VALUES (COLUMN_VALUE[, COLUMN_VALUE]*) +``` + +更多详细语法说明请参考:[写入语法](../Basic-Concept/Write-Updata-Data.md#_1-1-语法) + +**示例一:指定列写入** + +```SQL +insert into table1("地区", "厂号", "设备号", Time, "温度", "排量") values ('湖南', '3001', '3', 4, 90.0, 1200.0) + +insert into table1("地区", "厂号", "设备号", Time, "温度") values ('湖南, '3001', '3', 5, 90.0) +``` + +**示例二:空值写入** + +```SQL +-- 上述部分列写入等价于如下的带空值写入 +insert into table1("地区", "厂号", "设备号", "型号", "维修周期", Time, "温度", "排量") values ('湖南', '3001', '3', null, null, 4, 90.0, 1200.0) + +insert into table1("地区", "厂号", "设备号", "型号", "维修周期", Time, "温度", "排量") values ('湖南', '3001', '3', null, null, 5, 90.0, null) +``` + +**示例三:多行写入** + +```SQL +insert into table1 +values +('北京', '3001', '3', '1', '10', 4, 90.0, 1200.0), +('北京', '3001', '3', '1', '10', 5, 90.0, 1200.0); + +insert into table1 +("地区", "厂号", "设备号", Time, "温度", "排量") +values +('北京', '3001', '3', 4, 90.0, 1200.0), +('北京', '3001', '3', 5, 90.0, 1200.0); +``` + +## 2. 数据更新 + +**语法:** + +```SQL +UPDATE SET updateAssignment (',' updateAssignment)* (WHERE where=booleanExpression)? + +updateAssignment + : identifier EQ expression + ; +``` + +更多详细语法说明请参考:[更新语法](../Basic-Concept/Write-Updata-Data.md#_2-1-语法) + +**示例:** + +```SQL +update table1 set b = a where substring(a, 1, 1) like '%' +``` + +## 3. 数据删除 + +**语法:** + +```SQL +DELETE FROM [WHERE_CLAUSE]? + +WHERE_CLAUSE: + WHERE DELETE_CONDITION + +DELETE_CONDITION: + SINGLE_CONDITION + | DELETE_CONDITION AND DELETE_CONDITION + | DELETE_CONDITION OR DELETE_CONDITION + +SINGLE_CODITION: + TIME_CONDITION | ID_CONDITION + +TIME_CONDITION: + time TIME_OPERATOR LONG_LITERAL + +TIME_OPERATOR: + < | > | <= | >= | = + +ID_CONDITION: + identifier = STRING_LITERAL +``` + +**示例一: 删除全表数据** + +```SQL +-- 全表删除 +DELETE FROM table1 +``` + +**示例二:删除一段时间范围内的数据** + +```SQL +-- 单时间段数据删除 +DELETE FROM table1 WHERE time <= 2024-11-29 00:00:00 + +-- 多时间段数据删除 +DELETE FROM table1 WHERE time >= 2024-11-27 00:00:00 and time <= 2024-11-29 00:00:00 +``` + +**示例三:删除指定设备的数据** + +```SQL +-- 删除指定设备的数据 +DELETE FROM table1 WHERE device_id='101' and model_id = 'B' + +-- 删除指定设备及时间段的数据 +DELETE FROM table1 + WHERE time >= 2024-11-27 16:39:00 and time <= 2024-11-29 16:42:00 + AND device_id='101' and model_id = 'B' + +-- 删除指定类型设备的数据 +DELETE FROM table1 WHERE model_id = 'B' +``` + +## 4. 设备删除 + +**语法:** + +```SQL +DELETE DEVICES FROM tableName=qualifiedName (WHERE booleanExpression)? +``` + +**示例:删除指定设备及其相关的所有数据** + +```SQL +DELETE DEVICES FROM table1 WHERE device_id = '101' +``` diff --git a/src/zh/UserGuide/latest-Table/SQL-Manual/SQL-Maintenance-Statements.md b/src/zh/UserGuide/latest-Table/SQL-Manual/SQL-Maintenance-Statements.md new file mode 100644 index 000000000..b931d0c55 --- /dev/null +++ b/src/zh/UserGuide/latest-Table/SQL-Manual/SQL-Maintenance-Statements.md @@ -0,0 +1,590 @@ + + +# 运维语句 + +## 1. 状态查看 + +### 1.1 查看当前的树/表模型 + +**语法:** + +```SQL +showCurrentSqlDialectStatement + : SHOW CURRENT_SQL_DIALECT + ; +``` + +**示例:** + +```SQL +IoTDB> SHOW CURRENT_SQL_DIALECT ++-----------------+ +|CurrentSqlDialect| ++-----------------+ +| TABLE| ++-----------------+ +``` + +### 1.2 查看登录的用户名 + +**语法:** + +```SQL +showCurrentUserStatement + : SHOW CURRENT_USER + ; +``` + +**示例:** + +```SQL +IoTDB> SHOW CURRENT_USER ++-----------+ +|CurrentUser| ++-----------+ +| root| ++-----------+ +``` + +### 1.3 查看连接的数据库名 + +**语法:** + +```SQL +showCurrentDatabaseStatement + : SHOW CURRENT_DATABASE + ; +``` + +**示例:** + +```SQL +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| null| ++---------------+ + +IoTDB> USE test; + +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| test| ++---------------+ +``` + +### 1.4 查看集群版本 + +**语法:** + +```SQL +showVersionStatement + : SHOW VERSION + ; +``` + +**示例:** + +```SQL +IoTDB> SHOW VERSION ++-------+---------+ +|Version|BuildInfo| ++-------+---------+ +|2.0.1.2| 1ca4008| ++-------+---------+ +``` + +### 1.5 查看集群关键参数 + +**语法:** + +```SQL +showVariablesStatement + : SHOW VARIABLES + ; +``` + +**示例:** + +```SQL +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 + +**语法:** + +```SQL +showClusterIdStatement + : SHOW (CLUSTERID | CLUSTER_ID) + ; +``` + +**示例:** + +```SQL +IoTDB> SHOW CLUSTER_ID ++------------------------------------+ +| ClusterId| ++------------------------------------+ +|40163007-9ec1-4455-aa36-8055d740fcda| +``` + +### 1.7 查看服务器的时间 + +查看客户端直连的 DataNode 进程所在的服务器的时间 + +**语法:** + +```SQL +showCurrentTimestampStatement + : SHOW CURRENT_TIMESTAMP + ; +``` + +**示例:** + +```SQL +IoTDB> SHOW CURRENT_TIMESTAMP ++-----------------------------+ +| CurrentTimestamp| ++-----------------------------+ +|2025-02-17T11:11:52.987+08:00| ++-----------------------------+ +``` + +## 2. 状态设置 + +### 2.1 设置连接的树/表模型 + +**语法:** + +```SQL +SET SQL_DIALECT EQ (TABLE | TREE) +``` + +**示例:** + +```SQL +IoTDB> SET SQL_DIALECT=TABLE +IoTDB> SHOW CURRENT_SQL_DIALECT ++-----------------+ +|CurrentSqlDialect| ++-----------------+ +| TABLE| ++-----------------+ +``` + +### 2.2 更新配置项 + +**语法:** + +```SQL +setConfigurationStatement + : SET CONFIGURATION propertyAssignments (ON INTEGER_VALUE)? + ; + +propertyAssignments + : property (',' property)* + ; + +property + : identifier EQ propertyValue + ; + +propertyValue + : DEFAULT + | expression + ; +``` + +**示例:** + +```SQL +IoTDB> SET CONFIGURATION a='1',b='1' ON 1; +``` + +### 2.3 读取手动修改的配置文件 + +**语法:** + +```SQL +loadConfigurationStatement + : LOAD CONFIGURATION localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**示例:** + +```SQL +IoTDB> LOAD CONFIGURATION ON LOCAL; +``` + +### 2.4 设置系统的状态 + +**语法:** + +```SQL +setSystemStatusStatement + : SET SYSTEM TO (READONLY | RUNNING) localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**示例:** + +```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)) + ; +``` + +**示例:** + +```SQL +IoTDB> FLUSH test_db TRUE ON LOCAL; +``` + +### 3.2 清除 DataNode 上的缓存 + +**语法:** + +```SQL +clearCacheStatement + : CLEAR clearCacheOptions? CACHE localOrClusterMode? + ; + +clearCacheOptions + : ATTRIBUTE + | QUERY + | ALL + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**示例:** + +```SQL +IoTDB> CLEAR ALL CACHE ON LOCAL; +``` + +## 4. 数据修复 + +### 4.1 启动后台扫描并修复 tsfile 任务 + +**语法:** + +```SQL +startRepairDataStatement + : START REPAIR DATA localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**示例:** + +```SQL +IoTDB> START REPAIR DATA ON CLUSTER; +``` + +### 4.2 暂停后台修复 tsfile 任务 + +**语法:** + +```SQL +stopRepairDataStatement + : STOP REPAIR DATA localOrClusterMode? + ; + +localOrClusterMode + : (ON (LOCAL | CLUSTER)) + ; +``` + +**示例:** + +```SQL +IoTDB> STOP REPAIR DATA ON CLUSTER; +``` + +## 5. 查询相关 + +### 5.1 查看正在执行的查询 + +**语法:** + +```SQL +showQueriesStatement + : SHOW (QUERIES | QUERY PROCESSLIST) + (WHERE where=booleanExpression)? + (ORDER BY sortItem (',' sortItem)*)? + limitOffsetClause + ; +``` + +**示例:** + +```SQL +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| ++-----------------------+-----------------------------+-----------+------------+------------+----+ +``` + +### 5.2 主动终止查询 + +**语法:** + +```SQL +killQueryStatement + : KILL (QUERY queryId=string | ALL QUERIES) + ; +``` + +**示例:** + +```SQL +IoTDB> KILL QUERY 20250108_101015_00000_1; -- 终止指定query +IoTDB> KILL ALL QUERIES; -- 终止所有query +``` + +### 5.3 查询性能分析 + +#### 5.3.1 查看执行计划 + +**语法:** + +```SQL +EXPLAIN +``` + +更多详细语法说明请参考:[EXPLAIN 语句](../User-Manual/Query-Performance-Analysis.md#_1-explain-语句) + +**示例:** + +```SQL +IoTDB> explain select * from t1 ++-----------------------------------------------------------------------------------------------+ +| distribution plan| ++-----------------------------------------------------------------------------------------------+ +| ┌─────────────────────────────────────────────┐ | +| │OutputNode-4 │ | +| │OutputColumns-[time, device_id, type, speed] │ | +| │OutputSymbols: [time, device_id, type, speed]│ | +| └─────────────────────────────────────────────┘ | +| │ | +| │ | +| ┌─────────────────────────────────────────────┐ | +| │Collect-21 │ | +| │OutputSymbols: [time, device_id, type, speed]│ | +| └─────────────────────────────────────────────┘ | +| ┌───────────────────────┴───────────────────────┐ | +| │ │ | +|┌─────────────────────────────────────────────┐ ┌───────────┐ | +|│TableScan-19 │ │Exchange-28│ | +|│QualifiedTableName: test.t1 │ └───────────┘ | +|│OutputSymbols: [time, device_id, type, speed]│ │ | +|│DeviceNumber: 1 │ │ | +|│ScanOrder: ASC │ ┌─────────────────────────────────────────────┐| +|│PushDownOffset: 0 │ │TableScan-20 │| +|│PushDownLimit: 0 │ │QualifiedTableName: test.t1 │| +|│PushDownLimitToEachDevice: false │ │OutputSymbols: [time, device_id, type, speed]│| +|│RegionId: 2 │ │DeviceNumber: 1 │| +|└─────────────────────────────────────────────┘ │ScanOrder: ASC │| +| │PushDownOffset: 0 │| +| │PushDownLimit: 0 │| +| │PushDownLimitToEachDevice: false │| +| │RegionId: 1 │| +| └─────────────────────────────────────────────┘| ++-----------------------------------------------------------------------------------------------+ +``` + +#### 5.3.2 查询性能分析 + +**语法:** + +```SQL +EXPLAIN ANALYZE [VERBOSE] +``` + +更多详细语法说明请参考:[EXPLAIN ANALYZE 语句](../User-Manual/Query-Performance-Analysis.md#_2-explain-analyze-语句) + +**示例:** + +```SQL +IoTDB> explain analyze verbose select * from t1 ++-----------------------------------------------------------------------------------------------+ +| Explain Analyze| ++-----------------------------------------------------------------------------------------------+ +|Analyze Cost: 38.860 ms | +|Fetch Partition Cost: 9.888 ms | +|Fetch Schema Cost: 54.046 ms | +|Logical Plan Cost: 10.102 ms | +|Logical Optimization Cost: 17.396 ms | +|Distribution Plan Cost: 2.508 ms | +|Dispatch Cost: 22.126 ms | +|Fragment Instances Count: 2 | +| | +|FRAGMENT-INSTANCE[Id: 20241127_090849_00009_1.2.0][IP: 0.0.0.0][DataRegion: 2][State: FINISHED]| +| Total Wall Time: 18 ms | +| Cost of initDataQuerySource: 6.153 ms | +| Seq File(unclosed): 1, Seq File(closed): 0 | +| UnSeq File(unclosed): 0, UnSeq File(closed): 0 | +| ready queued time: 0.164 ms, blocked queued time: 0.342 ms | +| Query Statistics: | +| loadBloomFilterFromCacheCount: 0 | +| loadBloomFilterFromDiskCount: 0 | +| loadBloomFilterActualIOSize: 0 | +| loadBloomFilterTime: 0.000 | +| loadTimeSeriesMetadataAlignedMemSeqCount: 1 | +| loadTimeSeriesMetadataAlignedMemSeqTime: 0.246 | +| loadTimeSeriesMetadataFromCacheCount: 0 | +| loadTimeSeriesMetadataFromDiskCount: 0 | +| loadTimeSeriesMetadataActualIOSize: 0 | +| constructAlignedChunkReadersMemCount: 1 | +| constructAlignedChunkReadersMemTime: 0.294 | +| loadChunkFromCacheCount: 0 | +| loadChunkFromDiskCount: 0 | +| loadChunkActualIOSize: 0 | +| pageReadersDecodeAlignedMemCount: 1 | +| pageReadersDecodeAlignedMemTime: 0.047 | +| [PlanNodeId 43]: IdentitySinkNode(IdentitySinkOperator) | +| CPU Time: 5.523 ms | +| output: 2 rows | +| HasNext() Called Count: 6 | +| Next() Called Count: 5 | +| Estimated Memory Size: : 327680 | +| [PlanNodeId 31]: CollectNode(CollectOperator) | +| CPU Time: 5.512 ms | +| output: 2 rows | +| HasNext() Called Count: 6 | +| Next() Called Count: 5 | +| Estimated Memory Size: : 327680 | +| [PlanNodeId 29]: TableScanNode(TableScanOperator) | +| CPU Time: 5.439 ms | +| output: 1 rows | +| HasNext() Called Count: 3 +| Next() Called Count: 2 | +| Estimated Memory Size: : 327680 | +| DeviceNumber: 1 | +| CurrentDeviceIndex: 0 | +| [PlanNodeId 40]: ExchangeNode(ExchangeOperator) | +| CPU Time: 0.053 ms | +| output: 1 rows | +| HasNext() Called Count: 2 | +| Next() Called Count: 1 | +| Estimated Memory Size: : 131072 | +| | +|FRAGMENT-INSTANCE[Id: 20241127_090849_00009_1.3.0][IP: 0.0.0.0][DataRegion: 1][State: FINISHED]| +| Total Wall Time: 13 ms | +| Cost of initDataQuerySource: 5.725 ms | +| Seq File(unclosed): 1, Seq File(closed): 0 | +| UnSeq File(unclosed): 0, UnSeq File(closed): 0 | +| ready queued time: 0.118 ms, blocked queued time: 5.844 ms | +| Query Statistics: | +| loadBloomFilterFromCacheCount: 0 | +| loadBloomFilterFromDiskCount: 0 | +| loadBloomFilterActualIOSize: 0 | +| loadBloomFilterTime: 0.000 | +| loadTimeSeriesMetadataAlignedMemSeqCount: 1 | +| loadTimeSeriesMetadataAlignedMemSeqTime: 0.004 | +| loadTimeSeriesMetadataFromCacheCount: 0 | +| loadTimeSeriesMetadataFromDiskCount: 0 | +| loadTimeSeriesMetadataActualIOSize: 0 | +| constructAlignedChunkReadersMemCount: 1 | +| constructAlignedChunkReadersMemTime: 0.001 | +| loadChunkFromCacheCount: 0 | +| loadChunkFromDiskCount: 0 | +| loadChunkActualIOSize: 0 | +| pageReadersDecodeAlignedMemCount: 1 | +| pageReadersDecodeAlignedMemTime: 0.007 | +| [PlanNodeId 42]: IdentitySinkNode(IdentitySinkOperator) | +| CPU Time: 0.270 ms | +| output: 1 rows | +| HasNext() Called Count: 3 | +| Next() Called Count: 2 | +| Estimated Memory Size: : 327680 | +| [PlanNodeId 30]: TableScanNode(TableScanOperator) | +| CPU Time: 0.250 ms | +| output: 1 rows | +| HasNext() Called Count: 3 | +| Next() Called Count: 2 | +| Estimated Memory Size: : 327680 | +| DeviceNumber: 1 | +| CurrentDeviceIndex: 0 | ++-----------------------------------------------------------------------------------------------+ +``` diff --git a/src/zh/UserGuide/latest-Table/SQL-Manual/SQL-Metadata-Operations.md b/src/zh/UserGuide/latest-Table/SQL-Manual/SQL-Metadata-Operations.md new file mode 100644 index 000000000..1831e8557 --- /dev/null +++ b/src/zh/UserGuide/latest-Table/SQL-Manual/SQL-Metadata-Operations.md @@ -0,0 +1,304 @@ + + +# 元数据操作 + +## 1. 数据库管理 + +### 1.1 创建数据库 + +**语法:** + +```SQL +CREATE DATABASE (IF NOT EXISTS)? (WITH properties)? +``` + +更多详细语法说明请参考:[创建数据库](../Basic-Concept/Database-Management.md#_1-1-创建数据库) + +**示例:** + +```SQL +CREATE DATABASE database1; +CREATE DATABASE IF NOT EXISTS database1; + +-- 创建一个名为 database1 的数据库,并将数据库的TTL时间设置为1年。 +CREATE DATABASE IF NOT EXISTS database1 with(TTL=31536000000); +``` + +### 1.2 使用数据库 + +**语法:** + +```SQL +USE +``` + +**示例:** + +```SQL +USE database1 +``` + +### 1.3 查看当前数据库 + +**语法:** + +```SQL +SHOW CURRENT_DATABASE +``` + +**示例:** + +```SQL +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| null| ++---------------+ + +IoTDB> USE test; + +IoTDB> SHOW CURRENT_DATABASE; ++---------------+ +|CurrentDatabase| ++---------------+ +| iot_database| ++---------------+ +``` + +### 1.4 查看所有数据库 + +**语法:** + +```SQL +SHOW DATABASES (DETAILS)? +``` + +更多返回结果详细说明请参考:[查看所有数据库](../Basic-Concept/Database-Management.md#_1-4-查看所有数据库) + +**示例:** + +```SQL +IoTDB> show databases ++---------+-------+-----------------------+---------------------+---------------------+ +| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval| ++---------+-------+-----------------------+---------------------+---------------------+ +|test_prop| 300| 3| 2| 100000| +| test2| 300| 3| 2| 604800000| ++---------+-------+-----------------------+---------------------+---------------------+ +IoTDB> show databases details ++---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+ +| Database|TTL(ms)|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|SchemaRegionGroupNum| DataRegionGroupNum| ++---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+ +|test_prop| 300| 3| 2| 100000| 1| 2| +| test2| 300| 3| 2| 604800000| 1| 2| ++---------+-------+-----------------------+---------------------+---------------------+-----------------------+-----------------------+ +``` + +### 1.5 修改数据库 + +**语法:** + +```SQL +ALTER DATABASE (IF EXISTS)? database=identifier SET PROPERTIES propertyAssignments +``` + +**示例:** + +```SQL +ALTER DATABASE database1 SET PROPERTIES TTL=31536000000; +``` + +### 1.6 删除数据库 + +**语法:** + +```SQL +DROP DATABASE (IF EXISTS)? +``` + +**示例:** + +```SQL +DROP DATABASE IF EXISTS database1 +``` + +## 2. 表管理 + +### 2.1 创建表 + +**语法:** + +```SQL +createTableStatement + : CREATE TABLE (IF NOT EXISTS)? qualifiedName + '(' (columnDefinition (',' columnDefinition)*)? ')' + charsetDesc? + comment? + (WITH properties)? + ; + +charsetDesc + : DEFAULT? (CHAR SET | CHARSET | CHARACTER SET) EQ? identifierOrString + ; + +columnDefinition + : identifier columnCategory=(TAG | ATTRIBUTE | TIME) charsetName? comment? + | identifier type (columnCategory=(TAG | ATTRIBUTE | TIME | FIELD))? charsetName? comment? + ; + +charsetName + : CHAR SET identifier + | CHARSET identifier + | CHARACTER SET identifier + ; + +comment + : COMMENT string + ; +``` + +更多详细语法说明请参考:[创建表](../Basic-Concept/Table-Management.md#_1-1-创建表) + +**示例:** + +```SQL +CREATE TABLE table1 ( + time TIMESTAMP TIME, + region STRING TAG, + plant_id STRING TAG, + device_id STRING TAG, + model_id STRING ATTRIBUTE, + maintenance STRING ATTRIBUTE COMMENT 'maintenance', + temperature FLOAT FIELD COMMENT 'temperature', + humidity FLOAT FIELD COMMENT 'humidity', + status Boolean FIELD COMMENT 'status', + arrival_time TIMESTAMP FIELD COMMENT 'arrival_time' +) COMMENT 'table1' WITH (TTL=31536000000); + +CREATE TABLE if not exists table2 (); + +CREATE TABLE tableC ( + "场站" STRING TAG, + "温度" int32 FIELD COMMENT 'temperature' + ) with (TTL=DEFAULT); +``` + +### 2.2 查看表 + +**语法:** + +```SQL +SHOW TABLES (DETAILS)? ((FROM | IN) database_name)? +``` + +**示例:** + +```SQL +IoTDB> show tables from test_db ++---------+-------+-------+ +|TableName|TTL(ms)|Comment| ++---------+-------+-------+ +| test| INF| TEST| ++---------+-------+-------+ + +IoTDB> show tables details from test_db ++---------+-------+----------+-------+ +|TableName|TTL(ms)| Status|Comment| ++---------+-------+----------+-------+ +| test| INF| USING| TEST| +| turbine| INF|PRE_CREATE| null| +| car| 1000|PRE_DELETE| null| ++---------+-------+----------+-------+ +``` + +### 2.3 查看表的列 + +**语法:** + +```SQL +(DESC | DESCRIBE) (DETAILS)? +``` + +**示例:** + +```SQL +IoTDB> desc tableB ++----------+---------+-----------+-------+ +|ColumnName| DataType| Category|Comment| ++----------+---------+-----------+-------+ +| time|TIMESTAMP| TIME| null| +| a| STRING| TAG| a| +| b| STRING| ATTRIBUTE| b| +| c| INT32| FIELD| c| ++----------+---------+-----------+-------+ + +IoTDB> desc tableB details ++----------+---------+-----------+----------+-------+ +|ColumnName| DataType| Category| Status|Comment| ++----------+---------+-----------+----------+-------+ +| time|TIMESTAMP| TIME| USING| null| +| a| STRING| TAG| USING| a| +| b| STRING| ATTRIBUTE| USING| b| +| c| INT32| FIELD| USING| c| +| d| INT32| FIELD|PRE_DELETE| d| ++----------+---------+-----------+----------+-------+ +``` + +### 2.4 修改表 + +**语法:** + +```SQL +ALTER TABLE (IF EXISTS)? tableName=qualifiedName ADD COLUMN (IF NOT EXISTS)? column=columnDefinition COMMENT 'column_comment' #addColumn +| ALTER TABLE (IF EXISTS)? tableName=qualifiedName DROP COLUMN (IF EXISTS)? column=identifier #dropColumn +// set TTL can use this +| ALTER TABLE (IF EXISTS)? tableName=qualifiedName SET PROPERTIES propertyAssignments #setTableProperties +| COMMENT ON TABLE tableName=qualifiedName IS 'table_comment' +| COMMENT ON COLUMN tableName.column IS 'column_comment' +``` + +**示例:** + +```SQL +ALTER TABLE tableB ADD COLUMN IF NOT EXISTS a TAG COMMENT 'a' +ALTER TABLE tableB set properties TTL=3600 +COMMENT ON TABLE table1 IS 'table1' +COMMENT ON COLUMN table1.a IS null +``` + +### 2.5 删除表 + +**语法:** + +```SQL +DROP TABLE (IF EXISTS)? +``` + +**示例:** + +```SQL +DROP TABLE tableA +DROP TABLE test.tableB +``` + +