From b3cc4340807814a05b37e068d5e0a3d830000183 Mon Sep 17 00:00:00 2001 From: zhaorunhao <599683125@qq.com> Date: Thu, 20 Feb 2025 15:26:21 +0800 Subject: [PATCH 1/2] UserGuide/latest-Table/Reference/Parameter Configuration Master/Table/Reference/Parameter Configuration --- .../Reference/Parameter-Configuration.md | 3250 +++++++++++++++++ .../Reference/Parameter-Configuration.md | 3250 +++++++++++++++++ 2 files changed, 6500 insertions(+) create mode 100644 src/UserGuide/Master/Table/Reference/Parameter-Configuration.md create mode 100644 src/UserGuide/latest-Table/Reference/Parameter-Configuration.md diff --git a/src/UserGuide/Master/Table/Reference/Parameter-Configuration.md b/src/UserGuide/Master/Table/Reference/Parameter-Configuration.md new file mode 100644 index 000000000..360f5e8b6 --- /dev/null +++ b/src/UserGuide/Master/Table/Reference/Parameter-Configuration.md @@ -0,0 +1,3250 @@ +### IoTDB Configuration Files + +The configuration files for IoTDB are located in the `conf` folder under the IoTDB installation directory. Key configuration files include: + +1. `confignode-env.sh` **/** `confignode-env.bat`: + 1. Environment configuration file for ConfigNode. + 2. Used to configure memory size and other environment settings for ConfigNode. +2. `datanode-env.sh` **/** `datanode-env.bat`: + 1. Environment configuration file for DataNode. + 2. Used to configure memory size and other environment settings for DataNode. +3. `iotdb-system.properties`: + 1. Main configuration file for IoTDB. + 2. Contains configurable parameters for IoTDB. +4. `iotdb-system.properties.template`: + 1. Template for the `iotdb-system.properties` file. + 2. Provides a reference for all available configuration parameters. + +### Modify Configurations + +#### 1. **Modify Existing Parameters**: + +- Parameters already present in the `iotdb-system.properties` file can be directly modified. + +#### 2. **Adding New Parameters**: + +- For parameters not listed in `iotdb-system.properties`, you can find them in the `iotdb-system.properties.template` file. +- Copy the desired parameter from the template file to `iotdb-system.properties` and modify its value. + +### Configuration Update Methods + +Different configuration parameters have different update methods, categorized as follows: + +1. **Modify before the first startup.**: + 1. These parameters can only be modified before the first startup of ConfigNode/DataNode. + 2. Modifying them after the first startup will prevent ConfigNode/DataNode from starting. +2. **Restart Required for Changes to Take Effect**: + 1. These parameters can be modified after ConfigNode/DataNode has started. + 2. However, a restart of ConfigNode/DataNode is required for the changes to take effect. +3. **Hot Reload**: + 1. These parameters can be modified while ConfigNode/DataNode is running. + 2. After modification, use the following SQL commands to apply the changes: + - `load configuration`: Reloads the configuration. + - `set configuration`: Updates specific configuration parameters. + +## Environment Parameters + +The environment configuration files (`confignode-env.sh/bat` and `datanode-env.sh/bat`) are used to configure Java environment parameters for ConfigNode and DataNode, such as JVM settings. These configurations are passed to the JVM when ConfigNode or DataNode starts. + +### **confignode-env.sh/bat** + +- MEMORY_SIZE + +| Name | MEMORY_SIZE | +| ----------- | ------------------------------------------------------------ | +| Description | Memory size allocated when IoTDB ConfigNode starts. | +| Type | String | +| Default | Depends on the operating system and machine configuration. Defaults to 3/10 of the machine's memory, capped at 16G. | +| Effective | Restart required | + +- ON_HEAP_MEMORY + +| Name | ON_HEAP_MEMORY | +| ----------- | ------------------------------------------------------------ | +| Description | On-heap memory size available for IoTDB ConfigNode. Previously named `MAX_HEAP_SIZE`. | +| Type | String | +| Default | Depends on the `MEMORY_SIZE` configuration. | +| Effective | Restart required | + +- OFF_HEAP_MEMORY + +| Name | OFF_HEAP_MEMORY | +| ----------- | ------------------------------------------------------------ | +| Description | Off-heap memory size available for IoTDB ConfigNode. Previously named `MAX_DIRECT_MEMORY_SIZE`. | +| Type | String | +| Default | Depends on the `MEMORY_SIZE` configuration. | +| Effective | Restart required | + +### **datanode-env.sh/bat** + +- MEMORY_SIZE + +| Name | MEMORY_SIZE | +| ----------- | ------------------------------------------------------------ | +| Description | Memory size allocated when IoTDB DataNode starts. | +| Type | String | +| Default | Depends on the operating system and machine configuration. Defaults to 1/2 of the machine's memory. | +| Effective | Restart required | + +- ON_HEAP_MEMORY + +| Name | ON_HEAP_MEMORY | +| ----------- | ------------------------------------------------------------ | +| Description | On-heap memory size available for IoTDB DataNode. Previously named `MAX_HEAP_SIZE`. | +| Type | String | +| Default | Depends on the `MEMORY_SIZE` configuration. | +| Effective | Restart required | + +- OFF_HEAP_MEMORY + +| Name | OFF_HEAP_MEMORY | +| ----------- | ------------------------------------------------------------ | +| Description | Off-heap memory size available for IoTDB DataNode. Previously named `MAX_DIRECT_MEMORY_SIZE`. | +| Type | String | +| Default | Depends on the `MEMORY_SIZE` configuration. | +| Effective | Restart required | + +## System Parameters (`iotdb-system.properties.template`) + +The `iotdb-system.properties` file contains various configurations for managing IoTDB clusters, nodes, replication, directories, monitoring, SSL, connections, object storage, tier management, and REST services. Below is a detailed breakdown of the parameters: + +### Cluster Configuration + +- cluster_name + +| Name | cluster_name | +| ----------- | ------------------------------------------------------------ | +| Description | Name of the cluster. | +| Type | String | +| Default | default_cluster | +| Effective | Use CLI: `set configuration "cluster_name"="xxx"`. | +| Note | Changes are distributed across nodes. Changes may not propagate to all nodes in case of network issues or node failures. Nodes that fail to update must manually modify `cluster_name` in their configuration files and restart. Under normal circumstances, it is not recommended to modify `cluster_name` by manually modifying configuration files or to perform hot-loading via `load configuration` method. | + +### Seed ConfigNode + +- cn_seed_config_node + +| Name | cn_seed_config_node | +| ----------- | ------------------------------------------------------------ | +| Description | Address of the seed ConfigNode for Confignode to join the cluster. | +| Type | String | +| Default | 127.0.0.1:10710 | +| Effective | Modify before the first startup. | + +- dn_seed_config_node + +| Name | dn_seed_config_node | +| ----------- | ------------------------------------------------------------ | +| Description | Address of the seed ConfigNode for Datanode to join the cluster. | +| Type | String | +| Default | 127.0.0.1:10710 | +| Effective | Modify before the first startup. | + +### Node RPC Configuration + +- cn_internal_address + +| Name | cn_internal_address | +| ----------- | ---------------------------------------------- | +| Description | Internal address for ConfigNode communication. | +| Type | String | +| Default | 127.0.0.1 | +| Effective | Modify before the first startup. | + +- cn_internal_port + +| Name | cn_internal_port | +| ----------- | ------------------------------------------- | +| Description | Port for ConfigNode internal communication. | +| Type | Short Int : [0,65535] | +| Default | 10710 | +| Effective | Modify before the first startup. | + +- cn_consensus_port + +| Name | cn_consensus_port | +| ----------- | ----------------------------------------------------- | +| Description | Port for ConfigNode consensus protocol communication. | +| Type | Short Int : [0,65535] | +| Default | 10720 | +| Effective | Modify before the first startup. | + +- dn_rpc_address + +| Name | dn_rpc_address | +| ----------- | ------------------------------- | +| Description | Address for client RPC service. | +| Type | String | +| Default | 0.0.0.0 | +| Effective | Restart required. | + +- dn_rpc_port + +| Name | dn_rpc_port | +| ----------- | ---------------------------- | +| Description | Port for client RPC service. | +| Type | Short Int : [0,65535] | +| Default | 6667 | +| Effective | Restart required. | + +- dn_internal_address + +| Name | dn_internal_address | +| ----------- | -------------------------------------------- | +| Description | Internal address for DataNode communication. | +| Type | string | +| Default | 127.0.0.1 | +| Effective | Modify before the first startup. | + +- dn_internal_port + +| Name | dn_internal_port | +| ----------- | ----------------------------------------- | +| Description | Port for DataNode internal communication. | +| Type | int | +| Default | 10730 | +| Effective | Modify before the first startup. | + +- dn_mpp_data_exchange_port + +| Name | dn_mpp_data_exchange_port | +| ----------- | -------------------------------- | +| Description | Port for MPP data exchange. | +| Type | int | +| Default | 10740 | +| Effective | Modify before the first startup. | + +- dn_schema_region_consensus_port + +| Name | dn_schema_region_consensus_port | +| ----------- | ------------------------------------------------------------ | +| Description | Port for Datanode SchemaRegion consensus protocol communication. | +| Type | int | +| Default | 10750 | +| Effective | Modify before the first startup. | + +- dn_data_region_consensus_port + +| Name | dn_data_region_consensus_port | +| ----------- | ------------------------------------------------------------ | +| Description | Port for Datanode DataRegion consensus protocol communication. | +| Type | int | +| Default | 10760 | +| Effective | Modify before the first startup. | + +- dn_join_cluster_retry_interval_ms + +| Name | dn_join_cluster_retry_interval_ms | +| ----------- | --------------------------------------------------- | +| Description | Interval for DataNode to retry joining the cluster. | +| Type | long | +| Default | 5000 | +| Effective | Restart required. | + +### Replication configuration + +- config_node_consensus_protocol_class + +| Name | config_node_consensus_protocol_class | +| ----------- | ------------------------------------------------------------ | +| Description | Consensus protocol for ConfigNode replication, only supports RatisConsensus | +| Type | String | +| Default | org.apache.iotdb.consensus.ratis.RatisConsensus | +| Effective | Modify before the first startup. | + +- schema_replication_factor + +| Name | schema_replication_factor | +| ----------- | ------------------------------------------------------------ | +| Description | Default schema replication factor for databases. | +| Type | int32 | +| Default | 1 | +| Effective | Restart required. Takes effect on the new database after restarting. | + +- schema_region_consensus_protocol_class + +| Name | schema_region_consensus_protocol_class | +| ----------- | ------------------------------------------------------------ | +| Description | Consensus protocol for schema region replication. Only supports RatisConsensus when multi-replications. | +| Type | String | +| Default | org.apache.iotdb.consensus.ratis.RatisConsensus | +| Effective | Modify before the first startup. | + +- data_replication_factor + +| Name | data_replication_factor | +| ----------- | ------------------------------------------------------------ | +| Description | Default data replication factor for databases. | +| Type | int32 | +| Default | 1 | +| Effective | Restart required. Takes effect on the new database after restarting. | + +- data_region_consensus_protocol_class + +| Name | data_region_consensus_protocol_class | +| ----------- | ------------------------------------------------------------ | +| Description | Consensus protocol for data region replication. Supports IoTConsensus or RatisConsensus when multi-replications. | +| Type | String | +| Default | org.apache.iotdb.consensus.iot.IoTConsensus | +| Effective | Modify before the first startup. | + +### Directory configuration + +- cn_system_dir + +| Name | cn_system_dir | +| ----------- | ----------------------------------------------------------- | +| Description | System data storage path for ConfigNode. | +| Type | String | +| Default | data/confignode/system(Windows:data\\configndoe\\system) | +| Effective | Restart required | + +- cn_consensus_dir + +| Name | cn_consensus_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Consensus protocol data storage path for ConfigNode. | +| Type | String | +| Default | data/confignode/consensus(Windows:data\\configndoe\\consensus) | +| Effective | Restart required | + +- cn_pipe_receiver_file_dir + +| Name | cn_pipe_receiver_file_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Directory for pipe receiver files in ConfigNode. | +| Type | String | +| Default | data/confignode/system/pipe/receiver(Windows:data\\confignode\\system\\pipe\\receiver) | +| Effective | Restart required | + +- dn_system_dir + +| Name | dn_system_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Schema storage path for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. | +| Type | String | +| Default | data/datanode/system(Windows:data\\datanode\\system) | +| Effective | Restart required | + +- dn_data_dirs + +| Name | dn_data_dirs | +| ----------- | ------------------------------------------------------------ | +| Description | Data storage path for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. | +| Type | String | +| Default | data/datanode/data(Windows:data\\datanode\\data) | +| Effective | Restart required | + +- dn_multi_dir_strategy + +| Name | dn_multi_dir_strategy | +| ----------- | ------------------------------------------------------------ | +| Description | The strategy used by IoTDB to select directories in `data_dirs` for TsFiles. You can use either the simple class name or the fully qualified class name. The system provides the following two strategies: 1. SequenceStrategy: IoTDB selects directories sequentially, iterating through all directories in `data_dirs` in a round-robin manner. 2. MaxDiskUsableSpaceFirstStrategy IoTDB prioritizes the directory in `data_dirs` with the largest disk free space. To implement a custom strategy: 1. Inherit the `org.apache.iotdb.db.storageengine.rescon.disk.strategy.DirectoryStrategy `class and implement your own strategy method. 2. Fill in the configuration item with the fully qualified class name of your implementation (package name + class name, e.g., `UserDefineStrategyPackage`). 3. Add the JAR file containing your custom class to the project. | +| Type | String | +| Default | SequenceStrategy | +| Effective | Hot reload. | + +- dn_consensus_dir + +| Name | dn_consensus_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Consensus log storage path for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. | +| Type | String | +| Default | data/datanode/consensus(Windows:data\\datanode\\consensus) | +| Effective | Restart required | + +- dn_wal_dirs + +| Name | dn_wal_dirs | +| ----------- | ------------------------------------------------------------ | +| Description | Write-ahead log (WAL) storage path for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. | +| Type | String | +| Default | data/datanode/wal(Windows:data\\datanode\\wal) | +| Effective | Restart required | + +- dn_tracing_dir + +| Name | dn_tracing_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Tracing root directory for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. | +| Type | String | +| Default | datanode/tracing(Windows:datanode\\tracing) | +| Effective | Restart required | + +- dn_sync_dir + +| Name | dn_sync_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Sync storage path for DataNode.By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. | +| Type | String | +| Default | data/datanode/sync(Windows:data\\datanode\\sync) | +| Effective | Restart required | + +- sort_tmp_dir + +| Name | sort_tmp_dir | +| ----------- | ------------------------------------------------- | +| Description | Temporary directory for sorting operations. | +| Type | String | +| Default | data/datanode/tmp(Windows:data\\datanode\\tmp) | +| Effective | Restart required | + +- dn_pipe_receiver_file_dirs + +| Name | dn_pipe_receiver_file_dirs | +| ----------- | ------------------------------------------------------------ | +| Description | Directory for pipe receiver files in DataNode. | +| Type | String | +| Default | data/datanode/system/pipe/receiver(Windows:data\\datanode\\system\\pipe\\receiver) | +| Effective | Restart required | + +- iot_consensus_v2_receiver_file_dirs + +| Name | iot_consensus_v2_receiver_file_dirs | +| ----------- | ------------------------------------------------------------ | +| Description | Directory for IoTConsensus V2 receiver files. | +| Type | String | +| Default | data/datanode/system/pipe/consensus/receiver(Windows:data\\datanode\\system\\pipe\\consensus\\receiver) | +| Effective | Restart required | + +- iot_consensus_v2_deletion_file_dir + +| Name | iot_consensus_v2_deletion_file_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Directory for IoTConsensus V2 deletion files. | +| Type | String | +| Default | data/datanode/system/pipe/consensus/deletion(Windows:data\\datanode\\system\\pipe\\consensus\\deletion) | +| Effective | Restart required | + +### Metric Configuration + +- cn_metric_reporter_list + +| Name | cn_metric_reporter_list | +| ----------- | ----------------------------------------- | +| Description | Systems for reporting ConfigNode metrics. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +- cn_metric_level + +| Name | cn_metric_level | +| ----------- | --------------------------------------- | +| Description | Level of detail for ConfigNode metrics. | +| Type | String | +| Default | IMPORTANT | +| Effective | Restart required. | + +- cn_metric_async_collect_period + +| Name | cn_metric_async_collect_period | +| ----------- | ------------------------------------------------------------ | +| Description | Period for asynchronous metric collection in ConfigNode (in seconds). | +| Type | int | +| Default | 5 | +| Effective | Restart required. | + +- cn_metric_prometheus_reporter_port + +| Name | cn_metric_prometheus_reporter_port | +| ----------- | --------------------------------------------------- | +| Description | Port for Prometheus metric reporting in ConfigNode. | +| Type | int | +| Default | 9091 | +| Effective | Restart required. | + +- dn_metric_reporter_list + +| Name | dn_metric_reporter_list | +| ----------- | --------------------------------------- | +| Description | Systems for reporting DataNode metrics. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +- dn_metric_level + +| Name | dn_metric_level | +| ----------- | ------------------------------------- | +| Description | Level of detail for DataNode metrics. | +| Type | String | +| Default | IMPORTANT | +| Effective | Restart required. | + +- dn_metric_async_collect_period + +| Name | dn_metric_async_collect_period | +| ----------- | ------------------------------------------------------------ | +| Description | Period for asynchronous metric collection in DataNode (in seconds). | +| Type | int | +| Default | 5 | +| Effective | Restart required. | + +- dn_metric_prometheus_reporter_port + +| Name | dn_metric_prometheus_reporter_port | +| ----------- | ------------------------------------------------- | +| Description | Port for Prometheus metric reporting in DataNode. | +| Type | int | +| Default | 9092 | +| Effective | Restart required. | + +- dn_metric_internal_reporter_type + +| Name | dn_metric_internal_reporter_type | +| ----------- | ------------------------------------------------------------ | +| Description | Internal reporter types for DataNode metrics. For internal monitoring and checking that the data has been successfully written and refreshed. | +| Type | String | +| Default | IOTDB | +| Effective | Restart required. | + +### SSL Configuration + +- enable_thrift_ssl + +| Name | enable_thrift_ssl | +| ----------- | --------------------------------------------- | +| Description | Enables SSL encryption for RPC communication. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- enable_https + +| Name | enable_https | +| ----------- | ------------------------------ | +| Description | Enables SSL for REST services. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- key_store_path + +| Name | key_store_path | +| ----------- | ---------------------------- | +| Description | Path to the SSL certificate. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +- key_store_pwd + +| Name | key_store_pwd | +| ----------- | --------------------------------- | +| Description | Password for the SSL certificate. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +### Connection Configuration + +- cn_rpc_thrift_compression_enable + +| Name | cn_rpc_thrift_compression_enable | +| ----------- | ----------------------------------- | +| Description | Enables Thrift compression for RPC. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- cn_rpc_max_concurrent_client_num + +| Name | cn_rpc_max_concurrent_client_num | +| ----------- | ----------------------------------------- | +| Description | Maximum number of concurrent RPC clients. | +| Type | Short Int : [0,65535] | +| Default | 65535 | +| Effective | Restart required. | + +- cn_connection_timeout_ms + +| Name | cn_connection_timeout_ms | +| ----------- | ---------------------------------------------------- | +| Description | Connection timeout for ConfigNode (in milliseconds). | +| Type | int | +| Default | 60000 | +| Effective | Restart required. | + +- cn_selector_thread_nums_of_client_manager + +| Name | cn_selector_thread_nums_of_client_manager | +| ----------- | ------------------------------------------------------------ | +| Description | Number of selector threads for client management in ConfigNode. | +| Type | int | +| Default | 1 | +| Effective | Restart required. | + +- cn_max_client_count_for_each_node_in_client_manager + +| Name | cn_max_client_count_for_each_node_in_client_manager | +| ----------- | ------------------------------------------------------ | +| Description | Maximum clients per node in ConfigNode client manager. | +| Type | int | +| Default | 300 | +| Effective | Restart required. | + +- dn_session_timeout_threshold + +| Name | dn_session_timeout_threshold | +| ----------- | ---------------------------------------- | +| Description | Maximum idle time for DataNode sessions. | +| Type | int | +| Default | 0 | +| Effective | Restart required.t required. | + +- dn_rpc_thrift_compression_enable + +| Name | dn_rpc_thrift_compression_enable | +| ----------- | -------------------------------------------- | +| Description | Enables Thrift compression for DataNode RPC. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- dn_rpc_advanced_compression_enable + +| Name | dn_rpc_advanced_compression_enable | +| ----------- | ----------------------------------------------------- | +| Description | Enables advanced Thrift compression for DataNode RPC. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- dn_rpc_selector_thread_count + +| Name | rpc_selector_thread_count | +| ----------- | -------------------------------------------- | +| Description | Number of selector threads for DataNode RPC. | +| Type | int | +| Default | 1 | +| Effective | Restart required.t required. | + +- dn_rpc_min_concurrent_client_num + +| Name | rpc_min_concurrent_client_num | +| ----------- | ------------------------------------------------------ | +| Description | Minimum number of concurrent RPC clients for DataNode. | +| Type | Short Int : [0,65535] | +| Default | 1 | +| Effective | Restart required. | + +- dn_rpc_max_concurrent_client_num + +| Name | dn_rpc_max_concurrent_client_num | +| ----------- | ------------------------------------------------------ | +| Description | Maximum number of concurrent RPC clients for DataNode. | +| Type | Short Int : [0,65535] | +| Default | 65535 | +| Effective | Restart required. | + +- dn_thrift_max_frame_size + +| Name | dn_thrift_max_frame_size | +| ----------- | ----------------------------------------------- | +| Description | Maximum frame size for RPC requests/responses. | +| Type | long | +| Default | 536870912 (Default512MB,>= 512 * 1024 * 1024) | +| Effective | Restart required. | + +- dn_thrift_init_buffer_size + +| Name | dn_thrift_init_buffer_size | +| ----------- | ----------------------------------- | +| Description | Initial buffer size for Thrift RPC. | +| Type | long | +| Default | 1024 | +| Effective | Restart required. | + +- dn_connection_timeout_ms + +| Name | dn_connection_timeout_ms | +| ----------- | -------------------------------------------------- | +| Description | Connection timeout for DataNode (in milliseconds). | +| Type | int | +| Default | 60000 | +| Effective | Restart required. | + +- dn_selector_thread_count_of_client_manager + +| Name | dn_selector_thread_count_of_client_manager | +| ----------- | ------------------------------------------------------------ | +| Description | selector thread (TAsyncClientManager) nums for async thread in a clientManager | +| Type | int | +| Default | 1 | +| Effective | Restart required.t required. | + +- dn_max_client_count_for_each_node_in_client_manager + +| Name | dn_max_client_count_for_each_node_in_client_manager | +| ----------- | --------------------------------------------------- | +| Description | Maximum clients per node in DataNode clientmanager. | +| Type | int | +| Default | 300 | +| Effective | Restart required. | + +### Object storage management + +- remote_tsfile_cache_dirs + +| Name | remote_tsfile_cache_dirs | +| ----------- | ---------------------------------------- | +| Description | Local cache directory for cloud storage. | +| Type | String | +| Default | data/datanode/data/cache | +| Effective | Restart required. | + +- remote_tsfile_cache_page_size_in_kb + +| Name | remote_tsfile_cache_page_size_in_kb | +| ----------- | --------------------------------------------- | +| Description | Block size for cached files in cloud storage. | +| Type | int | +| Default | 20480 | +| Effective | Restart required. | + +- remote_tsfile_cache_max_disk_usage_in_mb + +| Name | remote_tsfile_cache_max_disk_usage_in_mb | +| ----------- | ------------------------------------------- | +| Description | Maximum disk usage for cloud storage cache. | +| Type | long | +| Default | 51200 | +| Effective | Restart required. | + +- object_storage_type + +| Name | object_storage_type | +| ----------- | ---------------------- | +| Description | Type of cloud storage. | +| Type | String | +| Default | AWS_S3 | +| Effective | Restart required. | + +- object_storage_endpoint + +| Name | object_storage_endpoint | +| ----------- | --------------------------- | +| Description | Endpoint for cloud storage. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +- object_storage_bucket + +| Name | object_storage_bucket | +| ----------- | ------------------------------ | +| Description | Bucket name for cloud storage. | +| Type | String | +| Default | iotdb_data | +| Effective | Restart required. | + +- object_storage_access_key + +| Name | object_storage_access_key | +| ----------- | ----------------------------- | +| Description | Access key for cloud storage. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +- object_storage_access_secret + +| Name | object_storage_access_secret | +| ----------- | -------------------------------- | +| Description | Access secret for cloud storage. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +### Tier management + +- dn_default_space_usage_thresholds + +| Name | dn_default_space_usage_thresholds | +| ----------- | ------------------------------------------------------------ | +| Description | Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";". | +| Type | double | +| Default | 0.85 | +| Effective | Hot reload. | + +- dn_tier_full_policy + +| Name | dn_tier_full_policy | +| ----------- | ------------------------------------------------------------ | +| Description | How to deal with the last tier's data when its used space has been higher than its dn_default_space_usage_thresholds. | +| Type | String | +| Default | NULL | +| Effective | Hot reload. | + +- migrate_thread_count + +| Name | migrate_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | thread pool size for migrate operation in the DataNode's data directories. | +| Type | int | +| Default | 1 | +| Effective | Hot reload. | + +- tiered_storage_migrate_speed_limit_bytes_per_sec + +| Name | tiered_storage_migrate_speed_limit_bytes_per_sec | +| ----------- | ------------------------------------------------------------ | +| Description | The migrate speed limit of different tiers can reach per second | +| Type | int | +| Default | 10485760 | +| Effective | Hot reload. | + +### REST Service Configuration + +- enable_rest_service + +| Name | enable_rest_service | +| ----------- | --------------------------- | +| Description | Is the REST service enabled | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- rest_service_port + +| Name | rest_service_port | +| ----------- | ------------------------------------ | +| Description | the binding port of the REST service | +| Type | int32 | +| Default | 18080 | +| Effective | Restart required. | + +- enable_swagger + +| Name | enable_swagger | +| ----------- | ------------------------------------------------------------ | +| Description | Whether to display rest service interface information through swagger. eg: http://ip:port/swagger.json | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- rest_query_default_row_size_limit + +| Name | rest_query_default_row_size_limit | +| ----------- | ------------------------------------------------------------ | +| Description | the default row limit to a REST query response when the rowSize parameter is not given in request | +| Type | int32 | +| Default | 10000 | +| Effective | Restart required. | + +- cache_expire_in_seconds + +| Name | cache_expire_in_seconds | +| ----------- | ------------------------------------------------------------ | +| Description | The expiration time of the user login information cache (in seconds) | +| Type | int32 | +| Default | 28800 | +| Effective | Restart required. | + +- cache_max_num + +| Name | cache_max_num | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum number of users can be stored in the user login cache. | +| Type | int32 | +| Default | 100 | +| Effective | Restart required. | + +- cache_init_num + +| Name | cache_init_num | +| ----------- | ------------------------------------------------------------ | +| Description | The initial capacity of users can be stored in the user login cache. | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- client_auth + +| Name | client_auth | +| ----------- | --------------------------------- | +| Description | Is client authentication required | +| Type | boolean | +| Default | false | +| Effective | Restart required. | + +- trust_store_path + +| Name | trust_store_path | +| ----------- | -------------------- | +| Description | SSL trust store path | +| Type | String | +| Default | "" | +| Effective | Restart required. | + +- trust_store_pwd + +| Name | trust_store_pwd | +| ----------- | ------------------------- | +| Description | SSL trust store password. | +| Type | String | +| Default | "" | +| Effective | Restart required. | + +- idle_timeout_in_seconds + +| Name | idle_timeout_in_seconds | +| ----------- | ------------------------ | +| Description | SSL timeout (in seconds) | +| Type | int32 | +| Default | 5000 | +| Effective | Restart required. | + +### Load balancing configuration + +- series_slot_num + +| Name | series_slot_num | +| ----------- | ------------------------------------------- | +| Description | Number of SeriesPartitionSlots per Database | +| Type | int32 | +| Default | 10000 | +| Effective | Modify before the first startup. | + +- series_partition_executor_class + +| Name | series_partition_executor_class | +| ----------- | ------------------------------------------------------------ | +| Description | SeriesPartitionSlot executor class | +| Type | String | +| Default | org.apache.iotdb.commons.partition.executor.hash.BKDRHashExecutor | +| Effective | Modify before the first startup. | + +- schema_region_group_extension_policy + +| Name | schema_region_group_extension_policy | +| ----------- | ------------------------------------------------------------ | +| Description | The policy of extension SchemaRegionGroup for each Database. | +| Type | string | +| Default | AUTO | +| Effective | Restart required. | + +- default_schema_region_group_num_per_database + +| Name | default_schema_region_group_num_per_database | +| ----------- | ------------------------------------------------------------ | +| Description | When set schema_region_group_extension_policy=CUSTOM, this parameter is the default number of SchemaRegionGroups for each Database.When set schema_region_group_extension_policy=AUTO, this parameter is the default minimal number of SchemaRegionGroups for each Database. | +| Type | int | +| Default | 1 | +| Effective | Restart required. | + +- schema_region_per_data_node + +| Name | schema_region_per_data_node | +| ----------- | ------------------------------------------------------------ | +| Description | It only takes effect when set schema_region_group_extension_policy=AUTO.This parameter is the maximum number of SchemaRegions expected to be managed by each DataNode. | +| Type | double | +| Default | 1.0 | +| Effective | Restart required. | + +- data_region_group_extension_policy + +| Name | data_region_group_extension_policy | +| ----------- | ---------------------------------------------------------- | +| Description | The policy of extension DataRegionGroup for each Database. | +| Type | string | +| Default | AUTO | +| Effective | Restart required. | + +- default_data_region_group_num_per_database + +| Name | default_data_region_group_per_database | +| ----------- | ------------------------------------------------------------ | +| Description | When set data_region_group_extension_policy=CUSTOM, this parameter is the default number of DataRegionGroups for each Database.When set data_region_group_extension_policy=AUTO, this parameter is the default minimal number of DataRegionGroups for each Database. | +| Type | int | +| Default | 2 | +| Effective | Restart required. | + +- data_region_per_data_node + +| Name | data_region_per_data_node | +| ----------- | ------------------------------------------------------------ | +| Description | It only takes effect when set data_region_group_extension_policy=AUTO.This parameter is the maximum number of DataRegions expected to be managed by each DataNode. | +| Type | double | +| Default | 5.0 | +| Effective | Restart required. | + +- enable_auto_leader_balance_for_ratis_consensus + +| Name | enable_auto_leader_balance_for_ratis_consensus | +| ----------- | ------------------------------------------------------------ | +| Description | Whether to enable auto leader balance for Ratis consensus protocol. | +| Type | Boolean | +| Default | true | +| Effective | Restart required. | + +- enable_auto_leader_balance_for_iot_consensus + +| Name | enable_auto_leader_balance_for_iot_consensus | +| ----------- | ------------------------------------------------------------ | +| Description | Whether to enable auto leader balance for IoTConsensus protocol. | +| Type | Boolean | +| Default | true | +| Effective | Restart required. | + +### Cluster management + +- time_partition_origin + +| Name | time_partition_origin | +| ----------- | ------------------------------------------------------------ | +| Description | Time partition origin in milliseconds, default is equal to zero. | +| Type | Long | +| Unit | ms | +| Default | 0 | +| Effective | Modify before the first startup. | + +- time_partition_interval + +| Name | time_partition_interval | +| ----------- | ------------------------------------------------------------ | +| Description | Time partition interval in milliseconds, and partitioning data inside each data region, default is equal to one week | +| Type | Long | +| Unit | ms | +| Default | 604800000 | +| Effective | Modify before the first startup. | + +- heartbeat_interval_in_ms + +| Name | heartbeat_interval_in_ms | +| ----------- | -------------------------------------- | +| Description | The heartbeat interval in milliseconds | +| Type | Long | +| Unit | ms | +| Default | 1000 | +| Effective | Restart required. | + +- disk_space_warning_threshold + +| Name | disk_space_warning_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | Disk remaining threshold at which DataNode is set to ReadOnly status | +| Type | double(percentage) | +| Default | 0.05 | +| Effective | Restart required. | + +### Memory Control Configuration + +- datanode_memory_proportion + +| Name | datanode_memory_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Memory Allocation Ratio: StorageEngine, QueryEngine, SchemaEngine, Consensus, StreamingEngine and Free Memory. | +| Type | Ratio | +| Default | 3:3:1:1:1:1 | +| Effective | Restart required. | + +- schema_memory_proportion + +| Name | schema_memory_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Schema Memory Allocation Ratio: SchemaRegion, SchemaCache, and PartitionCache. | +| Type | Ratio | +| Default | 5:4:1 | +| Effective | Restart required. | + +- storage_engine_memory_proportion + +| Name | storage_engine_memory_proportion | +| ----------- | ----------------------------------------------------------- | +| Description | Memory allocation ratio in StorageEngine: Write, Compaction | +| Type | Ratio | +| Default | 8:2 | +| Effective | Restart required. | + +- write_memory_proportion + +| Name | write_memory_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Memory allocation ratio in writing: Memtable, TimePartitionInfo | +| Type | Ratio | +| Default | 19:1 | +| Effective | Restart required. | + +- primitive_array_size + +| Name | primitive_array_size | +| ----------- | --------------------------------------------------------- | +| Description | primitive array size (length of each array) in array pool | +| Type | int32 | +| Default | 64 | +| Effective | Restart required. | + +- chunk_metadata_size_proportion + +| Name | chunk_metadata_size_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Ratio of compaction memory for chunk metadata maintains in memory when doing compaction | +| Type | Double | +| Default | 0.1 | +| Effective | Restart required. | + +- flush_proportion + +| Name | flush_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Ratio of memtable memory for invoking flush disk, 0.4 by defaultIf you have extremely high write load (like batch=1000), it can be set lower than the default value like 0.2 | +| Type | Double | +| Default | 0.4 | +| Effective | Restart required. | + +- buffered_arrays_memory_proportion + +| Name | buffered_arrays_memory_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Ratio of memtable memory allocated for buffered arrays, 0.6 by default | +| Type | Double | +| Default | 0.6 | +| Effective | Restart required. | + +- reject_proportion + +| Name | reject_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Ratio of memtable memory for rejecting insertion, 0.8 by defaultIf you have extremely high write load (like batch=1000) and the physical memory size is large enough, it can be set higher than the default value like 0.9 | +| Type | Double | +| Default | 0.8 | +| Effective | Restart required. | + +- device_path_cache_proportion + +| Name | device_path_cache_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Ratio of memtable memory for the DevicePathCache. DevicePathCache is the deviceId cache, keeping only one copy of the same deviceId in memory | +| Type | Double | +| Default | 0.05 | +| Effective | Restart required. | + +- write_memory_variation_report_proportion + +| Name | write_memory_variation_report_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | If memory cost of data region increased more than proportion of allocated memory for writing, report to system. The default value is 0.001 | +| Type | Double | +| Default | 0.001 | +| Effective | Restart required. | + +- check_period_when_insert_blocked + +| Name | check_period_when_insert_blocked | +| ----------- | ------------------------------------------------------------ | +| Description | When an insertion is rejected, the waiting period (in ms) to check system again, 50 by default.If the insertion has been rejected and the read load is low, it can be set larger. | +| Type | int32 | +| Default | 50 | +| Effective | Restart required. | + +- io_task_queue_size_for_flushing + +| Name | io_task_queue_size_for_flushing | +| ----------- | -------------------------------------------- | +| Description | size of ioTaskQueue. The default value is 10 | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- enable_query_memory_estimation + +| Name | enable_query_memory_estimation | +| ----------- | ------------------------------------------------------------ | +| Description | If true, we will estimate each query's possible memory footprint before executing it and deny it if its estimated memory exceeds current free memory | +| Type | bool | +| Default | true | +| Effective | Hot reload. | + +### Schema Engine Configuration + +- schema_engine_mode + +| Name | schema_engine_mode | +| ----------- | ------------------------------------------------------------ | +| Description | The schema management mode of schema engine. Currently, support Memory and PBTree.This config of all DataNodes in one cluster must keep same. | +| Type | string | +| Default | Memory | +| Effective | Modify before the first startup. | + +- partition_cache_size + +| Name | partition_cache_size | +| ----------- | ------------------------- | +| Description | cache size for partition. | +| Type | Int32 | +| Default | 1000 | +| Effective | Restart required. | + +- sync_mlog_period_in_ms + +| Name | sync_mlog_period_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | The cycle when metadata log is periodically forced to be written to disk(in milliseconds)If sync_mlog_period_in_ms=0 it means force metadata log to be written to disk after each refreshmentSetting this parameter to 0 may slow down the operation on slow disk. | +| Type | Int64 | +| Default | 100 | +| Effective | Restart required. | + +- tag_attribute_flush_interval + +| Name | tag_attribute_flush_interval | +| ----------- | ------------------------------------------------------------ | +| Description | interval num for tag and attribute records when force flushing to disk | +| Type | int32 | +| Default | 1000 | +| Effective | Modify before the first startup. | + +- tag_attribute_total_size + +| Name | tag_attribute_total_size | +| ----------- | ------------------------------------------------------------ | +| Description | max size for a storage block for tags and attributes of a one-time series | +| Type | int32 | +| Default | 700 | +| Effective | Modify before the first startup. | + +- max_measurement_num_of_internal_request + +| Name | max_measurement_num_of_internal_request | +| ----------- | ------------------------------------------------------------ | +| Description | max measurement num of internal requestWhen creating timeseries with Session.createMultiTimeseries, the user input plan, the timeseries num ofwhich exceeds this num, will be split to several plans with timeseries no more than this num. | +| Type | Int32 | +| Default | 10000 | +| Effective | Restart required. | + +- datanode_schema_cache_eviction_policy + +| Name | datanode_schema_cache_eviction_policy | +| ----------- | --------------------------------------- | +| Description | Policy of DataNodeSchemaCache eviction. | +| Type | String | +| Default | FIFO | +| Effective | Restart required. | + +- cluster_timeseries_limit_threshold + +| Name | cluster_timeseries_limit_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | This configuration parameter sets the maximum number of time series allowed in the cluster. | +| Type | Int32 | +| Default | -1 | +| Effective | Restart required. | + +- cluster_device_limit_threshold + +| Name | cluster_device_limit_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | This configuration parameter sets the maximum number of devices allowed in the cluster. | +| Type | Int32 | +| Default | -1 | +| Effective | Restart required. | + +- database_limit_threshold + +| Name | database_limit_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | This configuration parameter sets the maximum number of Cluster Databases allowed. | +| Type | Int32 | +| Default | -1 | +| Effective | Restart required. | + +### Configurations for creating schema automatically + +- enable_auto_create_schema + +| Name | enable_auto_create_schema | +| ----------- | ------------------------------------------------ | +| Description | Whether creating schema automatically is enabled | +| Value | true or false | +| Default | true | +| Effective | Restart required. | + +- default_storage_group_level + +| Name | default_storage_group_level | +| ----------- | ------------------------------------------------------------ | +| Description | Database level when creating schema automatically is enabled e.g. root.sg0.d1.s2We will set root.sg0 as the database if database level is 1If the incoming path is shorter than this value, the creation/insertion will fail. | +| Value | int32 | +| Default | 1 | +| Effective | Restart required. | + +- boolean_string_infer_type + +| Name | boolean_string_infer_type | +| ----------- | ------------------------------------------------------------ | +| Description | register time series as which type when receiving boolean string "true" or "false" | +| Value | BOOLEAN or TEXT | +| Default | BOOLEAN | +| Effective | Restart required. | + +- integer_string_infer_type + +| Name | integer_string_infer_type | +| ----------- | ------------------------------------------------------------ | +| Description | register time series as which type when receiving an integer string and using float or double may lose precision | +| Value | INT32, INT64, FLOAT, DOUBLE, TEXT | +| Default | DOUBLE | +| Effective | Restart required. | + +- floating_string_infer_type + +| Name | floating_string_infer_type | +| ----------- | ------------------------------------------------------------ | +| Description | register time series as which type when receiving a floating number string "6.7" | +| Value | DOUBLE, FLOAT or TEXT | +| Default | DOUBLE | +| Effective | Restart required. | + +- nan_string_infer_type + +| Name | nan_string_infer_type | +| ----------- | ------------------------------------------------------------ | +| Description | register time series as which type when receiving the Literal NaN. | +| Value | DOUBLE, FLOAT or TEXT | +| Default | DOUBLE | +| Effective | Restart required. | + +- default_boolean_encoding + +| Name | default_boolean_encoding | +| ----------- | ------------------------------------------------------------ | +| Description | BOOLEAN encoding when creating schema automatically is enabled | +| Value | PLAIN, RLE | +| Default | RLE | +| Effective | Restart required. | + +- default_int32_encoding + +| Name | default_int32_encoding | +| ----------- | ------------------------------------------------------------ | +| Description | INT32 encoding when creating schema automatically is enabled | +| Value | PLAIN, RLE, TS_2DIFF, REGULAR, GORILLA | +| Default | TS_2DIFF | +| Effective | Restart required. | + +- default_int64_encoding + +| Name | default_int64_encoding | +| ----------- | ------------------------------------------------------------ | +| Description | INT64 encoding when creating schema automatically is enabled | +| Value | PLAIN, RLE, TS_2DIFF, REGULAR, GORILLA | +| Default | TS_2DIFF | +| Effective | Restart required. | + +- default_float_encoding + +| Name | default_float_encoding | +| ----------- | ------------------------------------------------------------ | +| Description | FLOAT encoding when creating schema automatically is enabled | +| Value | PLAIN, RLE, TS_2DIFF, GORILLA | +| Default | GORILLA | +| Effective | Restart required. | + +- default_double_encoding + +| Name | default_double_encoding | +| ----------- | ------------------------------------------------------------ | +| Description | DOUBLE encoding when creating schema automatically is enabled | +| Value | PLAIN, RLE, TS_2DIFF, GORILLA | +| Default | GORILLA | +| Effective | Restart required. | + +- default_text_encoding + +| Name | default_text_encoding | +| ----------- | ----------------------------------------------------------- | +| Description | TEXT encoding when creating schema automatically is enabled | +| Value | PLAIN | +| Default | PLAIN | +| Effective | Restart required. | + +### Query Configurations + +- read_consistency_level + +| Name | read_consistency_level | +| ----------- | ------------------------------------------------------------ | +| Description | The read consistency levelThese consistency levels are currently supported:strong(Default, read from the leader replica)weak(Read from a random replica) | +| Type | String | +| Default | strong | +| Effective | Restart required. | + +- meta_data_cache_enable + +| Name | meta_data_cache_enable | +| ----------- | ------------------------------------------------------------ | +| Description | Whether to cache meta data (BloomFilter, ChunkMetadata and TimeSeriesMetadata) or not. | +| Type | Boolean | +| Default | true | +| Effective | Restart required. | + +- chunk_timeseriesmeta_free_memory_proportion + +| Name | chunk_timeseriesmeta_free_memory_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Read memory Allocation Ratio: BloomFilterCache : ChunkCache : TimeSeriesMetadataCache : Coordinator : Operators : DataExchange : timeIndex in TsFileResourceList : others.The parameter form is a:b:c:d:e:f:g:h, where a, b, c, d, e, f, g and h are integers. for example: 1:1:1:1:1:1:1:1 , 1:100:200:50:200:200:200:50 | +| Type | String | +| Default | 1 : 100 : 200 : 300 : 400 | +| Effective | Restart required. | + +- enable_last_cache + +| Name | enable_last_cache | +| ----------- | ---------------------------- | +| Description | Whether to enable LAST cache | +| Type | Boolean | +| Default | true | +| Effective | Restart required. | + +- mpp_data_exchange_core_pool_size + +| Name | mpp_data_exchange_core_pool_size | +| ----------- | -------------------------------------------- | +| Description | Core size of ThreadPool of MPP data exchange | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- mpp_data_exchange_max_pool_size + +| Name | mpp_data_exchange_max_pool_size | +| ----------- | ------------------------------------------- | +| Description | Max size of ThreadPool of MPP data exchange | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- mpp_data_exchange_keep_alive_time_in_ms + +| Name | mpp_data_exchange_keep_alive_time_in_ms | +| ----------- | --------------------------------------- | +| Description | Max waiting time for MPP data exchange | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- driver_task_execution_time_slice_in_ms + +| Name | driver_task_execution_time_slice_in_ms | +| ----------- | -------------------------------------- | +| Description | The max execution time of a DriverTask | +| Type | int32 | +| Default | 200 | +| Effective | Restart required. | + +- max_tsblock_size_in_bytes + +| Name | max_tsblock_size_in_bytes | +| ----------- | ----------------------------- | +| Description | The max capacity of a TsBlock | +| Type | int32 | +| Default | 131072 | +| Effective | Restart required. | + +- max_tsblock_line_numbers + +| Name | max_tsblock_line_numbers | +| ----------- | ------------------------------------------- | +| Description | The max number of lines in a single TsBlock | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- slow_query_threshold + +| Name | slow_query_threshold | +| ----------- | -------------------------------------- | +| Description | Time cost(ms) threshold for slow query | +| Type | long | +| Default | 10000 | +| Effective | Hot reload | + +- query_timeout_threshold + +| Name | query_timeout_threshold | +| ----------- | ----------------------------------------- | +| Description | The max executing time of query. unit: ms | +| Type | Int32 | +| Default | 60000 | +| Effective | Restart required. | + +- max_allowed_concurrent_queries + +| Name | max_allowed_concurrent_queries | +| ----------- | -------------------------------------------------- | +| Description | The maximum allowed concurrently executing queries | +| Type | Int32 | +| Default | 1000 | +| Effective | Restart required. | + +- query_thread_count + +| Name | query_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | How many threads can concurrently execute query statement. When <= 0, use CPU core number. | +| Type | Int32 | +| Default | 0 | +| Effective | Restart required. | + +- degree_of_query_parallelism + +| Name | degree_of_query_parallelism | +| ----------- | ------------------------------------------------------------ | +| Description | How many pipeline drivers will be created for one fragment instance. When <= 0, use CPU core number / 2. | +| Type | Int32 | +| Default | 0 | +| Effective | Restart required. | + +- mode_map_size_threshold + +| Name | mode_map_size_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | The threshold of count map size when calculating the MODE aggregation function | +| Type | Int32 | +| Default | 10000 | +| Effective | Restart required. | + +- batch_size + +| Name | batch_size | +| ----------- | ------------------------------------------------------------ | +| Description | The amount of data iterate each time in server (the number of data strips, that is, the number of different timestamps.) | +| Type | Int32 | +| Default | 100000 | +| Effective | Restart required. | + +- sort_buffer_size_in_bytes + +| Name | sort_buffer_size_in_bytes | +| ----------- | ------------------------------------------------------------ | +| Description | The memory for external sort in sort operator, when the data size is smaller than sort_buffer_size_in_bytes, the sort operator will use in-memory sort. | +| Type | long | +| Default | 1048576 | +| Effective | Restart required. | + +- merge_threshold_of_explain_analyze + +| Name | merge_threshold_of_explain_analyze | +| ----------- | ------------------------------------------------------------ | +| Description | The threshold of operator count in the result set of EXPLAIN ANALYZE, if the number of operator in the result set is larger than this threshold, operator will be merged. | +| Type | int | +| Default | 10 | +| Effective | Hot reload | + +### TTL Configuration + +- ttl_check_interval + +| Name | ttl_check_interval | +| ----------- | ------------------------------------------------------------ | +| Description | The interval of TTL check task in each database. The TTL check task will inspect and select files with a higher volume of expired data for compaction. Default is 2 hours. | +| Type | int | +| Default | 7200000 | +| Effective | Restart required. | + +- max_expired_time + +| Name | max_expired_time | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum expiring time of device which has a ttl. Default is 1 month.If the data elapsed time (current timestamp minus the maximum data timestamp of the device in the file) of such devices exceeds this value, then the file will be cleaned by compaction. | +| Type | int | +| Default | 2592000000 | +| Effective | Restart required. | + +- expired_data_ratio + +| Name | expired_data_ratio | +| ----------- | ------------------------------------------------------------ | +| Description | The expired device ratio. If the ratio of expired devices in one file exceeds this value, then expired data of this file will be cleaned by compaction. | +| Type | float | +| Default | 0.3 | +| Effective | Restart required. | + +### Storage Engine Configuration + +- timestamp_precision + +| Name | timestamp_precision | +| ----------- | ------------------------------------------------------------ | +| Description | Use this value to set timestamp precision as "ms", "us" or "ns". | +| Type | String | +| Default | ms | +| Effective | Modify before the first startup. | + +- timestamp_precision_check_enabled + +| Name | timestamp_precision_check_enabled | +| ----------- | ------------------------------------------------------------ | +| Description | When the timestamp precision check is enabled, the timestamps those are over 13 digits for ms precision, or over 16 digits for us precision are not allowed to be inserted. | +| Type | Boolean | +| Default | true | +| Effective | Modify before the first startup. | + +- max_waiting_time_when_insert_blocked + +| Name | max_waiting_time_when_insert_blocked | +| ----------- | ------------------------------------------------------------ | +| Description | When the waiting time (in ms) of an inserting exceeds this, throw an exception. 10000 by default. | +| Type | Int32 | +| Default | 10000 | +| Effective | Restart required. | + +- handle_system_error + +| Name | handle_system_error | +| ----------- | -------------------------------------------------------- | +| Description | What will the system do when unrecoverable error occurs. | +| Type | String | +| Default | CHANGE_TO_READ_ONLY | +| Effective | Restart required. | + +- enable_timed_flush_seq_memtable + +| Name | enable_timed_flush_seq_memtable | +| ----------- | --------------------------------------------------- | +| Description | Whether to timed flush sequence tsfiles' memtables. | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- seq_memtable_flush_interval_in_ms + +| Name | seq_memtable_flush_interval_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | If a memTable's last update time is older than current time minus this, the memtable will be flushed to disk. | +| Type | long | +| Default | 600000 | +| Effective | Hot reload | + +- seq_memtable_flush_check_interval_in_ms + +| Name | seq_memtable_flush_check_interval_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | The interval to check whether sequence memtables need flushing. | +| Type | long | +| Default | 30000 | +| Effective | Hot reload | + +- enable_timed_flush_unseq_memtable + +| Name | enable_timed_flush_unseq_memtable | +| ----------- | ----------------------------------------------------- | +| Description | Whether to timed flush unsequence tsfiles' memtables. | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- unseq_memtable_flush_interval_in_ms + +| Name | unseq_memtable_flush_interval_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | If a memTable's last update time is older than current time minus this, the memtable will be flushed to disk. | +| Type | long | +| Default | 600000 | +| Effective | Hot reload | + +- unseq_memtable_flush_check_interval_in_ms + +| Name | unseq_memtable_flush_check_interval_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | The interval to check whether unsequence memtables need flushing. | +| Type | long | +| Default | 30000 | +| Effective | Hot reload | + +- tvlist_sort_algorithm + +| Name | tvlist_sort_algorithm | +| ----------- | ------------------------------------------------- | +| Description | The sort algorithms used in the memtable's TVList | +| Type | String | +| Default | TIM | +| Effective | Restart required. | + +- avg_series_point_number_threshold + +| Name | avg_series_point_number_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | When the average point number of timeseries in memtable exceeds this, the memtable is flushed to disk. | +| Type | int32 | +| Default | 100000 | +| Effective | Restart required. | + +- flush_thread_count + +| Name | flush_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | How many threads can concurrently flush. When <= 0, use CPU core number. | +| Type | int32 | +| Default | 0 | +| Effective | Restart required. | + +- enable_partial_insert + +| Name | enable_partial_insert | +| ----------- | ------------------------------------------------------------ | +| Description | In one insert (one device, one timestamp, multiple measurements), if enable partial insert, one measurement failure will not impact other measurements | +| Type | Boolean | +| Default | true | +| Effective | Restart required. | + +- recovery_log_interval_in_ms + +| Name | recovery_log_interval_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | the interval to log recover progress of each vsg when starting iotdb | +| Type | Int32 | +| Default | 5000 | +| Effective | Restart required. | + +- 0.13_data_insert_adapt + +| Name | 0.13_data_insert_adapt | +| ----------- | ------------------------------------------------------------ | +| Description | If using a v0.13 client to insert data, please set this configuration to true. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- enable_tsfile_validation + +| Name | enable_tsfile_validation | +| ----------- | ------------------------------------------------------------ | +| Description | Verify that TSfiles generated by Flush, Load, and Compaction are correct. | +| Type | boolean | +| Default | false | +| Effective | Hot reload | + +- tier_ttl_in_ms + +| Name | tier_ttl_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier. | +| Type | long | +| Default | -1 | +| Effective | Restart required. | + +### Compaction Configurations + +- enable_seq_space_compaction + +| Name | enable_seq_space_compaction | +| ----------- | ---------------------------------------------------------- | +| Description | sequence space compaction: only compact the sequence files | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- enable_unseq_space_compaction + +| Name | enable_unseq_space_compaction | +| ----------- | ------------------------------------------------------------ | +| Description | unsequence space compaction: only compact the unsequence files | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- enable_cross_space_compaction + +| Name | enable_cross_space_compaction | +| ----------- | ------------------------------------------------------------ | +| Description | cross space compaction: compact the unsequence files into the overlapped sequence files | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- enable_auto_repair_compaction + +| Name | enable_auto_repair_compaction | +| ----------- | ---------------------------------------------- | +| Description | enable auto repair unsorted file by compaction | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- cross_selector + +| Name | cross_selector | +| ----------- | ------------------------------------------- | +| Description | the selector of cross space compaction task | +| Type | String | +| Default | rewrite | +| Effective | Restart required. | + +- cross_performer + +| Name | cross_performer | +| ----------- | ------------------------------------------------------- | +| Description | the compaction performer of cross space compaction task | +| Type | String | +| Default | fast | +| Effective | Restart required. | + +- inner_seq_selector + +| Name | inner_seq_selector | +| ----------- | ---------------------------------------------------- | +| Description | the selector of inner sequence space compaction task | +| Type | String | +| Default | size_tiered_multi_target | +| Effective | Hot reload | + +- inner_seq_performer + +| Name | inner_seq_performer | +| ----------- | ----------------------------------------------------- | +| Description | the performer of inner sequence space compaction task | +| Type | String | +| Default | read_chunk | +| Effective | Restart required. | + +- inner_unseq_selector + +| Name | inner_unseq_selector | +| ----------- | ------------------------------------------------------ | +| Description | the selector of inner unsequence space compaction task | +| Type | String | +| Default | size_tiered_multi_target | +| Effective | Hot reload | + +- inner_unseq_performer + +| Name | inner_unseq_performer | +| ----------- | ------------------------------------------------------- | +| Description | the performer of inner unsequence space compaction task | +| Type | String | +| Default | fast | +| Effective | Restart required. | + +- compaction_priority + +| Name | compaction_priority | +| ----------- | ------------------------------------------------------------ | +| Description | The priority of compaction executionINNER_CROSS: prioritize inner space compaction, reduce the number of files firstCROSS_INNER: prioritize cross space compaction, eliminate the unsequence files firstBALANCE: alternate two compaction types | +| Type | String | +| Default | INNER_CROSS | +| Effective | 重启服务生效 | + +- candidate_compaction_task_queue_size + +| Name | candidate_compaction_task_queue_size | +| ----------- | -------------------------------------------- | +| Description | The size of candidate compaction task queue. | +| Type | int32 | +| Default | 50 | +| Effective | Restart required. | + +- target_compaction_file_size + +| Name | target_compaction_file_size | +| ----------- | ------------------------------------------------------------ | +| Description | This parameter is used in two places:The target tsfile size of inner space compaction.The candidate size of seq tsfile in cross space compaction will be smaller than target_compaction_file_size * 1.5.In most cases, the target file size of cross compaction won't exceed this threshold, and if it does, it will not be much larger than it. | +| Type | Int64 | +| Default | 2147483648 | +| Effective | Hot reload | + +- inner_compaction_total_file_size_threshold + +| Name | inner_compaction_total_file_size_threshold | +| ----------- | ---------------------------------------------------- | +| Description | The total file size limit in inner space compaction. | +| Type | int64 | +| Default | 10737418240 | +| Effective | Hot reload | + +- inner_compaction_total_file_num_threshold + +| Name | inner_compaction_total_file_num_threshold | +| ----------- | --------------------------------------------------- | +| Description | The total file num limit in inner space compaction. | +| Type | int32 | +| Default | 100 | +| Effective | Hot reload | + +- max_level_gap_in_inner_compaction + +| Name | max_level_gap_in_inner_compaction | +| ----------- | ----------------------------------------------- | +| Description | The max level gap in inner compaction selection | +| Type | int32 | +| Default | 2 | +| Effective | Hot reload | + +- target_chunk_size + +| Name | target_chunk_size | +| ----------- | ------------------------------------------------------------ | +| Description | The target chunk size in compaction and when memtable reaches this threshold, flush the memtable to disk. | +| Type | Int64 | +| Default | 1048576 | +| Effective | Restart required. | + +- target_chunk_point_num + +| Name | target_chunk_point_num | +| ----------- | ------------------------------------------------ | +| Description | The target point nums in one chunk in compaction | +| Type | int32 | +| Default | 100000 | +| Effective | Restart required. | + +- chunk_size_lower_bound_in_compaction + +| Name | chunk_size_lower_bound_in_compaction | +| ----------- | ------------------------------------------------------------ | +| Description | If the chunk size is lower than this threshold, it will be deserialized into points | +| Type | Int64 | +| Default | 128 | +| Effective | Restart required. | + +- chunk_point_num_lower_bound_in_compaction + +| Name | chunk_point_num_lower_bound_in_compaction | +| ----------- | ------------------------------------------------------------ | +| Description | If the chunk point num is lower than this threshold, it will be deserialized into points | +| Type | int32 | +| Default | 100 | +| Effective | Restart required. | + +- inner_compaction_candidate_file_num + +| Name | inner_compaction_candidate_file_num | +| ----------- | ------------------------------------------------------------ | +| Description | The file num requirement when selecting inner space compaction candidate files | +| Type | int32 | +| Default | 30 | +| Effective | Hot reload | + +- max_cross_compaction_candidate_file_num + +| Name | max_cross_compaction_candidate_file_num | +| ----------- | ------------------------------------------------------------ | +| Description | The max file when selecting cross space compaction candidate files | +| Type | int32 | +| Default | 500 | +| Effective | Hot reload | + +- max_cross_compaction_candidate_file_size + +| Name | max_cross_compaction_candidate_file_size | +| ----------- | ------------------------------------------------------------ | +| Description | The max total size when selecting cross space compaction candidate files | +| Type | Int64 | +| Default | 5368709120 | +| Effective | Hot reload | + +- min_cross_compaction_unseq_file_level + +| Name | min_cross_compaction_unseq_file_level | +| ----------- | ------------------------------------------------------------ | +| Description | The min inner compaction level of unsequence file which can be selected as candidate | +| Type | int32 | +| Default | 1 | +| Effective | Hot reload | + +- compaction_thread_count + +| Name | compaction_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | How many threads will be set up to perform compaction, 10 by default. | +| Type | int32 | +| Default | 10 | +| Effective | Hot reload | + +- compaction_max_aligned_series_num_in_one_batch + +| Name | compaction_max_aligned_series_num_in_one_batch | +| ----------- | ------------------------------------------------------------ | +| Description | How many chunk will be compacted in aligned series compaction, 10 by default. | +| Type | int32 | +| Default | 10 | +| Effective | Hot reload | + +- compaction_schedule_interval_in_ms + +| Name | compaction_schedule_interval_in_ms | +| ----------- | ---------------------------------------- | +| Description | The interval of compaction task schedule | +| Type | Int64 | +| Default | 60000 | +| Effective | Restart required. | + +- compaction_write_throughput_mb_per_sec + +| Name | compaction_write_throughput_mb_per_sec | +| ----------- | -------------------------------------------------------- | +| Description | The limit of write throughput merge can reach per second | +| Type | int32 | +| Default | 16 | +| Effective | Restart required. | + +- compaction_read_throughput_mb_per_sec + +| Name | compaction_read_throughput_mb_per_sec | +| ----------- | ------------------------------------------------------- | +| Description | The limit of read throughput merge can reach per second | +| Type | int32 | +| Default | 0 | +| Effective | Hot reload | + +- compaction_read_operation_per_sec + +| Name | compaction_read_operation_per_sec | +| ----------- | ------------------------------------------------------ | +| Description | The limit of read operation merge can reach per second | +| Type | int32 | +| Default | 0 | +| Effective | Hot reload | + +- sub_compaction_thread_count + +| Name | sub_compaction_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | The number of sub compaction threads to be set up to perform compaction. | +| Type | int32 | +| Default | 4 | +| Effective | Hot reload | + +- inner_compaction_task_selection_disk_redundancy + +| Name | inner_compaction_task_selection_disk_redundancy | +| ----------- | ------------------------------------------------------------ | +| Description | Redundancy value of disk availability, only use for inner compaction. | +| Type | double | +| Default | 0.05 | +| Effective | Hot reload | + +- inner_compaction_task_selection_mods_file_threshold + +| Name | inner_compaction_task_selection_mods_file_threshold | +| ----------- | -------------------------------------------------------- | +| Description | Mods file size threshold, only use for inner compaction. | +| Type | long | +| Default | 131072 | +| Effective | Hot reload | + +- compaction_schedule_thread_num + +| Name | compaction_schedule_thread_num | +| ----------- | ------------------------------------------------------------ | +| Description | The number of threads to be set up to select compaction task. | +| Type | int32 | +| Default | 4 | +| Effective | Hot reload | + +### Write Ahead Log Configuration + +- wal_mode + +| Name | wal_mode | +| ----------- | ------------------------------------------------------------ | +| Description | The details of these three modes are as follows:DISABLE: the system will disable wal.SYNC: the system will submit wal synchronously, write request will not return until its wal is fsynced to the disk successfully.ASYNC: the system will submit wal asynchronously, write request will return immediately no matter its wal is fsynced to the disk successfully. | +| Type | String | +| Default | ASYNC | +| Effective | Restart required. | + +- max_wal_nodes_num + +| Name | max_wal_nodes_num | +| ----------- | ------------------------------------------------------------ | +| Description | each node corresponds to one wal directory The default value 0 means the number is determined by the system, the number is in the range of [data region num / 2, data region num]. | +| Type | int32 | +| Default | 0 | +| Effective | Restart required. | + +- wal_async_mode_fsync_delay_in_ms + +| Name | wal_async_mode_fsync_delay_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | Duration a wal flush operation will wait before calling fsync in the async mode | +| Type | int32 | +| Default | 1000 | +| Effective | Hot reload | + +- wal_sync_mode_fsync_delay_in_ms + +| Name | wal_sync_mode_fsync_delay_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | Duration a wal flush operation will wait before calling fsync in the sync mode | +| Type | int32 | +| Default | 3 | +| Effective | Hot reload | + +- wal_buffer_size_in_byte + +| Name | wal_buffer_size_in_byte | +| ----------- | ---------------------------- | +| Description | Buffer size of each wal node | +| Type | int32 | +| Default | 33554432 | +| Effective | Restart required. | + +- wal_buffer_queue_capacity + +| Name | wal_buffer_queue_capacity | +| ----------- | --------------------------------- | +| Description | Buffer capacity of each wal queue | +| Type | int32 | +| Default | 500 | +| Effective | Restart required. | + +- wal_file_size_threshold_in_byte + +| Name | wal_file_size_threshold_in_byte | +| ----------- | ------------------------------- | +| Description | Size threshold of each wal file | +| Type | int32 | +| Default | 31457280 | +| Effective | Hot reload | + +- wal_min_effective_info_ratio + +| Name | wal_min_effective_info_ratio | +| ----------- | --------------------------------------------------- | +| Description | Minimum ratio of effective information in wal files | +| Type | double | +| Default | 0.1 | +| Effective | Hot reload | + +- wal_memtable_snapshot_threshold_in_byte + +| Name | wal_memtable_snapshot_threshold_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | MemTable size threshold for triggering MemTable snapshot in wal | +| Type | int64 | +| Default | 8388608 | +| Effective | Hot reload | + +- max_wal_memtable_snapshot_num + +| Name | max_wal_memtable_snapshot_num | +| ----------- | ------------------------------------- | +| Description | MemTable's max snapshot number in wal | +| Type | int32 | +| Default | 1 | +| Effective | Hot reload | + +- delete_wal_files_period_in_ms + +| Name | delete_wal_files_period_in_ms | +| ----------- | ----------------------------------------------------------- | +| Description | The period when outdated wal files are periodically deleted | +| Type | int64 | +| Default | 20000 | +| Effective | Hot reload | + +- wal_throttle_threshold_in_byte + +| Name | wal_throttle_threshold_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | The minimum size of wal files when throttle down in IoTConsensus | +| Type | long | +| Default | 53687091200 | +| Effective | Hot reload | + +- iot_consensus_cache_window_time_in_ms + +| Name | iot_consensus_cache_window_time_in_ms | +| ----------- | ------------------------------------------------ | +| Description | Maximum wait time of write cache in IoTConsensus | +| Type | long | +| Default | -1 | +| Effective | Hot reload | + +- enable_wal_compression + +| Name | iot_consensus_cache_window_time_in_ms | +| ----------- | ------------------------------------- | +| Description | Enable Write Ahead Log compression. | +| Type | boolean | +| Default | true | +| Effective | Hot reload | + +### **IoTConsensus Configuration** + +- data_region_iot_max_log_entries_num_per_batch + +| Name | data_region_iot_max_log_entries_num_per_batch | +| ----------- | ------------------------------------------------- | +| Description | The maximum log entries num in IoTConsensus Batch | +| Type | int32 | +| Default | 1024 | +| Effective | Restart required. | + +- data_region_iot_max_size_per_batch + +| Name | data_region_iot_max_size_per_batch | +| ----------- | -------------------------------------- | +| Description | The maximum size in IoTConsensus Batch | +| Type | int32 | +| Default | 16777216 | +| Effective | Restart required. | + +- data_region_iot_max_pending_batches_num + +| Name | data_region_iot_max_pending_batches_num | +| ----------- | ----------------------------------------------- | +| Description | The maximum pending batches num in IoTConsensus | +| Type | int32 | +| Default | 5 | +| Effective | Restart required. | + +- data_region_iot_max_memory_ratio_for_queue + +| Name | data_region_iot_max_memory_ratio_for_queue | +| ----------- | -------------------------------------------------- | +| Description | The maximum memory ratio for queue in IoTConsensus | +| Type | double | +| Default | 0.6 | +| Effective | Restart required. | + +- region_migration_speed_limit_bytes_per_second + +| Name | region_migration_speed_limit_bytes_per_second | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum transit size in byte per second for region migration | +| Type | long | +| Default | 33554432 | +| Effective | Restart required. | + +### TsFile Configurations + +- group_size_in_byte + +| Name | group_size_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum number of bytes written to disk each time the data in memory is written to disk | +| Type | int32 | +| Default | 134217728 | +| Effective | Hot reload | + +- page_size_in_byte + +| Name | page_size_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | The memory size for each series writer to pack page, default value is 64KB | +| Type | int32 | +| Default | 65536 | +| Effective | Hot reload | + +- max_number_of_points_in_page + +| Name | max_number_of_points_in_page | +| ----------- | ------------------------------------------- | +| Description | The maximum number of data points in a page | +| Type | int32 | +| Default | 10000 | +| Effective | Hot reload | + +- pattern_matching_threshold + +| Name | pattern_matching_threshold | +| ----------- | ------------------------------------------- | +| Description | The threshold for pattern matching in regex | +| Type | int32 | +| Default | 1000000 | +| Effective | Hot reload | + +- float_precision + +| Name | float_precision | +| ----------- | ------------------------------------------------------------ | +| Description | Floating-point precision of query results.Only effective for RLE and TS_2DIFF encodings.Due to the limitation of machine precision, some values may not be interpreted strictly. | +| Type | int32 | +| Default | 2 | +| Effective | Hot reload | + +- value_encoder + +| Name | value_encoder | +| ----------- | ------------------------------------------------------------ | +| Description | Encoder of value series. default value is PLAIN. | +| Type | For int, long data type, also supports TS_2DIFF and RLE(run-length encoding), GORILLA and ZIGZAG. | +| Default | PLAIN | +| Effective | Hot reload | + +- compressor + +| Name | compressor | +| ----------- | ------------------------------------------------------------ | +| Description | Compression configuration And it is also used as the default compressor of time column in aligned timeseries. | +| Type | Data compression method, supports UNCOMPRESSED, SNAPPY, ZSTD, LZMA2 or LZ4. Default value is LZ4 | +| Default | LZ4 | +| Effective | Hot reload | + +- encrypt_flag + +| Name | compressor | +| ----------- | ---------------------- | +| Description | Enable data encryption | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- encrypt_type + +| Name | compressor | +| ----------- | ------------------------------------- | +| Description | The method of data encrytion | +| Type | String | +| Default | org.apache.tsfile.encrypt.UNENCRYPTED | +| Effective | Restart required. | + +- encrypt_key_path + +| Name | encrypt_key_path | +| ----------- | ----------------------------------- | +| Description | The path of key for data encryption | +| Type | String | +| Default | None | +| Effective | Restart required. | + +### Authorization Configuration + +- authorizer_provider_class + +| Name | authorizer_provider_class | +| ----------- | ------------------------------------------------------------ | +| Description | which class to serve for authorization. | +| Type | String | +| Default | org.apache.iotdb.commons.auth.authorizer.LocalFileAuthorizer | +| Effective | Restart required. | +| 其他可选值 | org.apache.iotdb.commons.auth.authorizer.OpenIdAuthorizer | + +- openID_url + +| Name | openID_url | +| ----------- | ------------------------------------------------------------ | +| Description | The url of openID server If OpenIdAuthorizer is enabled, then openID_url must be set. | +| Type | String(a http link) | +| Default | None | +| Effective | Restart required. | + +- iotdb_server_encrypt_decrypt_provider + +| Name | iotdb_server_encrypt_decrypt_provider | +| ----------- | ------------------------------------------------------------ | +| Description | encryption provider class | +| Type | String | +| Default | org.apache.iotdb.commons.security.encrypt.MessageDigestEncrypt | +| Effective | Modify before the first startup. | + +- iotdb_server_encrypt_decrypt_provider_parameter + +| Name | iotdb_server_encrypt_decrypt_provider_parameter | +| ----------- | ----------------------------------------------- | +| Description | encryption provided class parameter | +| Type | String | +| Default | None | +| Effective | Modify before the first startup. | + +- author_cache_size + +| Name | author_cache_size | +| ----------- | --------------------------- | +| Description | Cache size of user and role | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- author_cache_expire_time + +| Name | author_cache_expire_time | +| ----------- | ---------------------------------- | +| Description | Cache expire time of user and role | +| Type | int32 | +| Default | 30 | +| Effective | Restart required. | + +### UDF Configuration + +- udf_initial_byte_array_length_for_memory_control + +| Name | udf_initial_byte_array_length_for_memory_control | +| ----------- | ------------------------------------------------------------ | +| Description | Used to estimate the memory usage of text fields in a UDF query.It is recommended to set this value to be slightly larger than the average length of all text records. | +| Type | int32 | +| Default | 48 | +| Effective | Restart required. | + +- udf_memory_budget_in_mb + +| Name | udf_memory_budget_in_mb | +| ----------- | ------------------------------------------------------------ | +| Description | How much memory may be used in ONE UDF query (in MB). The upper limit is 20% of allocated memory for read. | +| Type | Float | +| Default | 30.0 | +| Effective | Restart required. | + +- udf_reader_transformer_collector_memory_proportion + +| Name | udf_reader_transformer_collector_memory_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | UDF memory allocation ratio.The parameter form is a:b:c, where a, b, and c are integers. | +| Type | String | +| Default | 1:1:1 | +| Effective | Restart required. | + +- udf_lib_dir + +| Name | udf_lib_dir | +| ----------- | ---------------------------- | +| Description | the udf lib directory | +| Type | String | +| Default | ext/udf(Windows:ext\\udf) | +| Effective | Restart required. | + +### Trigger Configuration + +- trigger_lib_dir + +| Name | trigger_lib_dir | +| ----------- | ------------------------- | +| Description | the trigger lib directory | +| Type | String | +| Default | ext/trigger | +| Effective | Restart required. | + +- stateful_trigger_retry_num_when_not_found + +| Name | stateful_trigger_retry_num_when_not_found | +| ----------- | ------------------------------------------------------------ | +| Description | How many times will we retry to found an instance of stateful trigger on DataNodes | +| Type | Int32 | +| Default | 3 | +| Effective | Restart required. | + +### **Select-Into Configuration** + +- into_operation_buffer_size_in_byte + +| Name | into_operation_buffer_size_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum memory occupied by the data to be written when executing select-into statements. | +| Type | long | +| Default | 104857600 | +| Effective | Hot reload | + +- select_into_insert_tablet_plan_row_limit + +| Name | select_into_insert_tablet_plan_row_limit | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum number of rows can be processed in insert-tablet-plan when executing select-into statements. | +| Type | int32 | +| Default | 10000 | +| Effective | Hot reload | + +- into_operation_execution_thread_count + +| Name | into_operation_execution_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | The number of threads in the thread pool that execute insert-tablet tasks | +| Type | int32 | +| Default | 2 | +| Effective | Restart required. | + +### Continuous Query Configuration + +- continuous_query_submit_thread_count + +| Name | continuous_query_execution_thread | +| ----------- | ------------------------------------------------------------ | +| Description | The number of threads in the scheduled thread pool that submit continuous query tasks periodically | +| Type | int32 | +| Default | 2 | +| Effective | Restart required. | + +- continuous_query_min_every_interval_in_ms + +| Name | continuous_query_min_every_interval_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | The minimum value of the continuous query execution time interval | +| Type | long (duration) | +| Default | 1000 | +| Effective | Restart required. | + +### Pipe Configuration + +- pipe_lib_dir + +| Name | pipe_lib_dir | +| ----------- | ----------------------- | +| Description | the pipe lib directory. | +| Type | string | +| Default | ext/pipe | +| Effective | Not support modify | + +- pipe_subtask_executor_max_thread_num + +| Name | pipe_subtask_executor_max_thread_num | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum number of threads that can be used to execute the pipe subtasks in PipeSubtaskExecutor. The actual value will be min(pipe_subtask_executor_max_thread_num, max(1, CPU core number / 2)). | +| Type | int | +| Default | 5 | +| Effective | Restart required. | + +- pipe_sink_timeout_ms + +| Name | pipe_sink_timeout_ms | +| ----------- | ------------------------------------------------------------ | +| Description | The connection timeout (in milliseconds) for the thrift client. | +| Type | int | +| Default | 900000 | +| Effective | Restart required. | + +- pipe_sink_selector_number + +| Name | pipe_sink_selector_number | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum number of selectors that can be used in the sink.Recommend to set this value to less than or equal to pipe_sink_max_client_number. | +| Type | int | +| Default | 4 | +| Effective | Restart required. | + +- pipe_sink_max_client_number + +| Name | pipe_sink_max_client_number | +| ----------- | ----------------------------------------------------------- | +| Description | The maximum number of clients that can be used in the sink. | +| Type | int | +| Default | 16 | +| Effective | Restart required. | + +- pipe_air_gap_receiver_enabled + +| Name | pipe_air_gap_receiver_enabled | +| ----------- | ------------------------------------------------------------ | +| Description | Whether to enable receiving pipe data through air gap.The receiver can only return 0 or 1 in TCP mode to indicate whether the data is received successfully. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- pipe_air_gap_receiver_port + +| Name | pipe_air_gap_receiver_port | +| ----------- | ------------------------------------------------------------ | +| Description | The port for the server to receive pipe data through air gap. | +| Type | int | +| Default | 9780 | +| Effective | Restart required. | + +- pipe_all_sinks_rate_limit_bytes_per_second + +| Name | pipe_all_sinks_rate_limit_bytes_per_second | +| ----------- | ------------------------------------------------------------ | +| Description | The total bytes that all pipe sinks can transfer per second.When given a value less than or equal to 0, it means no limit. default value is -1, which means no limit. | +| Type | double | +| Default | -1 | +| Effective | Hot reload | + +### RatisConsensus Configuration + +- config_node_ratis_log_appender_buffer_size_max + +| Name | config_node_ratis_log_appender_buffer_size_max | +| ----------- | ------------------------------------------------------------ | +| Description | max payload size for a single log-sync-RPC from leader to follower of ConfigNode (in byte, by default 16MB) | +| Type | int32 | +| Default | 16777216 | +| Effective | Restart required. | + +- schema_region_ratis_log_appender_buffer_size_max + +| Name | schema_region_ratis_log_appender_buffer_size_max | +| ----------- | ------------------------------------------------------------ | +| Description | max payload size for a single log-sync-RPC from leader to follower of SchemaRegion (in byte, by default 16MB) | +| Type | int32 | +| Default | 16777216 | +| Effective | Restart required. | + +- data_region_ratis_log_appender_buffer_size_max + +| Name | data_region_ratis_log_appender_buffer_size_max | +| ----------- | ------------------------------------------------------------ | +| Description | max payload size for a single log-sync-RPC from leader to follower of DataRegion (in byte, by default 16MB) | +| Type | int32 | +| Default | 16777216 | +| Effective | Restart required. | + +- config_node_ratis_snapshot_trigger_threshold + +| Name | config_node_ratis_snapshot_trigger_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | max numbers of snapshot_trigger_threshold logs to trigger a snapshot of Confignode | +| Type | int32 | +| Default | 400,000 | +| Effective | Restart required. | + +- schema_region_ratis_snapshot_trigger_threshold + +| Name | schema_region_ratis_snapshot_trigger_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | max numbers of snapshot_trigger_threshold logs to trigger a snapshot of SchemaRegion | +| Type | int32 | +| Default | 400,000 | +| Effective | Restart required. | + +- data_region_ratis_snapshot_trigger_threshold + +| Name | data_region_ratis_snapshot_trigger_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | max numbers of snapshot_trigger_threshold logs to trigger a snapshot of DataRegion | +| Type | int32 | +| Default | 400,000 | +| Effective | Restart required. | + +- config_node_ratis_log_unsafe_flush_enable + +| Name | config_node_ratis_log_unsafe_flush_enable | +| ----------- | ------------------------------------------------------ | +| Description | Is confignode allowed flushing Raft Log asynchronously | +| Type | boolean | +| Default | false | +| Effective | Restart required. | + +- schema_region_ratis_log_unsafe_flush_enable + +| Name | schema_region_ratis_log_unsafe_flush_enable | +| ----------- | -------------------------------------------------------- | +| Description | Is schemaregion allowed flushing Raft Log asynchronously | +| Type | boolean | +| Default | false | +| Effective | Restart required. | + +- data_region_ratis_log_unsafe_flush_enable + +| Name | data_region_ratis_log_unsafe_flush_enable | +| ----------- | ------------------------------------------------------ | +| Description | Is dataregion allowed flushing Raft Log asynchronously | +| Type | boolean | +| Default | false | +| Effective | Restart required. | + +- config_node_ratis_log_segment_size_max_in_byte + +| Name | config_node_ratis_log_segment_size_max_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | max capacity of a RaftLog segment file of confignode (in byte, by default 24MB) | +| Type | int32 | +| Default | 25165824 | +| Effective | Restart required. | + +- schema_region_ratis_log_segment_size_max_in_byte + +| Name | schema_region_ratis_log_segment_size_max_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | max capacity of a RaftLog segment file of schemaregion (in byte, by default 24MB) | +| Type | int32 | +| Default | 25165824 | +| Effective | Restart required. | + +- data_region_ratis_log_segment_size_max_in_byte + +| Name | data_region_ratis_log_segment_size_max_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | max capacity of a RaftLog segment file of dataregion(in byte, by default 24MB) | +| Type | int32 | +| Default | 25165824 | +| Effective | Restart required. | + +- config_node_simple_consensus_log_segment_size_max_in_byte + +| Name | data_region_ratis_log_segment_size_max_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | max capacity of a simple log segment file of confignode(in byte, by default 24MB) | +| Type | int32 | +| Default | 25165824 | +| Effective | Restart required. | + +- config_node_ratis_grpc_flow_control_window + +| Name | config_node_ratis_grpc_flow_control_window | +| ----------- | ---------------------------------------------------------- | +| Description | confignode flow control window for ratis grpc log appender | +| Type | int32 | +| Default | 4194304 | +| Effective | Restart required. | + +- schema_region_ratis_grpc_flow_control_window + +| Name | schema_region_ratis_grpc_flow_control_window | +| ----------- | ------------------------------------------------------------ | +| Description | schema region flow control window for ratis grpc log appender | +| Type | int32 | +| Default | 4194304 | +| Effective | Restart required. | + +- data_region_ratis_grpc_flow_control_window + +| Name | data_region_ratis_grpc_flow_control_window | +| ----------- | ----------------------------------------------------------- | +| Description | data region flow control window for ratis grpc log appender | +| Type | int32 | +| Default | 4194304 | +| Effective | Restart required. | + +- config_node_ratis_grpc_leader_outstanding_appends_max + +| Name | config_node_ratis_grpc_leader_outstanding_appends_max | +| ----------- | ----------------------------------------------------- | +| Description | config node grpc line concurrency threshold | +| Type | int32 | +| Default | 128 | +| Effective | Restart required. | + +- schema_region_ratis_grpc_leader_outstanding_appends_max + +| Name | schema_region_ratis_grpc_leader_outstanding_appends_max | +| ----------- | ------------------------------------------------------- | +| Description | schema region grpc line concurrency threshold | +| Type | int32 | +| Default | 128 | +| Effective | Restart required. | + +- data_region_ratis_grpc_leader_outstanding_appends_max + +| Name | data_region_ratis_grpc_leader_outstanding_appends_max | +| ----------- | ----------------------------------------------------- | +| Description | data region grpc line concurrency threshold | +| Type | int32 | +| Default | 128 | +| Effective | Restart required. | + +- config_node_ratis_log_force_sync_num + +| Name | config_node_ratis_log_force_sync_num | +| ----------- | ------------------------------------ | +| Description | config node fsync threshold | +| Type | int32 | +| Default | 128 | +| Effective | Restart required. | + +- schema_region_ratis_log_force_sync_num + +| Name | schema_region_ratis_log_force_sync_num | +| ----------- | -------------------------------------- | +| Description | schema region fsync threshold | +| Type | int32 | +| Default | 128 | +| Effective | Restart required. | + +- data_region_ratis_log_force_sync_num + +| Name | data_region_ratis_log_force_sync_num | +| ----------- | ------------------------------------ | +| Description | data region fsync threshold | +| Type | int32 | +| Default | 128 | +| Effective | Restart required. | + +- config_node_ratis_rpc_leader_election_timeout_min_ms + +| Name | config_node_ratis_rpc_leader_election_timeout_min_ms | +| ----------- | ---------------------------------------------------- | +| Description | confignode leader min election timeout | +| Type | int32 | +| Default | 2000ms | +| Effective | Restart required. | + +- schema_region_ratis_rpc_leader_election_timeout_min_ms + +| Name | schema_region_ratis_rpc_leader_election_timeout_min_ms | +| ----------- | ------------------------------------------------------ | +| Description | schema region leader min election timeout | +| Type | int32 | +| Default | 2000ms | +| Effective | Restart required. | + +- data_region_ratis_rpc_leader_election_timeout_min_ms + +| Name | data_region_ratis_rpc_leader_election_timeout_min_ms | +| ----------- | ---------------------------------------------------- | +| Description | data region leader min election timeout | +| Type | int32 | +| Default | 2000ms | +| Effective | Restart required. | + +- config_node_ratis_rpc_leader_election_timeout_max_ms + +| Name | config_node_ratis_rpc_leader_election_timeout_max_ms | +| ----------- | ---------------------------------------------------- | +| Description | confignode leader max election timeout | +| Type | int32 | +| Default | 4000ms | +| Effective | Restart required. | + +- schema_region_ratis_rpc_leader_election_timeout_max_ms + +| Name | schema_region_ratis_rpc_leader_election_timeout_max_ms | +| ----------- | ------------------------------------------------------ | +| Description | schema region leader max election timeout | +| Type | int32 | +| Default | 4000ms | +| Effective | Restart required. | + +- data_region_ratis_rpc_leader_election_timeout_max_ms + +| Name | data_region_ratis_rpc_leader_election_timeout_max_ms | +| ----------- | ---------------------------------------------------- | +| Description | data region leader max election timeout | +| Type | int32 | +| Default | 4000ms | +| Effective | Restart required. | + +- config_node_ratis_request_timeout_ms + +| Name | config_node_ratis_request_timeout_ms | +| ----------- | --------------------------------------- | +| Description | confignode ratis client retry threshold | +| Type | int32 | +| Default | 10000 | +| Effective | Restart required. | + +- schema_region_ratis_request_timeout_ms + +| Name | schema_region_ratis_request_timeout_ms | +| ----------- | ------------------------------------------ | +| Description | schema region ratis client retry threshold | +| Type | int32 | +| Default | 10000 | +| Effective | Restart required. | + +- data_region_ratis_request_timeout_ms + +| Name | data_region_ratis_request_timeout_ms | +| ----------- | ---------------------------------------- | +| Description | data region ratis client retry threshold | +| Type | int32 | +| Default | 10000 | +| Effective | Restart required. | + +- config_node_ratis_max_retry_attempts + +| Name | config_node_ratis_max_retry_attempts | +| ----------- | ------------------------------------ | +| Description | confignode ratis client retry times | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- config_node_ratis_initial_sleep_time_ms + +| Name | config_node_ratis_initial_sleep_time_ms | +| ----------- | ------------------------------------------ | +| Description | confignode ratis client initial sleep time | +| Type | int32 | +| Default | 100ms | +| Effective | Restart required. | + +- config_node_ratis_max_sleep_time_ms + +| Name | config_node_ratis_max_sleep_time_ms | +| ----------- | -------------------------------------------- | +| Description | confignode ratis client max retry sleep time | +| Type | int32 | +| Default | 10000 | +| Effective | Restart required. | + +- schema_region_ratis_max_retry_attempts + +| Name | schema_region_ratis_max_retry_attempts | +| ----------- | ------------------------------------------ | +| Description | schema region ratis client max retry times | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- schema_region_ratis_initial_sleep_time_ms + +| Name | schema_region_ratis_initial_sleep_time_ms | +| ----------- | ------------------------------------------ | +| Description | schema region ratis client init sleep time | +| Type | int32 | +| Default | 100ms | +| Effective | Restart required. | + +- schema_region_ratis_max_sleep_time_ms + +| Name | schema_region_ratis_max_sleep_time_ms | +| ----------- | ----------------------------------------- | +| Description | schema region ratis client max sleep time | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- data_region_ratis_max_retry_attempts + +| Name | data_region_ratis_max_retry_attempts | +| ----------- | --------------------------------------------- | +| Description | data region ratis client max retry sleep time | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- data_region_ratis_initial_sleep_time_ms + +| Name | data_region_ratis_initial_sleep_time_ms | +| ----------- | ---------------------------------------- | +| Description | data region ratis client init sleep time | +| Type | int32 | +| Default | 100ms | +| Effective | Restart required. | + +- data_region_ratis_max_sleep_time_ms + +| Name | data_region_ratis_max_sleep_time_ms | +| ----------- | --------------------------------------------- | +| Description | data region ratis client max retry sleep time | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- ratis_first_election_timeout_min_ms + +| Name | ratis_first_election_timeout_min_ms | +| ----------- | ----------------------------------- | +| Description | Ratis first election min timeout | +| Type | int64 | +| Default | 50 (ms) | +| Effective | Restart required. | + +- ratis_first_election_timeout_max_ms + +| Name | ratis_first_election_timeout_max_ms | +| ----------- | ----------------------------------- | +| Description | Ratis first election max timeout | +| Type | int64 | +| Default | 150 (ms) | +| Effective | Restart required. | + +- config_node_ratis_preserve_logs_num_when_purge + +| Name | config_node_ratis_preserve_logs_num_when_purge | +| ----------- | ------------------------------------------------------------ | +| Description | confignode snapshot preserves certain logs when taking snapshot and purge | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- schema_region_ratis_preserve_logs_num_when_purge + +| Name | schema_region_ratis_preserve_logs_num_when_purge | +| ----------- | ------------------------------------------------------------ | +| Description | schema region snapshot preserves certain logs when taking snapshot and purge | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- data_region_ratis_preserve_logs_num_when_purge + +| Name | data_region_ratis_preserve_logs_num_when_purge | +| ----------- | ------------------------------------------------------------ | +| Description | data region snapshot preserves certain logs when taking snapshot and purge | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- config_node_ratis_log_max_size + +| Name | config_node_ratis_log_max_size | +| ----------- | -------------------------------------- | +| Description | config node Raft Log disk size control | +| Type | int64 | +| Default | 2147483648 (2GB) | +| Effective | Restart required. | + +- schema_region_ratis_log_max_size + +| Name | schema_region_ratis_log_max_size | +| ----------- | ---------------------------------------- | +| Description | schema region Raft Log disk size control | +| Type | int64 | +| Default | 2147483648 (2GB) | +| Effective | Restart required. | + +- data_region_ratis_log_max_size + +| Name | data_region_ratis_log_max_size | +| ----------- | -------------------------------------- | +| Description | data region Raft Log disk size control | +| Type | int64 | +| Default | 21474836480 (20GB) | +| Effective | Restart required. | + +- config_node_ratis_periodic_snapshot_interval + +| Name | config_node_ratis_periodic_snapshot_interval | +| ----------- | -------------------------------------------- | +| Description | config node Raft periodic snapshot interval | +| Type | int64 | +| Default | 86400 (s) | +| Effective | Restart required. | + +- schema_region_ratis_periodic_snapshot_interval + +| Name | schema_region_ratis_preserve_logs_num_when_purge | +| ----------- | ------------------------------------------------ | +| Description | schema region Raft periodic snapshot interval | +| Type | int64 | +| Default | 86400 (s) | +| Effective | Restart required. | + +- data_region_ratis_periodic_snapshot_interval + +| Name | data_region_ratis_preserve_logs_num_when_purge | +| ----------- | ---------------------------------------------- | +| Description | data region Raft periodic snapshot interval | +| Type | int64 | +| Default | 86400 (s) | +| Effective | Restart required. | + +### IoTConsensusV2 Configuration + +- iot_consensus_v2_pipeline_size + +| Name | iot_consensus_v2_pipeline_size | +| ----------- | ------------------------------------------------------------ | +| Description | Default event buffer size for connector and receiver in iot consensus v2 | +| Type | int | +| Default | 5 | +| Effective | Restart required. | + +- iot_consensus_v2_mode + +| Name | iot_consensus_v2_pipeline_size | +| ----------- | ------------------------------ | +| Description | IoTConsensusV2 mode. | +| Type | String | +| Default | batch | +| Effective | Restart required. | + +### Procedure Configuration + +- procedure_core_worker_thread_count + +| Name | procedure_core_worker_thread_count | +| ----------- | ------------------------------------- | +| Description | Default number of worker thread count | +| Type | int32 | +| Default | 4 | +| Effective | Restart required. | + +- procedure_completed_clean_interval + +| Name | procedure_completed_clean_interval | +| ----------- | ------------------------------------------------------------ | +| Description | Default time interval of completed procedure cleaner work in, time unit is second | +| Type | int32 | +| Default | 30(s) | +| Effective | Restart required. | + +- procedure_completed_evict_ttl + +| Name | procedure_completed_evict_ttl | +| ----------- | ------------------------------------------------------- | +| Description | Default ttl of completed procedure, time unit is second | +| Type | int32 | +| Default | 60(s) | +| Effective | Restart required. | + +### MQTT Broker Configuration + +- enable_mqtt_service + +| Name | enable_mqtt_service。 | +| ----------- | ----------------------------------- | +| Description | whether to enable the mqtt service. | +| Type | Boolean | +| Default | false | +| Effective | Hot reload | + +- mqtt_host + +| Name | mqtt_host | +| ----------- | ------------------------------ | +| Description | the mqtt service binding host. | +| Type | String | +| Default | 127.0.0.1 | +| Effective | Hot reload | + +- mqtt_port + +| Name | mqtt_port | +| ----------- | ------------------------------ | +| Description | the mqtt service binding port. | +| Type | int32 | +| Default | 1883 | +| Effective | Hot reload | + +- mqtt_handler_pool_size + +| Name | mqtt_handler_pool_size | +| ----------- | ---------------------------------------------------- | +| Description | the handler pool size for handing the mqtt messages. | +| Type | int32 | +| Default | 1 | +| Effective | Hot reload | + +- mqtt_payload_formatter + +| Name | mqtt_payload_formatter | +| ----------- | ----------------------------------- | +| Description | the mqtt message payload formatter. | +| Type | String | +| Default | json | +| Effective | Hot reload | + +- mqtt_max_message_size + +| Name | mqtt_max_message_size | +| ----------- | ---------------------------------- | +| Description | max length of mqtt message in byte | +| Type | int32 | +| Default | 1048576 | +| Effective | Hot reload | + +### Audit log Configuration + +- enable_audit_log + +| Name | enable_audit_log | +| ----------- | -------------------------------- | +| Description | whether to enable the audit log. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- audit_log_storage + +| Name | audit_log_storage | +| ----------- | ----------------------------- | +| Description | Output location of audit logs | +| Type | String | +| Default | IOTDB,LOGGER | +| Effective | Restart required. | + +- audit_log_operation + +| Name | audit_log_operation | +| ----------- | ------------------------------------------------------------ | +| Description | whether enable audit log for DML operation of datawhether enable audit log for DDL operation of schemawhether enable audit log for QUERY operation of data and schema | +| Type | String | +| Default | DML,DDL,QUERY | +| Effective | Restart required. | + +- enable_audit_log_for_native_insert_api + +| Name | enable_audit_log_for_native_insert_api | +| ----------- | ---------------------------------------------- | +| Description | whether the local write api records audit logs | +| Type | Boolean | +| Default | true | +| Effective | Restart required. | + +### White List Configuration + +- enable_white_list + +| Name | enable_white_list | +| ----------- | ------------------------- | +| Description | whether enable white list | +| Type | Boolean | +| Default | false | +| Effective | Hot reload | + +### IoTDB-AI Configuration + +- model_inference_execution_thread_count + +| Name | model_inference_execution_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | The thread count which can be used for model inference operation. | +| Type | int | +| Default | 5 | +| Effective | Restart required. | + +### Load TsFile Configuration + +- load_clean_up_task_execution_delay_time_seconds + +| Name | load_clean_up_task_execution_delay_time_seconds | +| ----------- | ------------------------------------------------------------ | +| Description | Load clean up task is used to clean up the unsuccessful loaded tsfile after a certain period of time. | +| Type | int | +| Default | 1800 | +| Effective | Hot reload | + +- load_write_throughput_bytes_per_second + +| Name | load_write_throughput_bytes_per_second | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum bytes per second of disk write throughput when loading tsfile. | +| Type | int | +| Default | -1 | +| Effective | Hot reload | + +- load_active_listening_enable + +| Name | load_active_listening_enable | +| ----------- | ------------------------------------------------------------ | +| Description | Whether to enable the active listening mode for tsfile loading. | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- load_active_listening_dirs + +| Name | load_active_listening_dirs | +| ----------- | ------------------------------------------------------------ | +| Description | The directory to be actively listened for tsfile loading.Multiple directories should be separated by a ','. | +| Type | String | +| Default | ext/load/pending | +| Effective | Hot reload | + +- load_active_listening_fail_dir + +| Name | load_active_listening_fail_dir | +| ----------- | ------------------------------------------------------------ | +| Description | The directory where tsfiles are moved if the active listening mode fails to load them. | +| Type | String | +| Default | ext/load/failed | +| Effective | Hot reload | + +- load_active_listening_max_thread_num + +| Name | load_active_listening_max_thread_num | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum number of threads that can be used to load tsfile actively.The default value, when this parameter is commented out or <= 0, use CPU core number. | +| Type | Long | +| Default | 0 | +| Effective | Restart required. | + +- load_active_listening_check_interval_seconds + +| Name | load_active_listening_check_interval_seconds | +| ----------- | ------------------------------------------------------------ | +| Description | The interval specified in seconds for the active listening mode to check the directory specified in `load_active_listening_dirs`.The active listening mode will check the directory every `load_active_listening_check_interval_seconds seconds`. | +| Type | Long | +| Default | 5 | +| Effective | Restart required. | + +### Dispatch Retry Configuration + +- enable_retry_for_unknown_error + +| Name | enable_retry_for_unknown_error | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum retrying time for write request remotely dispatching, time unit is milliseconds. | +| Type | Long | +| Default | 60000 | +| Effective | Hot reload | + +- enable_retry_for_unknown_error + +| Name | enable_retry_for_unknown_error | +| ----------- | ------------------------------------ | +| Description | Whether retrying for unknown errors. | +| Type | boolean | +| Default | false | +| Effective | Hot reload | \ No newline at end of file diff --git a/src/UserGuide/latest-Table/Reference/Parameter-Configuration.md b/src/UserGuide/latest-Table/Reference/Parameter-Configuration.md new file mode 100644 index 000000000..360f5e8b6 --- /dev/null +++ b/src/UserGuide/latest-Table/Reference/Parameter-Configuration.md @@ -0,0 +1,3250 @@ +### IoTDB Configuration Files + +The configuration files for IoTDB are located in the `conf` folder under the IoTDB installation directory. Key configuration files include: + +1. `confignode-env.sh` **/** `confignode-env.bat`: + 1. Environment configuration file for ConfigNode. + 2. Used to configure memory size and other environment settings for ConfigNode. +2. `datanode-env.sh` **/** `datanode-env.bat`: + 1. Environment configuration file for DataNode. + 2. Used to configure memory size and other environment settings for DataNode. +3. `iotdb-system.properties`: + 1. Main configuration file for IoTDB. + 2. Contains configurable parameters for IoTDB. +4. `iotdb-system.properties.template`: + 1. Template for the `iotdb-system.properties` file. + 2. Provides a reference for all available configuration parameters. + +### Modify Configurations + +#### 1. **Modify Existing Parameters**: + +- Parameters already present in the `iotdb-system.properties` file can be directly modified. + +#### 2. **Adding New Parameters**: + +- For parameters not listed in `iotdb-system.properties`, you can find them in the `iotdb-system.properties.template` file. +- Copy the desired parameter from the template file to `iotdb-system.properties` and modify its value. + +### Configuration Update Methods + +Different configuration parameters have different update methods, categorized as follows: + +1. **Modify before the first startup.**: + 1. These parameters can only be modified before the first startup of ConfigNode/DataNode. + 2. Modifying them after the first startup will prevent ConfigNode/DataNode from starting. +2. **Restart Required for Changes to Take Effect**: + 1. These parameters can be modified after ConfigNode/DataNode has started. + 2. However, a restart of ConfigNode/DataNode is required for the changes to take effect. +3. **Hot Reload**: + 1. These parameters can be modified while ConfigNode/DataNode is running. + 2. After modification, use the following SQL commands to apply the changes: + - `load configuration`: Reloads the configuration. + - `set configuration`: Updates specific configuration parameters. + +## Environment Parameters + +The environment configuration files (`confignode-env.sh/bat` and `datanode-env.sh/bat`) are used to configure Java environment parameters for ConfigNode and DataNode, such as JVM settings. These configurations are passed to the JVM when ConfigNode or DataNode starts. + +### **confignode-env.sh/bat** + +- MEMORY_SIZE + +| Name | MEMORY_SIZE | +| ----------- | ------------------------------------------------------------ | +| Description | Memory size allocated when IoTDB ConfigNode starts. | +| Type | String | +| Default | Depends on the operating system and machine configuration. Defaults to 3/10 of the machine's memory, capped at 16G. | +| Effective | Restart required | + +- ON_HEAP_MEMORY + +| Name | ON_HEAP_MEMORY | +| ----------- | ------------------------------------------------------------ | +| Description | On-heap memory size available for IoTDB ConfigNode. Previously named `MAX_HEAP_SIZE`. | +| Type | String | +| Default | Depends on the `MEMORY_SIZE` configuration. | +| Effective | Restart required | + +- OFF_HEAP_MEMORY + +| Name | OFF_HEAP_MEMORY | +| ----------- | ------------------------------------------------------------ | +| Description | Off-heap memory size available for IoTDB ConfigNode. Previously named `MAX_DIRECT_MEMORY_SIZE`. | +| Type | String | +| Default | Depends on the `MEMORY_SIZE` configuration. | +| Effective | Restart required | + +### **datanode-env.sh/bat** + +- MEMORY_SIZE + +| Name | MEMORY_SIZE | +| ----------- | ------------------------------------------------------------ | +| Description | Memory size allocated when IoTDB DataNode starts. | +| Type | String | +| Default | Depends on the operating system and machine configuration. Defaults to 1/2 of the machine's memory. | +| Effective | Restart required | + +- ON_HEAP_MEMORY + +| Name | ON_HEAP_MEMORY | +| ----------- | ------------------------------------------------------------ | +| Description | On-heap memory size available for IoTDB DataNode. Previously named `MAX_HEAP_SIZE`. | +| Type | String | +| Default | Depends on the `MEMORY_SIZE` configuration. | +| Effective | Restart required | + +- OFF_HEAP_MEMORY + +| Name | OFF_HEAP_MEMORY | +| ----------- | ------------------------------------------------------------ | +| Description | Off-heap memory size available for IoTDB DataNode. Previously named `MAX_DIRECT_MEMORY_SIZE`. | +| Type | String | +| Default | Depends on the `MEMORY_SIZE` configuration. | +| Effective | Restart required | + +## System Parameters (`iotdb-system.properties.template`) + +The `iotdb-system.properties` file contains various configurations for managing IoTDB clusters, nodes, replication, directories, monitoring, SSL, connections, object storage, tier management, and REST services. Below is a detailed breakdown of the parameters: + +### Cluster Configuration + +- cluster_name + +| Name | cluster_name | +| ----------- | ------------------------------------------------------------ | +| Description | Name of the cluster. | +| Type | String | +| Default | default_cluster | +| Effective | Use CLI: `set configuration "cluster_name"="xxx"`. | +| Note | Changes are distributed across nodes. Changes may not propagate to all nodes in case of network issues or node failures. Nodes that fail to update must manually modify `cluster_name` in their configuration files and restart. Under normal circumstances, it is not recommended to modify `cluster_name` by manually modifying configuration files or to perform hot-loading via `load configuration` method. | + +### Seed ConfigNode + +- cn_seed_config_node + +| Name | cn_seed_config_node | +| ----------- | ------------------------------------------------------------ | +| Description | Address of the seed ConfigNode for Confignode to join the cluster. | +| Type | String | +| Default | 127.0.0.1:10710 | +| Effective | Modify before the first startup. | + +- dn_seed_config_node + +| Name | dn_seed_config_node | +| ----------- | ------------------------------------------------------------ | +| Description | Address of the seed ConfigNode for Datanode to join the cluster. | +| Type | String | +| Default | 127.0.0.1:10710 | +| Effective | Modify before the first startup. | + +### Node RPC Configuration + +- cn_internal_address + +| Name | cn_internal_address | +| ----------- | ---------------------------------------------- | +| Description | Internal address for ConfigNode communication. | +| Type | String | +| Default | 127.0.0.1 | +| Effective | Modify before the first startup. | + +- cn_internal_port + +| Name | cn_internal_port | +| ----------- | ------------------------------------------- | +| Description | Port for ConfigNode internal communication. | +| Type | Short Int : [0,65535] | +| Default | 10710 | +| Effective | Modify before the first startup. | + +- cn_consensus_port + +| Name | cn_consensus_port | +| ----------- | ----------------------------------------------------- | +| Description | Port for ConfigNode consensus protocol communication. | +| Type | Short Int : [0,65535] | +| Default | 10720 | +| Effective | Modify before the first startup. | + +- dn_rpc_address + +| Name | dn_rpc_address | +| ----------- | ------------------------------- | +| Description | Address for client RPC service. | +| Type | String | +| Default | 0.0.0.0 | +| Effective | Restart required. | + +- dn_rpc_port + +| Name | dn_rpc_port | +| ----------- | ---------------------------- | +| Description | Port for client RPC service. | +| Type | Short Int : [0,65535] | +| Default | 6667 | +| Effective | Restart required. | + +- dn_internal_address + +| Name | dn_internal_address | +| ----------- | -------------------------------------------- | +| Description | Internal address for DataNode communication. | +| Type | string | +| Default | 127.0.0.1 | +| Effective | Modify before the first startup. | + +- dn_internal_port + +| Name | dn_internal_port | +| ----------- | ----------------------------------------- | +| Description | Port for DataNode internal communication. | +| Type | int | +| Default | 10730 | +| Effective | Modify before the first startup. | + +- dn_mpp_data_exchange_port + +| Name | dn_mpp_data_exchange_port | +| ----------- | -------------------------------- | +| Description | Port for MPP data exchange. | +| Type | int | +| Default | 10740 | +| Effective | Modify before the first startup. | + +- dn_schema_region_consensus_port + +| Name | dn_schema_region_consensus_port | +| ----------- | ------------------------------------------------------------ | +| Description | Port for Datanode SchemaRegion consensus protocol communication. | +| Type | int | +| Default | 10750 | +| Effective | Modify before the first startup. | + +- dn_data_region_consensus_port + +| Name | dn_data_region_consensus_port | +| ----------- | ------------------------------------------------------------ | +| Description | Port for Datanode DataRegion consensus protocol communication. | +| Type | int | +| Default | 10760 | +| Effective | Modify before the first startup. | + +- dn_join_cluster_retry_interval_ms + +| Name | dn_join_cluster_retry_interval_ms | +| ----------- | --------------------------------------------------- | +| Description | Interval for DataNode to retry joining the cluster. | +| Type | long | +| Default | 5000 | +| Effective | Restart required. | + +### Replication configuration + +- config_node_consensus_protocol_class + +| Name | config_node_consensus_protocol_class | +| ----------- | ------------------------------------------------------------ | +| Description | Consensus protocol for ConfigNode replication, only supports RatisConsensus | +| Type | String | +| Default | org.apache.iotdb.consensus.ratis.RatisConsensus | +| Effective | Modify before the first startup. | + +- schema_replication_factor + +| Name | schema_replication_factor | +| ----------- | ------------------------------------------------------------ | +| Description | Default schema replication factor for databases. | +| Type | int32 | +| Default | 1 | +| Effective | Restart required. Takes effect on the new database after restarting. | + +- schema_region_consensus_protocol_class + +| Name | schema_region_consensus_protocol_class | +| ----------- | ------------------------------------------------------------ | +| Description | Consensus protocol for schema region replication. Only supports RatisConsensus when multi-replications. | +| Type | String | +| Default | org.apache.iotdb.consensus.ratis.RatisConsensus | +| Effective | Modify before the first startup. | + +- data_replication_factor + +| Name | data_replication_factor | +| ----------- | ------------------------------------------------------------ | +| Description | Default data replication factor for databases. | +| Type | int32 | +| Default | 1 | +| Effective | Restart required. Takes effect on the new database after restarting. | + +- data_region_consensus_protocol_class + +| Name | data_region_consensus_protocol_class | +| ----------- | ------------------------------------------------------------ | +| Description | Consensus protocol for data region replication. Supports IoTConsensus or RatisConsensus when multi-replications. | +| Type | String | +| Default | org.apache.iotdb.consensus.iot.IoTConsensus | +| Effective | Modify before the first startup. | + +### Directory configuration + +- cn_system_dir + +| Name | cn_system_dir | +| ----------- | ----------------------------------------------------------- | +| Description | System data storage path for ConfigNode. | +| Type | String | +| Default | data/confignode/system(Windows:data\\configndoe\\system) | +| Effective | Restart required | + +- cn_consensus_dir + +| Name | cn_consensus_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Consensus protocol data storage path for ConfigNode. | +| Type | String | +| Default | data/confignode/consensus(Windows:data\\configndoe\\consensus) | +| Effective | Restart required | + +- cn_pipe_receiver_file_dir + +| Name | cn_pipe_receiver_file_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Directory for pipe receiver files in ConfigNode. | +| Type | String | +| Default | data/confignode/system/pipe/receiver(Windows:data\\confignode\\system\\pipe\\receiver) | +| Effective | Restart required | + +- dn_system_dir + +| Name | dn_system_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Schema storage path for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. | +| Type | String | +| Default | data/datanode/system(Windows:data\\datanode\\system) | +| Effective | Restart required | + +- dn_data_dirs + +| Name | dn_data_dirs | +| ----------- | ------------------------------------------------------------ | +| Description | Data storage path for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. | +| Type | String | +| Default | data/datanode/data(Windows:data\\datanode\\data) | +| Effective | Restart required | + +- dn_multi_dir_strategy + +| Name | dn_multi_dir_strategy | +| ----------- | ------------------------------------------------------------ | +| Description | The strategy used by IoTDB to select directories in `data_dirs` for TsFiles. You can use either the simple class name or the fully qualified class name. The system provides the following two strategies: 1. SequenceStrategy: IoTDB selects directories sequentially, iterating through all directories in `data_dirs` in a round-robin manner. 2. MaxDiskUsableSpaceFirstStrategy IoTDB prioritizes the directory in `data_dirs` with the largest disk free space. To implement a custom strategy: 1. Inherit the `org.apache.iotdb.db.storageengine.rescon.disk.strategy.DirectoryStrategy `class and implement your own strategy method. 2. Fill in the configuration item with the fully qualified class name of your implementation (package name + class name, e.g., `UserDefineStrategyPackage`). 3. Add the JAR file containing your custom class to the project. | +| Type | String | +| Default | SequenceStrategy | +| Effective | Hot reload. | + +- dn_consensus_dir + +| Name | dn_consensus_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Consensus log storage path for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. | +| Type | String | +| Default | data/datanode/consensus(Windows:data\\datanode\\consensus) | +| Effective | Restart required | + +- dn_wal_dirs + +| Name | dn_wal_dirs | +| ----------- | ------------------------------------------------------------ | +| Description | Write-ahead log (WAL) storage path for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. | +| Type | String | +| Default | data/datanode/wal(Windows:data\\datanode\\wal) | +| Effective | Restart required | + +- dn_tracing_dir + +| Name | dn_tracing_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Tracing root directory for DataNode. By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. | +| Type | String | +| Default | datanode/tracing(Windows:datanode\\tracing) | +| Effective | Restart required | + +- dn_sync_dir + +| Name | dn_sync_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Sync storage path for DataNode.By default, it is stored in the data directory at the same level as the sbin directory. The starting directory of the relative path is related to the operating system. It is recommended to use an absolute path. | +| Type | String | +| Default | data/datanode/sync(Windows:data\\datanode\\sync) | +| Effective | Restart required | + +- sort_tmp_dir + +| Name | sort_tmp_dir | +| ----------- | ------------------------------------------------- | +| Description | Temporary directory for sorting operations. | +| Type | String | +| Default | data/datanode/tmp(Windows:data\\datanode\\tmp) | +| Effective | Restart required | + +- dn_pipe_receiver_file_dirs + +| Name | dn_pipe_receiver_file_dirs | +| ----------- | ------------------------------------------------------------ | +| Description | Directory for pipe receiver files in DataNode. | +| Type | String | +| Default | data/datanode/system/pipe/receiver(Windows:data\\datanode\\system\\pipe\\receiver) | +| Effective | Restart required | + +- iot_consensus_v2_receiver_file_dirs + +| Name | iot_consensus_v2_receiver_file_dirs | +| ----------- | ------------------------------------------------------------ | +| Description | Directory for IoTConsensus V2 receiver files. | +| Type | String | +| Default | data/datanode/system/pipe/consensus/receiver(Windows:data\\datanode\\system\\pipe\\consensus\\receiver) | +| Effective | Restart required | + +- iot_consensus_v2_deletion_file_dir + +| Name | iot_consensus_v2_deletion_file_dir | +| ----------- | ------------------------------------------------------------ | +| Description | Directory for IoTConsensus V2 deletion files. | +| Type | String | +| Default | data/datanode/system/pipe/consensus/deletion(Windows:data\\datanode\\system\\pipe\\consensus\\deletion) | +| Effective | Restart required | + +### Metric Configuration + +- cn_metric_reporter_list + +| Name | cn_metric_reporter_list | +| ----------- | ----------------------------------------- | +| Description | Systems for reporting ConfigNode metrics. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +- cn_metric_level + +| Name | cn_metric_level | +| ----------- | --------------------------------------- | +| Description | Level of detail for ConfigNode metrics. | +| Type | String | +| Default | IMPORTANT | +| Effective | Restart required. | + +- cn_metric_async_collect_period + +| Name | cn_metric_async_collect_period | +| ----------- | ------------------------------------------------------------ | +| Description | Period for asynchronous metric collection in ConfigNode (in seconds). | +| Type | int | +| Default | 5 | +| Effective | Restart required. | + +- cn_metric_prometheus_reporter_port + +| Name | cn_metric_prometheus_reporter_port | +| ----------- | --------------------------------------------------- | +| Description | Port for Prometheus metric reporting in ConfigNode. | +| Type | int | +| Default | 9091 | +| Effective | Restart required. | + +- dn_metric_reporter_list + +| Name | dn_metric_reporter_list | +| ----------- | --------------------------------------- | +| Description | Systems for reporting DataNode metrics. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +- dn_metric_level + +| Name | dn_metric_level | +| ----------- | ------------------------------------- | +| Description | Level of detail for DataNode metrics. | +| Type | String | +| Default | IMPORTANT | +| Effective | Restart required. | + +- dn_metric_async_collect_period + +| Name | dn_metric_async_collect_period | +| ----------- | ------------------------------------------------------------ | +| Description | Period for asynchronous metric collection in DataNode (in seconds). | +| Type | int | +| Default | 5 | +| Effective | Restart required. | + +- dn_metric_prometheus_reporter_port + +| Name | dn_metric_prometheus_reporter_port | +| ----------- | ------------------------------------------------- | +| Description | Port for Prometheus metric reporting in DataNode. | +| Type | int | +| Default | 9092 | +| Effective | Restart required. | + +- dn_metric_internal_reporter_type + +| Name | dn_metric_internal_reporter_type | +| ----------- | ------------------------------------------------------------ | +| Description | Internal reporter types for DataNode metrics. For internal monitoring and checking that the data has been successfully written and refreshed. | +| Type | String | +| Default | IOTDB | +| Effective | Restart required. | + +### SSL Configuration + +- enable_thrift_ssl + +| Name | enable_thrift_ssl | +| ----------- | --------------------------------------------- | +| Description | Enables SSL encryption for RPC communication. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- enable_https + +| Name | enable_https | +| ----------- | ------------------------------ | +| Description | Enables SSL for REST services. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- key_store_path + +| Name | key_store_path | +| ----------- | ---------------------------- | +| Description | Path to the SSL certificate. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +- key_store_pwd + +| Name | key_store_pwd | +| ----------- | --------------------------------- | +| Description | Password for the SSL certificate. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +### Connection Configuration + +- cn_rpc_thrift_compression_enable + +| Name | cn_rpc_thrift_compression_enable | +| ----------- | ----------------------------------- | +| Description | Enables Thrift compression for RPC. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- cn_rpc_max_concurrent_client_num + +| Name | cn_rpc_max_concurrent_client_num | +| ----------- | ----------------------------------------- | +| Description | Maximum number of concurrent RPC clients. | +| Type | Short Int : [0,65535] | +| Default | 65535 | +| Effective | Restart required. | + +- cn_connection_timeout_ms + +| Name | cn_connection_timeout_ms | +| ----------- | ---------------------------------------------------- | +| Description | Connection timeout for ConfigNode (in milliseconds). | +| Type | int | +| Default | 60000 | +| Effective | Restart required. | + +- cn_selector_thread_nums_of_client_manager + +| Name | cn_selector_thread_nums_of_client_manager | +| ----------- | ------------------------------------------------------------ | +| Description | Number of selector threads for client management in ConfigNode. | +| Type | int | +| Default | 1 | +| Effective | Restart required. | + +- cn_max_client_count_for_each_node_in_client_manager + +| Name | cn_max_client_count_for_each_node_in_client_manager | +| ----------- | ------------------------------------------------------ | +| Description | Maximum clients per node in ConfigNode client manager. | +| Type | int | +| Default | 300 | +| Effective | Restart required. | + +- dn_session_timeout_threshold + +| Name | dn_session_timeout_threshold | +| ----------- | ---------------------------------------- | +| Description | Maximum idle time for DataNode sessions. | +| Type | int | +| Default | 0 | +| Effective | Restart required.t required. | + +- dn_rpc_thrift_compression_enable + +| Name | dn_rpc_thrift_compression_enable | +| ----------- | -------------------------------------------- | +| Description | Enables Thrift compression for DataNode RPC. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- dn_rpc_advanced_compression_enable + +| Name | dn_rpc_advanced_compression_enable | +| ----------- | ----------------------------------------------------- | +| Description | Enables advanced Thrift compression for DataNode RPC. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- dn_rpc_selector_thread_count + +| Name | rpc_selector_thread_count | +| ----------- | -------------------------------------------- | +| Description | Number of selector threads for DataNode RPC. | +| Type | int | +| Default | 1 | +| Effective | Restart required.t required. | + +- dn_rpc_min_concurrent_client_num + +| Name | rpc_min_concurrent_client_num | +| ----------- | ------------------------------------------------------ | +| Description | Minimum number of concurrent RPC clients for DataNode. | +| Type | Short Int : [0,65535] | +| Default | 1 | +| Effective | Restart required. | + +- dn_rpc_max_concurrent_client_num + +| Name | dn_rpc_max_concurrent_client_num | +| ----------- | ------------------------------------------------------ | +| Description | Maximum number of concurrent RPC clients for DataNode. | +| Type | Short Int : [0,65535] | +| Default | 65535 | +| Effective | Restart required. | + +- dn_thrift_max_frame_size + +| Name | dn_thrift_max_frame_size | +| ----------- | ----------------------------------------------- | +| Description | Maximum frame size for RPC requests/responses. | +| Type | long | +| Default | 536870912 (Default512MB,>= 512 * 1024 * 1024) | +| Effective | Restart required. | + +- dn_thrift_init_buffer_size + +| Name | dn_thrift_init_buffer_size | +| ----------- | ----------------------------------- | +| Description | Initial buffer size for Thrift RPC. | +| Type | long | +| Default | 1024 | +| Effective | Restart required. | + +- dn_connection_timeout_ms + +| Name | dn_connection_timeout_ms | +| ----------- | -------------------------------------------------- | +| Description | Connection timeout for DataNode (in milliseconds). | +| Type | int | +| Default | 60000 | +| Effective | Restart required. | + +- dn_selector_thread_count_of_client_manager + +| Name | dn_selector_thread_count_of_client_manager | +| ----------- | ------------------------------------------------------------ | +| Description | selector thread (TAsyncClientManager) nums for async thread in a clientManager | +| Type | int | +| Default | 1 | +| Effective | Restart required.t required. | + +- dn_max_client_count_for_each_node_in_client_manager + +| Name | dn_max_client_count_for_each_node_in_client_manager | +| ----------- | --------------------------------------------------- | +| Description | Maximum clients per node in DataNode clientmanager. | +| Type | int | +| Default | 300 | +| Effective | Restart required. | + +### Object storage management + +- remote_tsfile_cache_dirs + +| Name | remote_tsfile_cache_dirs | +| ----------- | ---------------------------------------- | +| Description | Local cache directory for cloud storage. | +| Type | String | +| Default | data/datanode/data/cache | +| Effective | Restart required. | + +- remote_tsfile_cache_page_size_in_kb + +| Name | remote_tsfile_cache_page_size_in_kb | +| ----------- | --------------------------------------------- | +| Description | Block size for cached files in cloud storage. | +| Type | int | +| Default | 20480 | +| Effective | Restart required. | + +- remote_tsfile_cache_max_disk_usage_in_mb + +| Name | remote_tsfile_cache_max_disk_usage_in_mb | +| ----------- | ------------------------------------------- | +| Description | Maximum disk usage for cloud storage cache. | +| Type | long | +| Default | 51200 | +| Effective | Restart required. | + +- object_storage_type + +| Name | object_storage_type | +| ----------- | ---------------------- | +| Description | Type of cloud storage. | +| Type | String | +| Default | AWS_S3 | +| Effective | Restart required. | + +- object_storage_endpoint + +| Name | object_storage_endpoint | +| ----------- | --------------------------- | +| Description | Endpoint for cloud storage. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +- object_storage_bucket + +| Name | object_storage_bucket | +| ----------- | ------------------------------ | +| Description | Bucket name for cloud storage. | +| Type | String | +| Default | iotdb_data | +| Effective | Restart required. | + +- object_storage_access_key + +| Name | object_storage_access_key | +| ----------- | ----------------------------- | +| Description | Access key for cloud storage. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +- object_storage_access_secret + +| Name | object_storage_access_secret | +| ----------- | -------------------------------- | +| Description | Access secret for cloud storage. | +| Type | String | +| Default | None | +| Effective | Restart required. | + +### Tier management + +- dn_default_space_usage_thresholds + +| Name | dn_default_space_usage_thresholds | +| ----------- | ------------------------------------------------------------ | +| Description | Disk usage threshold, data will be moved to the next tier when the usage of the tier is higher than this threshold.If tiered storage is enabled, please separate thresholds of different tiers by semicolons ";". | +| Type | double | +| Default | 0.85 | +| Effective | Hot reload. | + +- dn_tier_full_policy + +| Name | dn_tier_full_policy | +| ----------- | ------------------------------------------------------------ | +| Description | How to deal with the last tier's data when its used space has been higher than its dn_default_space_usage_thresholds. | +| Type | String | +| Default | NULL | +| Effective | Hot reload. | + +- migrate_thread_count + +| Name | migrate_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | thread pool size for migrate operation in the DataNode's data directories. | +| Type | int | +| Default | 1 | +| Effective | Hot reload. | + +- tiered_storage_migrate_speed_limit_bytes_per_sec + +| Name | tiered_storage_migrate_speed_limit_bytes_per_sec | +| ----------- | ------------------------------------------------------------ | +| Description | The migrate speed limit of different tiers can reach per second | +| Type | int | +| Default | 10485760 | +| Effective | Hot reload. | + +### REST Service Configuration + +- enable_rest_service + +| Name | enable_rest_service | +| ----------- | --------------------------- | +| Description | Is the REST service enabled | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- rest_service_port + +| Name | rest_service_port | +| ----------- | ------------------------------------ | +| Description | the binding port of the REST service | +| Type | int32 | +| Default | 18080 | +| Effective | Restart required. | + +- enable_swagger + +| Name | enable_swagger | +| ----------- | ------------------------------------------------------------ | +| Description | Whether to display rest service interface information through swagger. eg: http://ip:port/swagger.json | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- rest_query_default_row_size_limit + +| Name | rest_query_default_row_size_limit | +| ----------- | ------------------------------------------------------------ | +| Description | the default row limit to a REST query response when the rowSize parameter is not given in request | +| Type | int32 | +| Default | 10000 | +| Effective | Restart required. | + +- cache_expire_in_seconds + +| Name | cache_expire_in_seconds | +| ----------- | ------------------------------------------------------------ | +| Description | The expiration time of the user login information cache (in seconds) | +| Type | int32 | +| Default | 28800 | +| Effective | Restart required. | + +- cache_max_num + +| Name | cache_max_num | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum number of users can be stored in the user login cache. | +| Type | int32 | +| Default | 100 | +| Effective | Restart required. | + +- cache_init_num + +| Name | cache_init_num | +| ----------- | ------------------------------------------------------------ | +| Description | The initial capacity of users can be stored in the user login cache. | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- client_auth + +| Name | client_auth | +| ----------- | --------------------------------- | +| Description | Is client authentication required | +| Type | boolean | +| Default | false | +| Effective | Restart required. | + +- trust_store_path + +| Name | trust_store_path | +| ----------- | -------------------- | +| Description | SSL trust store path | +| Type | String | +| Default | "" | +| Effective | Restart required. | + +- trust_store_pwd + +| Name | trust_store_pwd | +| ----------- | ------------------------- | +| Description | SSL trust store password. | +| Type | String | +| Default | "" | +| Effective | Restart required. | + +- idle_timeout_in_seconds + +| Name | idle_timeout_in_seconds | +| ----------- | ------------------------ | +| Description | SSL timeout (in seconds) | +| Type | int32 | +| Default | 5000 | +| Effective | Restart required. | + +### Load balancing configuration + +- series_slot_num + +| Name | series_slot_num | +| ----------- | ------------------------------------------- | +| Description | Number of SeriesPartitionSlots per Database | +| Type | int32 | +| Default | 10000 | +| Effective | Modify before the first startup. | + +- series_partition_executor_class + +| Name | series_partition_executor_class | +| ----------- | ------------------------------------------------------------ | +| Description | SeriesPartitionSlot executor class | +| Type | String | +| Default | org.apache.iotdb.commons.partition.executor.hash.BKDRHashExecutor | +| Effective | Modify before the first startup. | + +- schema_region_group_extension_policy + +| Name | schema_region_group_extension_policy | +| ----------- | ------------------------------------------------------------ | +| Description | The policy of extension SchemaRegionGroup for each Database. | +| Type | string | +| Default | AUTO | +| Effective | Restart required. | + +- default_schema_region_group_num_per_database + +| Name | default_schema_region_group_num_per_database | +| ----------- | ------------------------------------------------------------ | +| Description | When set schema_region_group_extension_policy=CUSTOM, this parameter is the default number of SchemaRegionGroups for each Database.When set schema_region_group_extension_policy=AUTO, this parameter is the default minimal number of SchemaRegionGroups for each Database. | +| Type | int | +| Default | 1 | +| Effective | Restart required. | + +- schema_region_per_data_node + +| Name | schema_region_per_data_node | +| ----------- | ------------------------------------------------------------ | +| Description | It only takes effect when set schema_region_group_extension_policy=AUTO.This parameter is the maximum number of SchemaRegions expected to be managed by each DataNode. | +| Type | double | +| Default | 1.0 | +| Effective | Restart required. | + +- data_region_group_extension_policy + +| Name | data_region_group_extension_policy | +| ----------- | ---------------------------------------------------------- | +| Description | The policy of extension DataRegionGroup for each Database. | +| Type | string | +| Default | AUTO | +| Effective | Restart required. | + +- default_data_region_group_num_per_database + +| Name | default_data_region_group_per_database | +| ----------- | ------------------------------------------------------------ | +| Description | When set data_region_group_extension_policy=CUSTOM, this parameter is the default number of DataRegionGroups for each Database.When set data_region_group_extension_policy=AUTO, this parameter is the default minimal number of DataRegionGroups for each Database. | +| Type | int | +| Default | 2 | +| Effective | Restart required. | + +- data_region_per_data_node + +| Name | data_region_per_data_node | +| ----------- | ------------------------------------------------------------ | +| Description | It only takes effect when set data_region_group_extension_policy=AUTO.This parameter is the maximum number of DataRegions expected to be managed by each DataNode. | +| Type | double | +| Default | 5.0 | +| Effective | Restart required. | + +- enable_auto_leader_balance_for_ratis_consensus + +| Name | enable_auto_leader_balance_for_ratis_consensus | +| ----------- | ------------------------------------------------------------ | +| Description | Whether to enable auto leader balance for Ratis consensus protocol. | +| Type | Boolean | +| Default | true | +| Effective | Restart required. | + +- enable_auto_leader_balance_for_iot_consensus + +| Name | enable_auto_leader_balance_for_iot_consensus | +| ----------- | ------------------------------------------------------------ | +| Description | Whether to enable auto leader balance for IoTConsensus protocol. | +| Type | Boolean | +| Default | true | +| Effective | Restart required. | + +### Cluster management + +- time_partition_origin + +| Name | time_partition_origin | +| ----------- | ------------------------------------------------------------ | +| Description | Time partition origin in milliseconds, default is equal to zero. | +| Type | Long | +| Unit | ms | +| Default | 0 | +| Effective | Modify before the first startup. | + +- time_partition_interval + +| Name | time_partition_interval | +| ----------- | ------------------------------------------------------------ | +| Description | Time partition interval in milliseconds, and partitioning data inside each data region, default is equal to one week | +| Type | Long | +| Unit | ms | +| Default | 604800000 | +| Effective | Modify before the first startup. | + +- heartbeat_interval_in_ms + +| Name | heartbeat_interval_in_ms | +| ----------- | -------------------------------------- | +| Description | The heartbeat interval in milliseconds | +| Type | Long | +| Unit | ms | +| Default | 1000 | +| Effective | Restart required. | + +- disk_space_warning_threshold + +| Name | disk_space_warning_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | Disk remaining threshold at which DataNode is set to ReadOnly status | +| Type | double(percentage) | +| Default | 0.05 | +| Effective | Restart required. | + +### Memory Control Configuration + +- datanode_memory_proportion + +| Name | datanode_memory_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Memory Allocation Ratio: StorageEngine, QueryEngine, SchemaEngine, Consensus, StreamingEngine and Free Memory. | +| Type | Ratio | +| Default | 3:3:1:1:1:1 | +| Effective | Restart required. | + +- schema_memory_proportion + +| Name | schema_memory_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Schema Memory Allocation Ratio: SchemaRegion, SchemaCache, and PartitionCache. | +| Type | Ratio | +| Default | 5:4:1 | +| Effective | Restart required. | + +- storage_engine_memory_proportion + +| Name | storage_engine_memory_proportion | +| ----------- | ----------------------------------------------------------- | +| Description | Memory allocation ratio in StorageEngine: Write, Compaction | +| Type | Ratio | +| Default | 8:2 | +| Effective | Restart required. | + +- write_memory_proportion + +| Name | write_memory_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Memory allocation ratio in writing: Memtable, TimePartitionInfo | +| Type | Ratio | +| Default | 19:1 | +| Effective | Restart required. | + +- primitive_array_size + +| Name | primitive_array_size | +| ----------- | --------------------------------------------------------- | +| Description | primitive array size (length of each array) in array pool | +| Type | int32 | +| Default | 64 | +| Effective | Restart required. | + +- chunk_metadata_size_proportion + +| Name | chunk_metadata_size_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Ratio of compaction memory for chunk metadata maintains in memory when doing compaction | +| Type | Double | +| Default | 0.1 | +| Effective | Restart required. | + +- flush_proportion + +| Name | flush_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Ratio of memtable memory for invoking flush disk, 0.4 by defaultIf you have extremely high write load (like batch=1000), it can be set lower than the default value like 0.2 | +| Type | Double | +| Default | 0.4 | +| Effective | Restart required. | + +- buffered_arrays_memory_proportion + +| Name | buffered_arrays_memory_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Ratio of memtable memory allocated for buffered arrays, 0.6 by default | +| Type | Double | +| Default | 0.6 | +| Effective | Restart required. | + +- reject_proportion + +| Name | reject_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Ratio of memtable memory for rejecting insertion, 0.8 by defaultIf you have extremely high write load (like batch=1000) and the physical memory size is large enough, it can be set higher than the default value like 0.9 | +| Type | Double | +| Default | 0.8 | +| Effective | Restart required. | + +- device_path_cache_proportion + +| Name | device_path_cache_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Ratio of memtable memory for the DevicePathCache. DevicePathCache is the deviceId cache, keeping only one copy of the same deviceId in memory | +| Type | Double | +| Default | 0.05 | +| Effective | Restart required. | + +- write_memory_variation_report_proportion + +| Name | write_memory_variation_report_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | If memory cost of data region increased more than proportion of allocated memory for writing, report to system. The default value is 0.001 | +| Type | Double | +| Default | 0.001 | +| Effective | Restart required. | + +- check_period_when_insert_blocked + +| Name | check_period_when_insert_blocked | +| ----------- | ------------------------------------------------------------ | +| Description | When an insertion is rejected, the waiting period (in ms) to check system again, 50 by default.If the insertion has been rejected and the read load is low, it can be set larger. | +| Type | int32 | +| Default | 50 | +| Effective | Restart required. | + +- io_task_queue_size_for_flushing + +| Name | io_task_queue_size_for_flushing | +| ----------- | -------------------------------------------- | +| Description | size of ioTaskQueue. The default value is 10 | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- enable_query_memory_estimation + +| Name | enable_query_memory_estimation | +| ----------- | ------------------------------------------------------------ | +| Description | If true, we will estimate each query's possible memory footprint before executing it and deny it if its estimated memory exceeds current free memory | +| Type | bool | +| Default | true | +| Effective | Hot reload. | + +### Schema Engine Configuration + +- schema_engine_mode + +| Name | schema_engine_mode | +| ----------- | ------------------------------------------------------------ | +| Description | The schema management mode of schema engine. Currently, support Memory and PBTree.This config of all DataNodes in one cluster must keep same. | +| Type | string | +| Default | Memory | +| Effective | Modify before the first startup. | + +- partition_cache_size + +| Name | partition_cache_size | +| ----------- | ------------------------- | +| Description | cache size for partition. | +| Type | Int32 | +| Default | 1000 | +| Effective | Restart required. | + +- sync_mlog_period_in_ms + +| Name | sync_mlog_period_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | The cycle when metadata log is periodically forced to be written to disk(in milliseconds)If sync_mlog_period_in_ms=0 it means force metadata log to be written to disk after each refreshmentSetting this parameter to 0 may slow down the operation on slow disk. | +| Type | Int64 | +| Default | 100 | +| Effective | Restart required. | + +- tag_attribute_flush_interval + +| Name | tag_attribute_flush_interval | +| ----------- | ------------------------------------------------------------ | +| Description | interval num for tag and attribute records when force flushing to disk | +| Type | int32 | +| Default | 1000 | +| Effective | Modify before the first startup. | + +- tag_attribute_total_size + +| Name | tag_attribute_total_size | +| ----------- | ------------------------------------------------------------ | +| Description | max size for a storage block for tags and attributes of a one-time series | +| Type | int32 | +| Default | 700 | +| Effective | Modify before the first startup. | + +- max_measurement_num_of_internal_request + +| Name | max_measurement_num_of_internal_request | +| ----------- | ------------------------------------------------------------ | +| Description | max measurement num of internal requestWhen creating timeseries with Session.createMultiTimeseries, the user input plan, the timeseries num ofwhich exceeds this num, will be split to several plans with timeseries no more than this num. | +| Type | Int32 | +| Default | 10000 | +| Effective | Restart required. | + +- datanode_schema_cache_eviction_policy + +| Name | datanode_schema_cache_eviction_policy | +| ----------- | --------------------------------------- | +| Description | Policy of DataNodeSchemaCache eviction. | +| Type | String | +| Default | FIFO | +| Effective | Restart required. | + +- cluster_timeseries_limit_threshold + +| Name | cluster_timeseries_limit_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | This configuration parameter sets the maximum number of time series allowed in the cluster. | +| Type | Int32 | +| Default | -1 | +| Effective | Restart required. | + +- cluster_device_limit_threshold + +| Name | cluster_device_limit_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | This configuration parameter sets the maximum number of devices allowed in the cluster. | +| Type | Int32 | +| Default | -1 | +| Effective | Restart required. | + +- database_limit_threshold + +| Name | database_limit_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | This configuration parameter sets the maximum number of Cluster Databases allowed. | +| Type | Int32 | +| Default | -1 | +| Effective | Restart required. | + +### Configurations for creating schema automatically + +- enable_auto_create_schema + +| Name | enable_auto_create_schema | +| ----------- | ------------------------------------------------ | +| Description | Whether creating schema automatically is enabled | +| Value | true or false | +| Default | true | +| Effective | Restart required. | + +- default_storage_group_level + +| Name | default_storage_group_level | +| ----------- | ------------------------------------------------------------ | +| Description | Database level when creating schema automatically is enabled e.g. root.sg0.d1.s2We will set root.sg0 as the database if database level is 1If the incoming path is shorter than this value, the creation/insertion will fail. | +| Value | int32 | +| Default | 1 | +| Effective | Restart required. | + +- boolean_string_infer_type + +| Name | boolean_string_infer_type | +| ----------- | ------------------------------------------------------------ | +| Description | register time series as which type when receiving boolean string "true" or "false" | +| Value | BOOLEAN or TEXT | +| Default | BOOLEAN | +| Effective | Restart required. | + +- integer_string_infer_type + +| Name | integer_string_infer_type | +| ----------- | ------------------------------------------------------------ | +| Description | register time series as which type when receiving an integer string and using float or double may lose precision | +| Value | INT32, INT64, FLOAT, DOUBLE, TEXT | +| Default | DOUBLE | +| Effective | Restart required. | + +- floating_string_infer_type + +| Name | floating_string_infer_type | +| ----------- | ------------------------------------------------------------ | +| Description | register time series as which type when receiving a floating number string "6.7" | +| Value | DOUBLE, FLOAT or TEXT | +| Default | DOUBLE | +| Effective | Restart required. | + +- nan_string_infer_type + +| Name | nan_string_infer_type | +| ----------- | ------------------------------------------------------------ | +| Description | register time series as which type when receiving the Literal NaN. | +| Value | DOUBLE, FLOAT or TEXT | +| Default | DOUBLE | +| Effective | Restart required. | + +- default_boolean_encoding + +| Name | default_boolean_encoding | +| ----------- | ------------------------------------------------------------ | +| Description | BOOLEAN encoding when creating schema automatically is enabled | +| Value | PLAIN, RLE | +| Default | RLE | +| Effective | Restart required. | + +- default_int32_encoding + +| Name | default_int32_encoding | +| ----------- | ------------------------------------------------------------ | +| Description | INT32 encoding when creating schema automatically is enabled | +| Value | PLAIN, RLE, TS_2DIFF, REGULAR, GORILLA | +| Default | TS_2DIFF | +| Effective | Restart required. | + +- default_int64_encoding + +| Name | default_int64_encoding | +| ----------- | ------------------------------------------------------------ | +| Description | INT64 encoding when creating schema automatically is enabled | +| Value | PLAIN, RLE, TS_2DIFF, REGULAR, GORILLA | +| Default | TS_2DIFF | +| Effective | Restart required. | + +- default_float_encoding + +| Name | default_float_encoding | +| ----------- | ------------------------------------------------------------ | +| Description | FLOAT encoding when creating schema automatically is enabled | +| Value | PLAIN, RLE, TS_2DIFF, GORILLA | +| Default | GORILLA | +| Effective | Restart required. | + +- default_double_encoding + +| Name | default_double_encoding | +| ----------- | ------------------------------------------------------------ | +| Description | DOUBLE encoding when creating schema automatically is enabled | +| Value | PLAIN, RLE, TS_2DIFF, GORILLA | +| Default | GORILLA | +| Effective | Restart required. | + +- default_text_encoding + +| Name | default_text_encoding | +| ----------- | ----------------------------------------------------------- | +| Description | TEXT encoding when creating schema automatically is enabled | +| Value | PLAIN | +| Default | PLAIN | +| Effective | Restart required. | + +### Query Configurations + +- read_consistency_level + +| Name | read_consistency_level | +| ----------- | ------------------------------------------------------------ | +| Description | The read consistency levelThese consistency levels are currently supported:strong(Default, read from the leader replica)weak(Read from a random replica) | +| Type | String | +| Default | strong | +| Effective | Restart required. | + +- meta_data_cache_enable + +| Name | meta_data_cache_enable | +| ----------- | ------------------------------------------------------------ | +| Description | Whether to cache meta data (BloomFilter, ChunkMetadata and TimeSeriesMetadata) or not. | +| Type | Boolean | +| Default | true | +| Effective | Restart required. | + +- chunk_timeseriesmeta_free_memory_proportion + +| Name | chunk_timeseriesmeta_free_memory_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | Read memory Allocation Ratio: BloomFilterCache : ChunkCache : TimeSeriesMetadataCache : Coordinator : Operators : DataExchange : timeIndex in TsFileResourceList : others.The parameter form is a:b:c:d:e:f:g:h, where a, b, c, d, e, f, g and h are integers. for example: 1:1:1:1:1:1:1:1 , 1:100:200:50:200:200:200:50 | +| Type | String | +| Default | 1 : 100 : 200 : 300 : 400 | +| Effective | Restart required. | + +- enable_last_cache + +| Name | enable_last_cache | +| ----------- | ---------------------------- | +| Description | Whether to enable LAST cache | +| Type | Boolean | +| Default | true | +| Effective | Restart required. | + +- mpp_data_exchange_core_pool_size + +| Name | mpp_data_exchange_core_pool_size | +| ----------- | -------------------------------------------- | +| Description | Core size of ThreadPool of MPP data exchange | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- mpp_data_exchange_max_pool_size + +| Name | mpp_data_exchange_max_pool_size | +| ----------- | ------------------------------------------- | +| Description | Max size of ThreadPool of MPP data exchange | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- mpp_data_exchange_keep_alive_time_in_ms + +| Name | mpp_data_exchange_keep_alive_time_in_ms | +| ----------- | --------------------------------------- | +| Description | Max waiting time for MPP data exchange | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- driver_task_execution_time_slice_in_ms + +| Name | driver_task_execution_time_slice_in_ms | +| ----------- | -------------------------------------- | +| Description | The max execution time of a DriverTask | +| Type | int32 | +| Default | 200 | +| Effective | Restart required. | + +- max_tsblock_size_in_bytes + +| Name | max_tsblock_size_in_bytes | +| ----------- | ----------------------------- | +| Description | The max capacity of a TsBlock | +| Type | int32 | +| Default | 131072 | +| Effective | Restart required. | + +- max_tsblock_line_numbers + +| Name | max_tsblock_line_numbers | +| ----------- | ------------------------------------------- | +| Description | The max number of lines in a single TsBlock | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- slow_query_threshold + +| Name | slow_query_threshold | +| ----------- | -------------------------------------- | +| Description | Time cost(ms) threshold for slow query | +| Type | long | +| Default | 10000 | +| Effective | Hot reload | + +- query_timeout_threshold + +| Name | query_timeout_threshold | +| ----------- | ----------------------------------------- | +| Description | The max executing time of query. unit: ms | +| Type | Int32 | +| Default | 60000 | +| Effective | Restart required. | + +- max_allowed_concurrent_queries + +| Name | max_allowed_concurrent_queries | +| ----------- | -------------------------------------------------- | +| Description | The maximum allowed concurrently executing queries | +| Type | Int32 | +| Default | 1000 | +| Effective | Restart required. | + +- query_thread_count + +| Name | query_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | How many threads can concurrently execute query statement. When <= 0, use CPU core number. | +| Type | Int32 | +| Default | 0 | +| Effective | Restart required. | + +- degree_of_query_parallelism + +| Name | degree_of_query_parallelism | +| ----------- | ------------------------------------------------------------ | +| Description | How many pipeline drivers will be created for one fragment instance. When <= 0, use CPU core number / 2. | +| Type | Int32 | +| Default | 0 | +| Effective | Restart required. | + +- mode_map_size_threshold + +| Name | mode_map_size_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | The threshold of count map size when calculating the MODE aggregation function | +| Type | Int32 | +| Default | 10000 | +| Effective | Restart required. | + +- batch_size + +| Name | batch_size | +| ----------- | ------------------------------------------------------------ | +| Description | The amount of data iterate each time in server (the number of data strips, that is, the number of different timestamps.) | +| Type | Int32 | +| Default | 100000 | +| Effective | Restart required. | + +- sort_buffer_size_in_bytes + +| Name | sort_buffer_size_in_bytes | +| ----------- | ------------------------------------------------------------ | +| Description | The memory for external sort in sort operator, when the data size is smaller than sort_buffer_size_in_bytes, the sort operator will use in-memory sort. | +| Type | long | +| Default | 1048576 | +| Effective | Restart required. | + +- merge_threshold_of_explain_analyze + +| Name | merge_threshold_of_explain_analyze | +| ----------- | ------------------------------------------------------------ | +| Description | The threshold of operator count in the result set of EXPLAIN ANALYZE, if the number of operator in the result set is larger than this threshold, operator will be merged. | +| Type | int | +| Default | 10 | +| Effective | Hot reload | + +### TTL Configuration + +- ttl_check_interval + +| Name | ttl_check_interval | +| ----------- | ------------------------------------------------------------ | +| Description | The interval of TTL check task in each database. The TTL check task will inspect and select files with a higher volume of expired data for compaction. Default is 2 hours. | +| Type | int | +| Default | 7200000 | +| Effective | Restart required. | + +- max_expired_time + +| Name | max_expired_time | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum expiring time of device which has a ttl. Default is 1 month.If the data elapsed time (current timestamp minus the maximum data timestamp of the device in the file) of such devices exceeds this value, then the file will be cleaned by compaction. | +| Type | int | +| Default | 2592000000 | +| Effective | Restart required. | + +- expired_data_ratio + +| Name | expired_data_ratio | +| ----------- | ------------------------------------------------------------ | +| Description | The expired device ratio. If the ratio of expired devices in one file exceeds this value, then expired data of this file will be cleaned by compaction. | +| Type | float | +| Default | 0.3 | +| Effective | Restart required. | + +### Storage Engine Configuration + +- timestamp_precision + +| Name | timestamp_precision | +| ----------- | ------------------------------------------------------------ | +| Description | Use this value to set timestamp precision as "ms", "us" or "ns". | +| Type | String | +| Default | ms | +| Effective | Modify before the first startup. | + +- timestamp_precision_check_enabled + +| Name | timestamp_precision_check_enabled | +| ----------- | ------------------------------------------------------------ | +| Description | When the timestamp precision check is enabled, the timestamps those are over 13 digits for ms precision, or over 16 digits for us precision are not allowed to be inserted. | +| Type | Boolean | +| Default | true | +| Effective | Modify before the first startup. | + +- max_waiting_time_when_insert_blocked + +| Name | max_waiting_time_when_insert_blocked | +| ----------- | ------------------------------------------------------------ | +| Description | When the waiting time (in ms) of an inserting exceeds this, throw an exception. 10000 by default. | +| Type | Int32 | +| Default | 10000 | +| Effective | Restart required. | + +- handle_system_error + +| Name | handle_system_error | +| ----------- | -------------------------------------------------------- | +| Description | What will the system do when unrecoverable error occurs. | +| Type | String | +| Default | CHANGE_TO_READ_ONLY | +| Effective | Restart required. | + +- enable_timed_flush_seq_memtable + +| Name | enable_timed_flush_seq_memtable | +| ----------- | --------------------------------------------------- | +| Description | Whether to timed flush sequence tsfiles' memtables. | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- seq_memtable_flush_interval_in_ms + +| Name | seq_memtable_flush_interval_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | If a memTable's last update time is older than current time minus this, the memtable will be flushed to disk. | +| Type | long | +| Default | 600000 | +| Effective | Hot reload | + +- seq_memtable_flush_check_interval_in_ms + +| Name | seq_memtable_flush_check_interval_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | The interval to check whether sequence memtables need flushing. | +| Type | long | +| Default | 30000 | +| Effective | Hot reload | + +- enable_timed_flush_unseq_memtable + +| Name | enable_timed_flush_unseq_memtable | +| ----------- | ----------------------------------------------------- | +| Description | Whether to timed flush unsequence tsfiles' memtables. | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- unseq_memtable_flush_interval_in_ms + +| Name | unseq_memtable_flush_interval_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | If a memTable's last update time is older than current time minus this, the memtable will be flushed to disk. | +| Type | long | +| Default | 600000 | +| Effective | Hot reload | + +- unseq_memtable_flush_check_interval_in_ms + +| Name | unseq_memtable_flush_check_interval_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | The interval to check whether unsequence memtables need flushing. | +| Type | long | +| Default | 30000 | +| Effective | Hot reload | + +- tvlist_sort_algorithm + +| Name | tvlist_sort_algorithm | +| ----------- | ------------------------------------------------- | +| Description | The sort algorithms used in the memtable's TVList | +| Type | String | +| Default | TIM | +| Effective | Restart required. | + +- avg_series_point_number_threshold + +| Name | avg_series_point_number_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | When the average point number of timeseries in memtable exceeds this, the memtable is flushed to disk. | +| Type | int32 | +| Default | 100000 | +| Effective | Restart required. | + +- flush_thread_count + +| Name | flush_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | How many threads can concurrently flush. When <= 0, use CPU core number. | +| Type | int32 | +| Default | 0 | +| Effective | Restart required. | + +- enable_partial_insert + +| Name | enable_partial_insert | +| ----------- | ------------------------------------------------------------ | +| Description | In one insert (one device, one timestamp, multiple measurements), if enable partial insert, one measurement failure will not impact other measurements | +| Type | Boolean | +| Default | true | +| Effective | Restart required. | + +- recovery_log_interval_in_ms + +| Name | recovery_log_interval_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | the interval to log recover progress of each vsg when starting iotdb | +| Type | Int32 | +| Default | 5000 | +| Effective | Restart required. | + +- 0.13_data_insert_adapt + +| Name | 0.13_data_insert_adapt | +| ----------- | ------------------------------------------------------------ | +| Description | If using a v0.13 client to insert data, please set this configuration to true. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- enable_tsfile_validation + +| Name | enable_tsfile_validation | +| ----------- | ------------------------------------------------------------ | +| Description | Verify that TSfiles generated by Flush, Load, and Compaction are correct. | +| Type | boolean | +| Default | false | +| Effective | Hot reload | + +- tier_ttl_in_ms + +| Name | tier_ttl_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | Default tier TTL. When the survival time of the data exceeds the threshold, it will be migrated to the next tier. | +| Type | long | +| Default | -1 | +| Effective | Restart required. | + +### Compaction Configurations + +- enable_seq_space_compaction + +| Name | enable_seq_space_compaction | +| ----------- | ---------------------------------------------------------- | +| Description | sequence space compaction: only compact the sequence files | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- enable_unseq_space_compaction + +| Name | enable_unseq_space_compaction | +| ----------- | ------------------------------------------------------------ | +| Description | unsequence space compaction: only compact the unsequence files | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- enable_cross_space_compaction + +| Name | enable_cross_space_compaction | +| ----------- | ------------------------------------------------------------ | +| Description | cross space compaction: compact the unsequence files into the overlapped sequence files | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- enable_auto_repair_compaction + +| Name | enable_auto_repair_compaction | +| ----------- | ---------------------------------------------- | +| Description | enable auto repair unsorted file by compaction | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- cross_selector + +| Name | cross_selector | +| ----------- | ------------------------------------------- | +| Description | the selector of cross space compaction task | +| Type | String | +| Default | rewrite | +| Effective | Restart required. | + +- cross_performer + +| Name | cross_performer | +| ----------- | ------------------------------------------------------- | +| Description | the compaction performer of cross space compaction task | +| Type | String | +| Default | fast | +| Effective | Restart required. | + +- inner_seq_selector + +| Name | inner_seq_selector | +| ----------- | ---------------------------------------------------- | +| Description | the selector of inner sequence space compaction task | +| Type | String | +| Default | size_tiered_multi_target | +| Effective | Hot reload | + +- inner_seq_performer + +| Name | inner_seq_performer | +| ----------- | ----------------------------------------------------- | +| Description | the performer of inner sequence space compaction task | +| Type | String | +| Default | read_chunk | +| Effective | Restart required. | + +- inner_unseq_selector + +| Name | inner_unseq_selector | +| ----------- | ------------------------------------------------------ | +| Description | the selector of inner unsequence space compaction task | +| Type | String | +| Default | size_tiered_multi_target | +| Effective | Hot reload | + +- inner_unseq_performer + +| Name | inner_unseq_performer | +| ----------- | ------------------------------------------------------- | +| Description | the performer of inner unsequence space compaction task | +| Type | String | +| Default | fast | +| Effective | Restart required. | + +- compaction_priority + +| Name | compaction_priority | +| ----------- | ------------------------------------------------------------ | +| Description | The priority of compaction executionINNER_CROSS: prioritize inner space compaction, reduce the number of files firstCROSS_INNER: prioritize cross space compaction, eliminate the unsequence files firstBALANCE: alternate two compaction types | +| Type | String | +| Default | INNER_CROSS | +| Effective | 重启服务生效 | + +- candidate_compaction_task_queue_size + +| Name | candidate_compaction_task_queue_size | +| ----------- | -------------------------------------------- | +| Description | The size of candidate compaction task queue. | +| Type | int32 | +| Default | 50 | +| Effective | Restart required. | + +- target_compaction_file_size + +| Name | target_compaction_file_size | +| ----------- | ------------------------------------------------------------ | +| Description | This parameter is used in two places:The target tsfile size of inner space compaction.The candidate size of seq tsfile in cross space compaction will be smaller than target_compaction_file_size * 1.5.In most cases, the target file size of cross compaction won't exceed this threshold, and if it does, it will not be much larger than it. | +| Type | Int64 | +| Default | 2147483648 | +| Effective | Hot reload | + +- inner_compaction_total_file_size_threshold + +| Name | inner_compaction_total_file_size_threshold | +| ----------- | ---------------------------------------------------- | +| Description | The total file size limit in inner space compaction. | +| Type | int64 | +| Default | 10737418240 | +| Effective | Hot reload | + +- inner_compaction_total_file_num_threshold + +| Name | inner_compaction_total_file_num_threshold | +| ----------- | --------------------------------------------------- | +| Description | The total file num limit in inner space compaction. | +| Type | int32 | +| Default | 100 | +| Effective | Hot reload | + +- max_level_gap_in_inner_compaction + +| Name | max_level_gap_in_inner_compaction | +| ----------- | ----------------------------------------------- | +| Description | The max level gap in inner compaction selection | +| Type | int32 | +| Default | 2 | +| Effective | Hot reload | + +- target_chunk_size + +| Name | target_chunk_size | +| ----------- | ------------------------------------------------------------ | +| Description | The target chunk size in compaction and when memtable reaches this threshold, flush the memtable to disk. | +| Type | Int64 | +| Default | 1048576 | +| Effective | Restart required. | + +- target_chunk_point_num + +| Name | target_chunk_point_num | +| ----------- | ------------------------------------------------ | +| Description | The target point nums in one chunk in compaction | +| Type | int32 | +| Default | 100000 | +| Effective | Restart required. | + +- chunk_size_lower_bound_in_compaction + +| Name | chunk_size_lower_bound_in_compaction | +| ----------- | ------------------------------------------------------------ | +| Description | If the chunk size is lower than this threshold, it will be deserialized into points | +| Type | Int64 | +| Default | 128 | +| Effective | Restart required. | + +- chunk_point_num_lower_bound_in_compaction + +| Name | chunk_point_num_lower_bound_in_compaction | +| ----------- | ------------------------------------------------------------ | +| Description | If the chunk point num is lower than this threshold, it will be deserialized into points | +| Type | int32 | +| Default | 100 | +| Effective | Restart required. | + +- inner_compaction_candidate_file_num + +| Name | inner_compaction_candidate_file_num | +| ----------- | ------------------------------------------------------------ | +| Description | The file num requirement when selecting inner space compaction candidate files | +| Type | int32 | +| Default | 30 | +| Effective | Hot reload | + +- max_cross_compaction_candidate_file_num + +| Name | max_cross_compaction_candidate_file_num | +| ----------- | ------------------------------------------------------------ | +| Description | The max file when selecting cross space compaction candidate files | +| Type | int32 | +| Default | 500 | +| Effective | Hot reload | + +- max_cross_compaction_candidate_file_size + +| Name | max_cross_compaction_candidate_file_size | +| ----------- | ------------------------------------------------------------ | +| Description | The max total size when selecting cross space compaction candidate files | +| Type | Int64 | +| Default | 5368709120 | +| Effective | Hot reload | + +- min_cross_compaction_unseq_file_level + +| Name | min_cross_compaction_unseq_file_level | +| ----------- | ------------------------------------------------------------ | +| Description | The min inner compaction level of unsequence file which can be selected as candidate | +| Type | int32 | +| Default | 1 | +| Effective | Hot reload | + +- compaction_thread_count + +| Name | compaction_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | How many threads will be set up to perform compaction, 10 by default. | +| Type | int32 | +| Default | 10 | +| Effective | Hot reload | + +- compaction_max_aligned_series_num_in_one_batch + +| Name | compaction_max_aligned_series_num_in_one_batch | +| ----------- | ------------------------------------------------------------ | +| Description | How many chunk will be compacted in aligned series compaction, 10 by default. | +| Type | int32 | +| Default | 10 | +| Effective | Hot reload | + +- compaction_schedule_interval_in_ms + +| Name | compaction_schedule_interval_in_ms | +| ----------- | ---------------------------------------- | +| Description | The interval of compaction task schedule | +| Type | Int64 | +| Default | 60000 | +| Effective | Restart required. | + +- compaction_write_throughput_mb_per_sec + +| Name | compaction_write_throughput_mb_per_sec | +| ----------- | -------------------------------------------------------- | +| Description | The limit of write throughput merge can reach per second | +| Type | int32 | +| Default | 16 | +| Effective | Restart required. | + +- compaction_read_throughput_mb_per_sec + +| Name | compaction_read_throughput_mb_per_sec | +| ----------- | ------------------------------------------------------- | +| Description | The limit of read throughput merge can reach per second | +| Type | int32 | +| Default | 0 | +| Effective | Hot reload | + +- compaction_read_operation_per_sec + +| Name | compaction_read_operation_per_sec | +| ----------- | ------------------------------------------------------ | +| Description | The limit of read operation merge can reach per second | +| Type | int32 | +| Default | 0 | +| Effective | Hot reload | + +- sub_compaction_thread_count + +| Name | sub_compaction_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | The number of sub compaction threads to be set up to perform compaction. | +| Type | int32 | +| Default | 4 | +| Effective | Hot reload | + +- inner_compaction_task_selection_disk_redundancy + +| Name | inner_compaction_task_selection_disk_redundancy | +| ----------- | ------------------------------------------------------------ | +| Description | Redundancy value of disk availability, only use for inner compaction. | +| Type | double | +| Default | 0.05 | +| Effective | Hot reload | + +- inner_compaction_task_selection_mods_file_threshold + +| Name | inner_compaction_task_selection_mods_file_threshold | +| ----------- | -------------------------------------------------------- | +| Description | Mods file size threshold, only use for inner compaction. | +| Type | long | +| Default | 131072 | +| Effective | Hot reload | + +- compaction_schedule_thread_num + +| Name | compaction_schedule_thread_num | +| ----------- | ------------------------------------------------------------ | +| Description | The number of threads to be set up to select compaction task. | +| Type | int32 | +| Default | 4 | +| Effective | Hot reload | + +### Write Ahead Log Configuration + +- wal_mode + +| Name | wal_mode | +| ----------- | ------------------------------------------------------------ | +| Description | The details of these three modes are as follows:DISABLE: the system will disable wal.SYNC: the system will submit wal synchronously, write request will not return until its wal is fsynced to the disk successfully.ASYNC: the system will submit wal asynchronously, write request will return immediately no matter its wal is fsynced to the disk successfully. | +| Type | String | +| Default | ASYNC | +| Effective | Restart required. | + +- max_wal_nodes_num + +| Name | max_wal_nodes_num | +| ----------- | ------------------------------------------------------------ | +| Description | each node corresponds to one wal directory The default value 0 means the number is determined by the system, the number is in the range of [data region num / 2, data region num]. | +| Type | int32 | +| Default | 0 | +| Effective | Restart required. | + +- wal_async_mode_fsync_delay_in_ms + +| Name | wal_async_mode_fsync_delay_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | Duration a wal flush operation will wait before calling fsync in the async mode | +| Type | int32 | +| Default | 1000 | +| Effective | Hot reload | + +- wal_sync_mode_fsync_delay_in_ms + +| Name | wal_sync_mode_fsync_delay_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | Duration a wal flush operation will wait before calling fsync in the sync mode | +| Type | int32 | +| Default | 3 | +| Effective | Hot reload | + +- wal_buffer_size_in_byte + +| Name | wal_buffer_size_in_byte | +| ----------- | ---------------------------- | +| Description | Buffer size of each wal node | +| Type | int32 | +| Default | 33554432 | +| Effective | Restart required. | + +- wal_buffer_queue_capacity + +| Name | wal_buffer_queue_capacity | +| ----------- | --------------------------------- | +| Description | Buffer capacity of each wal queue | +| Type | int32 | +| Default | 500 | +| Effective | Restart required. | + +- wal_file_size_threshold_in_byte + +| Name | wal_file_size_threshold_in_byte | +| ----------- | ------------------------------- | +| Description | Size threshold of each wal file | +| Type | int32 | +| Default | 31457280 | +| Effective | Hot reload | + +- wal_min_effective_info_ratio + +| Name | wal_min_effective_info_ratio | +| ----------- | --------------------------------------------------- | +| Description | Minimum ratio of effective information in wal files | +| Type | double | +| Default | 0.1 | +| Effective | Hot reload | + +- wal_memtable_snapshot_threshold_in_byte + +| Name | wal_memtable_snapshot_threshold_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | MemTable size threshold for triggering MemTable snapshot in wal | +| Type | int64 | +| Default | 8388608 | +| Effective | Hot reload | + +- max_wal_memtable_snapshot_num + +| Name | max_wal_memtable_snapshot_num | +| ----------- | ------------------------------------- | +| Description | MemTable's max snapshot number in wal | +| Type | int32 | +| Default | 1 | +| Effective | Hot reload | + +- delete_wal_files_period_in_ms + +| Name | delete_wal_files_period_in_ms | +| ----------- | ----------------------------------------------------------- | +| Description | The period when outdated wal files are periodically deleted | +| Type | int64 | +| Default | 20000 | +| Effective | Hot reload | + +- wal_throttle_threshold_in_byte + +| Name | wal_throttle_threshold_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | The minimum size of wal files when throttle down in IoTConsensus | +| Type | long | +| Default | 53687091200 | +| Effective | Hot reload | + +- iot_consensus_cache_window_time_in_ms + +| Name | iot_consensus_cache_window_time_in_ms | +| ----------- | ------------------------------------------------ | +| Description | Maximum wait time of write cache in IoTConsensus | +| Type | long | +| Default | -1 | +| Effective | Hot reload | + +- enable_wal_compression + +| Name | iot_consensus_cache_window_time_in_ms | +| ----------- | ------------------------------------- | +| Description | Enable Write Ahead Log compression. | +| Type | boolean | +| Default | true | +| Effective | Hot reload | + +### **IoTConsensus Configuration** + +- data_region_iot_max_log_entries_num_per_batch + +| Name | data_region_iot_max_log_entries_num_per_batch | +| ----------- | ------------------------------------------------- | +| Description | The maximum log entries num in IoTConsensus Batch | +| Type | int32 | +| Default | 1024 | +| Effective | Restart required. | + +- data_region_iot_max_size_per_batch + +| Name | data_region_iot_max_size_per_batch | +| ----------- | -------------------------------------- | +| Description | The maximum size in IoTConsensus Batch | +| Type | int32 | +| Default | 16777216 | +| Effective | Restart required. | + +- data_region_iot_max_pending_batches_num + +| Name | data_region_iot_max_pending_batches_num | +| ----------- | ----------------------------------------------- | +| Description | The maximum pending batches num in IoTConsensus | +| Type | int32 | +| Default | 5 | +| Effective | Restart required. | + +- data_region_iot_max_memory_ratio_for_queue + +| Name | data_region_iot_max_memory_ratio_for_queue | +| ----------- | -------------------------------------------------- | +| Description | The maximum memory ratio for queue in IoTConsensus | +| Type | double | +| Default | 0.6 | +| Effective | Restart required. | + +- region_migration_speed_limit_bytes_per_second + +| Name | region_migration_speed_limit_bytes_per_second | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum transit size in byte per second for region migration | +| Type | long | +| Default | 33554432 | +| Effective | Restart required. | + +### TsFile Configurations + +- group_size_in_byte + +| Name | group_size_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum number of bytes written to disk each time the data in memory is written to disk | +| Type | int32 | +| Default | 134217728 | +| Effective | Hot reload | + +- page_size_in_byte + +| Name | page_size_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | The memory size for each series writer to pack page, default value is 64KB | +| Type | int32 | +| Default | 65536 | +| Effective | Hot reload | + +- max_number_of_points_in_page + +| Name | max_number_of_points_in_page | +| ----------- | ------------------------------------------- | +| Description | The maximum number of data points in a page | +| Type | int32 | +| Default | 10000 | +| Effective | Hot reload | + +- pattern_matching_threshold + +| Name | pattern_matching_threshold | +| ----------- | ------------------------------------------- | +| Description | The threshold for pattern matching in regex | +| Type | int32 | +| Default | 1000000 | +| Effective | Hot reload | + +- float_precision + +| Name | float_precision | +| ----------- | ------------------------------------------------------------ | +| Description | Floating-point precision of query results.Only effective for RLE and TS_2DIFF encodings.Due to the limitation of machine precision, some values may not be interpreted strictly. | +| Type | int32 | +| Default | 2 | +| Effective | Hot reload | + +- value_encoder + +| Name | value_encoder | +| ----------- | ------------------------------------------------------------ | +| Description | Encoder of value series. default value is PLAIN. | +| Type | For int, long data type, also supports TS_2DIFF and RLE(run-length encoding), GORILLA and ZIGZAG. | +| Default | PLAIN | +| Effective | Hot reload | + +- compressor + +| Name | compressor | +| ----------- | ------------------------------------------------------------ | +| Description | Compression configuration And it is also used as the default compressor of time column in aligned timeseries. | +| Type | Data compression method, supports UNCOMPRESSED, SNAPPY, ZSTD, LZMA2 or LZ4. Default value is LZ4 | +| Default | LZ4 | +| Effective | Hot reload | + +- encrypt_flag + +| Name | compressor | +| ----------- | ---------------------- | +| Description | Enable data encryption | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- encrypt_type + +| Name | compressor | +| ----------- | ------------------------------------- | +| Description | The method of data encrytion | +| Type | String | +| Default | org.apache.tsfile.encrypt.UNENCRYPTED | +| Effective | Restart required. | + +- encrypt_key_path + +| Name | encrypt_key_path | +| ----------- | ----------------------------------- | +| Description | The path of key for data encryption | +| Type | String | +| Default | None | +| Effective | Restart required. | + +### Authorization Configuration + +- authorizer_provider_class + +| Name | authorizer_provider_class | +| ----------- | ------------------------------------------------------------ | +| Description | which class to serve for authorization. | +| Type | String | +| Default | org.apache.iotdb.commons.auth.authorizer.LocalFileAuthorizer | +| Effective | Restart required. | +| 其他可选值 | org.apache.iotdb.commons.auth.authorizer.OpenIdAuthorizer | + +- openID_url + +| Name | openID_url | +| ----------- | ------------------------------------------------------------ | +| Description | The url of openID server If OpenIdAuthorizer is enabled, then openID_url must be set. | +| Type | String(a http link) | +| Default | None | +| Effective | Restart required. | + +- iotdb_server_encrypt_decrypt_provider + +| Name | iotdb_server_encrypt_decrypt_provider | +| ----------- | ------------------------------------------------------------ | +| Description | encryption provider class | +| Type | String | +| Default | org.apache.iotdb.commons.security.encrypt.MessageDigestEncrypt | +| Effective | Modify before the first startup. | + +- iotdb_server_encrypt_decrypt_provider_parameter + +| Name | iotdb_server_encrypt_decrypt_provider_parameter | +| ----------- | ----------------------------------------------- | +| Description | encryption provided class parameter | +| Type | String | +| Default | None | +| Effective | Modify before the first startup. | + +- author_cache_size + +| Name | author_cache_size | +| ----------- | --------------------------- | +| Description | Cache size of user and role | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- author_cache_expire_time + +| Name | author_cache_expire_time | +| ----------- | ---------------------------------- | +| Description | Cache expire time of user and role | +| Type | int32 | +| Default | 30 | +| Effective | Restart required. | + +### UDF Configuration + +- udf_initial_byte_array_length_for_memory_control + +| Name | udf_initial_byte_array_length_for_memory_control | +| ----------- | ------------------------------------------------------------ | +| Description | Used to estimate the memory usage of text fields in a UDF query.It is recommended to set this value to be slightly larger than the average length of all text records. | +| Type | int32 | +| Default | 48 | +| Effective | Restart required. | + +- udf_memory_budget_in_mb + +| Name | udf_memory_budget_in_mb | +| ----------- | ------------------------------------------------------------ | +| Description | How much memory may be used in ONE UDF query (in MB). The upper limit is 20% of allocated memory for read. | +| Type | Float | +| Default | 30.0 | +| Effective | Restart required. | + +- udf_reader_transformer_collector_memory_proportion + +| Name | udf_reader_transformer_collector_memory_proportion | +| ----------- | ------------------------------------------------------------ | +| Description | UDF memory allocation ratio.The parameter form is a:b:c, where a, b, and c are integers. | +| Type | String | +| Default | 1:1:1 | +| Effective | Restart required. | + +- udf_lib_dir + +| Name | udf_lib_dir | +| ----------- | ---------------------------- | +| Description | the udf lib directory | +| Type | String | +| Default | ext/udf(Windows:ext\\udf) | +| Effective | Restart required. | + +### Trigger Configuration + +- trigger_lib_dir + +| Name | trigger_lib_dir | +| ----------- | ------------------------- | +| Description | the trigger lib directory | +| Type | String | +| Default | ext/trigger | +| Effective | Restart required. | + +- stateful_trigger_retry_num_when_not_found + +| Name | stateful_trigger_retry_num_when_not_found | +| ----------- | ------------------------------------------------------------ | +| Description | How many times will we retry to found an instance of stateful trigger on DataNodes | +| Type | Int32 | +| Default | 3 | +| Effective | Restart required. | + +### **Select-Into Configuration** + +- into_operation_buffer_size_in_byte + +| Name | into_operation_buffer_size_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum memory occupied by the data to be written when executing select-into statements. | +| Type | long | +| Default | 104857600 | +| Effective | Hot reload | + +- select_into_insert_tablet_plan_row_limit + +| Name | select_into_insert_tablet_plan_row_limit | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum number of rows can be processed in insert-tablet-plan when executing select-into statements. | +| Type | int32 | +| Default | 10000 | +| Effective | Hot reload | + +- into_operation_execution_thread_count + +| Name | into_operation_execution_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | The number of threads in the thread pool that execute insert-tablet tasks | +| Type | int32 | +| Default | 2 | +| Effective | Restart required. | + +### Continuous Query Configuration + +- continuous_query_submit_thread_count + +| Name | continuous_query_execution_thread | +| ----------- | ------------------------------------------------------------ | +| Description | The number of threads in the scheduled thread pool that submit continuous query tasks periodically | +| Type | int32 | +| Default | 2 | +| Effective | Restart required. | + +- continuous_query_min_every_interval_in_ms + +| Name | continuous_query_min_every_interval_in_ms | +| ----------- | ------------------------------------------------------------ | +| Description | The minimum value of the continuous query execution time interval | +| Type | long (duration) | +| Default | 1000 | +| Effective | Restart required. | + +### Pipe Configuration + +- pipe_lib_dir + +| Name | pipe_lib_dir | +| ----------- | ----------------------- | +| Description | the pipe lib directory. | +| Type | string | +| Default | ext/pipe | +| Effective | Not support modify | + +- pipe_subtask_executor_max_thread_num + +| Name | pipe_subtask_executor_max_thread_num | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum number of threads that can be used to execute the pipe subtasks in PipeSubtaskExecutor. The actual value will be min(pipe_subtask_executor_max_thread_num, max(1, CPU core number / 2)). | +| Type | int | +| Default | 5 | +| Effective | Restart required. | + +- pipe_sink_timeout_ms + +| Name | pipe_sink_timeout_ms | +| ----------- | ------------------------------------------------------------ | +| Description | The connection timeout (in milliseconds) for the thrift client. | +| Type | int | +| Default | 900000 | +| Effective | Restart required. | + +- pipe_sink_selector_number + +| Name | pipe_sink_selector_number | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum number of selectors that can be used in the sink.Recommend to set this value to less than or equal to pipe_sink_max_client_number. | +| Type | int | +| Default | 4 | +| Effective | Restart required. | + +- pipe_sink_max_client_number + +| Name | pipe_sink_max_client_number | +| ----------- | ----------------------------------------------------------- | +| Description | The maximum number of clients that can be used in the sink. | +| Type | int | +| Default | 16 | +| Effective | Restart required. | + +- pipe_air_gap_receiver_enabled + +| Name | pipe_air_gap_receiver_enabled | +| ----------- | ------------------------------------------------------------ | +| Description | Whether to enable receiving pipe data through air gap.The receiver can only return 0 or 1 in TCP mode to indicate whether the data is received successfully. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- pipe_air_gap_receiver_port + +| Name | pipe_air_gap_receiver_port | +| ----------- | ------------------------------------------------------------ | +| Description | The port for the server to receive pipe data through air gap. | +| Type | int | +| Default | 9780 | +| Effective | Restart required. | + +- pipe_all_sinks_rate_limit_bytes_per_second + +| Name | pipe_all_sinks_rate_limit_bytes_per_second | +| ----------- | ------------------------------------------------------------ | +| Description | The total bytes that all pipe sinks can transfer per second.When given a value less than or equal to 0, it means no limit. default value is -1, which means no limit. | +| Type | double | +| Default | -1 | +| Effective | Hot reload | + +### RatisConsensus Configuration + +- config_node_ratis_log_appender_buffer_size_max + +| Name | config_node_ratis_log_appender_buffer_size_max | +| ----------- | ------------------------------------------------------------ | +| Description | max payload size for a single log-sync-RPC from leader to follower of ConfigNode (in byte, by default 16MB) | +| Type | int32 | +| Default | 16777216 | +| Effective | Restart required. | + +- schema_region_ratis_log_appender_buffer_size_max + +| Name | schema_region_ratis_log_appender_buffer_size_max | +| ----------- | ------------------------------------------------------------ | +| Description | max payload size for a single log-sync-RPC from leader to follower of SchemaRegion (in byte, by default 16MB) | +| Type | int32 | +| Default | 16777216 | +| Effective | Restart required. | + +- data_region_ratis_log_appender_buffer_size_max + +| Name | data_region_ratis_log_appender_buffer_size_max | +| ----------- | ------------------------------------------------------------ | +| Description | max payload size for a single log-sync-RPC from leader to follower of DataRegion (in byte, by default 16MB) | +| Type | int32 | +| Default | 16777216 | +| Effective | Restart required. | + +- config_node_ratis_snapshot_trigger_threshold + +| Name | config_node_ratis_snapshot_trigger_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | max numbers of snapshot_trigger_threshold logs to trigger a snapshot of Confignode | +| Type | int32 | +| Default | 400,000 | +| Effective | Restart required. | + +- schema_region_ratis_snapshot_trigger_threshold + +| Name | schema_region_ratis_snapshot_trigger_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | max numbers of snapshot_trigger_threshold logs to trigger a snapshot of SchemaRegion | +| Type | int32 | +| Default | 400,000 | +| Effective | Restart required. | + +- data_region_ratis_snapshot_trigger_threshold + +| Name | data_region_ratis_snapshot_trigger_threshold | +| ----------- | ------------------------------------------------------------ | +| Description | max numbers of snapshot_trigger_threshold logs to trigger a snapshot of DataRegion | +| Type | int32 | +| Default | 400,000 | +| Effective | Restart required. | + +- config_node_ratis_log_unsafe_flush_enable + +| Name | config_node_ratis_log_unsafe_flush_enable | +| ----------- | ------------------------------------------------------ | +| Description | Is confignode allowed flushing Raft Log asynchronously | +| Type | boolean | +| Default | false | +| Effective | Restart required. | + +- schema_region_ratis_log_unsafe_flush_enable + +| Name | schema_region_ratis_log_unsafe_flush_enable | +| ----------- | -------------------------------------------------------- | +| Description | Is schemaregion allowed flushing Raft Log asynchronously | +| Type | boolean | +| Default | false | +| Effective | Restart required. | + +- data_region_ratis_log_unsafe_flush_enable + +| Name | data_region_ratis_log_unsafe_flush_enable | +| ----------- | ------------------------------------------------------ | +| Description | Is dataregion allowed flushing Raft Log asynchronously | +| Type | boolean | +| Default | false | +| Effective | Restart required. | + +- config_node_ratis_log_segment_size_max_in_byte + +| Name | config_node_ratis_log_segment_size_max_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | max capacity of a RaftLog segment file of confignode (in byte, by default 24MB) | +| Type | int32 | +| Default | 25165824 | +| Effective | Restart required. | + +- schema_region_ratis_log_segment_size_max_in_byte + +| Name | schema_region_ratis_log_segment_size_max_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | max capacity of a RaftLog segment file of schemaregion (in byte, by default 24MB) | +| Type | int32 | +| Default | 25165824 | +| Effective | Restart required. | + +- data_region_ratis_log_segment_size_max_in_byte + +| Name | data_region_ratis_log_segment_size_max_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | max capacity of a RaftLog segment file of dataregion(in byte, by default 24MB) | +| Type | int32 | +| Default | 25165824 | +| Effective | Restart required. | + +- config_node_simple_consensus_log_segment_size_max_in_byte + +| Name | data_region_ratis_log_segment_size_max_in_byte | +| ----------- | ------------------------------------------------------------ | +| Description | max capacity of a simple log segment file of confignode(in byte, by default 24MB) | +| Type | int32 | +| Default | 25165824 | +| Effective | Restart required. | + +- config_node_ratis_grpc_flow_control_window + +| Name | config_node_ratis_grpc_flow_control_window | +| ----------- | ---------------------------------------------------------- | +| Description | confignode flow control window for ratis grpc log appender | +| Type | int32 | +| Default | 4194304 | +| Effective | Restart required. | + +- schema_region_ratis_grpc_flow_control_window + +| Name | schema_region_ratis_grpc_flow_control_window | +| ----------- | ------------------------------------------------------------ | +| Description | schema region flow control window for ratis grpc log appender | +| Type | int32 | +| Default | 4194304 | +| Effective | Restart required. | + +- data_region_ratis_grpc_flow_control_window + +| Name | data_region_ratis_grpc_flow_control_window | +| ----------- | ----------------------------------------------------------- | +| Description | data region flow control window for ratis grpc log appender | +| Type | int32 | +| Default | 4194304 | +| Effective | Restart required. | + +- config_node_ratis_grpc_leader_outstanding_appends_max + +| Name | config_node_ratis_grpc_leader_outstanding_appends_max | +| ----------- | ----------------------------------------------------- | +| Description | config node grpc line concurrency threshold | +| Type | int32 | +| Default | 128 | +| Effective | Restart required. | + +- schema_region_ratis_grpc_leader_outstanding_appends_max + +| Name | schema_region_ratis_grpc_leader_outstanding_appends_max | +| ----------- | ------------------------------------------------------- | +| Description | schema region grpc line concurrency threshold | +| Type | int32 | +| Default | 128 | +| Effective | Restart required. | + +- data_region_ratis_grpc_leader_outstanding_appends_max + +| Name | data_region_ratis_grpc_leader_outstanding_appends_max | +| ----------- | ----------------------------------------------------- | +| Description | data region grpc line concurrency threshold | +| Type | int32 | +| Default | 128 | +| Effective | Restart required. | + +- config_node_ratis_log_force_sync_num + +| Name | config_node_ratis_log_force_sync_num | +| ----------- | ------------------------------------ | +| Description | config node fsync threshold | +| Type | int32 | +| Default | 128 | +| Effective | Restart required. | + +- schema_region_ratis_log_force_sync_num + +| Name | schema_region_ratis_log_force_sync_num | +| ----------- | -------------------------------------- | +| Description | schema region fsync threshold | +| Type | int32 | +| Default | 128 | +| Effective | Restart required. | + +- data_region_ratis_log_force_sync_num + +| Name | data_region_ratis_log_force_sync_num | +| ----------- | ------------------------------------ | +| Description | data region fsync threshold | +| Type | int32 | +| Default | 128 | +| Effective | Restart required. | + +- config_node_ratis_rpc_leader_election_timeout_min_ms + +| Name | config_node_ratis_rpc_leader_election_timeout_min_ms | +| ----------- | ---------------------------------------------------- | +| Description | confignode leader min election timeout | +| Type | int32 | +| Default | 2000ms | +| Effective | Restart required. | + +- schema_region_ratis_rpc_leader_election_timeout_min_ms + +| Name | schema_region_ratis_rpc_leader_election_timeout_min_ms | +| ----------- | ------------------------------------------------------ | +| Description | schema region leader min election timeout | +| Type | int32 | +| Default | 2000ms | +| Effective | Restart required. | + +- data_region_ratis_rpc_leader_election_timeout_min_ms + +| Name | data_region_ratis_rpc_leader_election_timeout_min_ms | +| ----------- | ---------------------------------------------------- | +| Description | data region leader min election timeout | +| Type | int32 | +| Default | 2000ms | +| Effective | Restart required. | + +- config_node_ratis_rpc_leader_election_timeout_max_ms + +| Name | config_node_ratis_rpc_leader_election_timeout_max_ms | +| ----------- | ---------------------------------------------------- | +| Description | confignode leader max election timeout | +| Type | int32 | +| Default | 4000ms | +| Effective | Restart required. | + +- schema_region_ratis_rpc_leader_election_timeout_max_ms + +| Name | schema_region_ratis_rpc_leader_election_timeout_max_ms | +| ----------- | ------------------------------------------------------ | +| Description | schema region leader max election timeout | +| Type | int32 | +| Default | 4000ms | +| Effective | Restart required. | + +- data_region_ratis_rpc_leader_election_timeout_max_ms + +| Name | data_region_ratis_rpc_leader_election_timeout_max_ms | +| ----------- | ---------------------------------------------------- | +| Description | data region leader max election timeout | +| Type | int32 | +| Default | 4000ms | +| Effective | Restart required. | + +- config_node_ratis_request_timeout_ms + +| Name | config_node_ratis_request_timeout_ms | +| ----------- | --------------------------------------- | +| Description | confignode ratis client retry threshold | +| Type | int32 | +| Default | 10000 | +| Effective | Restart required. | + +- schema_region_ratis_request_timeout_ms + +| Name | schema_region_ratis_request_timeout_ms | +| ----------- | ------------------------------------------ | +| Description | schema region ratis client retry threshold | +| Type | int32 | +| Default | 10000 | +| Effective | Restart required. | + +- data_region_ratis_request_timeout_ms + +| Name | data_region_ratis_request_timeout_ms | +| ----------- | ---------------------------------------- | +| Description | data region ratis client retry threshold | +| Type | int32 | +| Default | 10000 | +| Effective | Restart required. | + +- config_node_ratis_max_retry_attempts + +| Name | config_node_ratis_max_retry_attempts | +| ----------- | ------------------------------------ | +| Description | confignode ratis client retry times | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- config_node_ratis_initial_sleep_time_ms + +| Name | config_node_ratis_initial_sleep_time_ms | +| ----------- | ------------------------------------------ | +| Description | confignode ratis client initial sleep time | +| Type | int32 | +| Default | 100ms | +| Effective | Restart required. | + +- config_node_ratis_max_sleep_time_ms + +| Name | config_node_ratis_max_sleep_time_ms | +| ----------- | -------------------------------------------- | +| Description | confignode ratis client max retry sleep time | +| Type | int32 | +| Default | 10000 | +| Effective | Restart required. | + +- schema_region_ratis_max_retry_attempts + +| Name | schema_region_ratis_max_retry_attempts | +| ----------- | ------------------------------------------ | +| Description | schema region ratis client max retry times | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- schema_region_ratis_initial_sleep_time_ms + +| Name | schema_region_ratis_initial_sleep_time_ms | +| ----------- | ------------------------------------------ | +| Description | schema region ratis client init sleep time | +| Type | int32 | +| Default | 100ms | +| Effective | Restart required. | + +- schema_region_ratis_max_sleep_time_ms + +| Name | schema_region_ratis_max_sleep_time_ms | +| ----------- | ----------------------------------------- | +| Description | schema region ratis client max sleep time | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- data_region_ratis_max_retry_attempts + +| Name | data_region_ratis_max_retry_attempts | +| ----------- | --------------------------------------------- | +| Description | data region ratis client max retry sleep time | +| Type | int32 | +| Default | 10 | +| Effective | Restart required. | + +- data_region_ratis_initial_sleep_time_ms + +| Name | data_region_ratis_initial_sleep_time_ms | +| ----------- | ---------------------------------------- | +| Description | data region ratis client init sleep time | +| Type | int32 | +| Default | 100ms | +| Effective | Restart required. | + +- data_region_ratis_max_sleep_time_ms + +| Name | data_region_ratis_max_sleep_time_ms | +| ----------- | --------------------------------------------- | +| Description | data region ratis client max retry sleep time | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- ratis_first_election_timeout_min_ms + +| Name | ratis_first_election_timeout_min_ms | +| ----------- | ----------------------------------- | +| Description | Ratis first election min timeout | +| Type | int64 | +| Default | 50 (ms) | +| Effective | Restart required. | + +- ratis_first_election_timeout_max_ms + +| Name | ratis_first_election_timeout_max_ms | +| ----------- | ----------------------------------- | +| Description | Ratis first election max timeout | +| Type | int64 | +| Default | 150 (ms) | +| Effective | Restart required. | + +- config_node_ratis_preserve_logs_num_when_purge + +| Name | config_node_ratis_preserve_logs_num_when_purge | +| ----------- | ------------------------------------------------------------ | +| Description | confignode snapshot preserves certain logs when taking snapshot and purge | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- schema_region_ratis_preserve_logs_num_when_purge + +| Name | schema_region_ratis_preserve_logs_num_when_purge | +| ----------- | ------------------------------------------------------------ | +| Description | schema region snapshot preserves certain logs when taking snapshot and purge | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- data_region_ratis_preserve_logs_num_when_purge + +| Name | data_region_ratis_preserve_logs_num_when_purge | +| ----------- | ------------------------------------------------------------ | +| Description | data region snapshot preserves certain logs when taking snapshot and purge | +| Type | int32 | +| Default | 1000 | +| Effective | Restart required. | + +- config_node_ratis_log_max_size + +| Name | config_node_ratis_log_max_size | +| ----------- | -------------------------------------- | +| Description | config node Raft Log disk size control | +| Type | int64 | +| Default | 2147483648 (2GB) | +| Effective | Restart required. | + +- schema_region_ratis_log_max_size + +| Name | schema_region_ratis_log_max_size | +| ----------- | ---------------------------------------- | +| Description | schema region Raft Log disk size control | +| Type | int64 | +| Default | 2147483648 (2GB) | +| Effective | Restart required. | + +- data_region_ratis_log_max_size + +| Name | data_region_ratis_log_max_size | +| ----------- | -------------------------------------- | +| Description | data region Raft Log disk size control | +| Type | int64 | +| Default | 21474836480 (20GB) | +| Effective | Restart required. | + +- config_node_ratis_periodic_snapshot_interval + +| Name | config_node_ratis_periodic_snapshot_interval | +| ----------- | -------------------------------------------- | +| Description | config node Raft periodic snapshot interval | +| Type | int64 | +| Default | 86400 (s) | +| Effective | Restart required. | + +- schema_region_ratis_periodic_snapshot_interval + +| Name | schema_region_ratis_preserve_logs_num_when_purge | +| ----------- | ------------------------------------------------ | +| Description | schema region Raft periodic snapshot interval | +| Type | int64 | +| Default | 86400 (s) | +| Effective | Restart required. | + +- data_region_ratis_periodic_snapshot_interval + +| Name | data_region_ratis_preserve_logs_num_when_purge | +| ----------- | ---------------------------------------------- | +| Description | data region Raft periodic snapshot interval | +| Type | int64 | +| Default | 86400 (s) | +| Effective | Restart required. | + +### IoTConsensusV2 Configuration + +- iot_consensus_v2_pipeline_size + +| Name | iot_consensus_v2_pipeline_size | +| ----------- | ------------------------------------------------------------ | +| Description | Default event buffer size for connector and receiver in iot consensus v2 | +| Type | int | +| Default | 5 | +| Effective | Restart required. | + +- iot_consensus_v2_mode + +| Name | iot_consensus_v2_pipeline_size | +| ----------- | ------------------------------ | +| Description | IoTConsensusV2 mode. | +| Type | String | +| Default | batch | +| Effective | Restart required. | + +### Procedure Configuration + +- procedure_core_worker_thread_count + +| Name | procedure_core_worker_thread_count | +| ----------- | ------------------------------------- | +| Description | Default number of worker thread count | +| Type | int32 | +| Default | 4 | +| Effective | Restart required. | + +- procedure_completed_clean_interval + +| Name | procedure_completed_clean_interval | +| ----------- | ------------------------------------------------------------ | +| Description | Default time interval of completed procedure cleaner work in, time unit is second | +| Type | int32 | +| Default | 30(s) | +| Effective | Restart required. | + +- procedure_completed_evict_ttl + +| Name | procedure_completed_evict_ttl | +| ----------- | ------------------------------------------------------- | +| Description | Default ttl of completed procedure, time unit is second | +| Type | int32 | +| Default | 60(s) | +| Effective | Restart required. | + +### MQTT Broker Configuration + +- enable_mqtt_service + +| Name | enable_mqtt_service。 | +| ----------- | ----------------------------------- | +| Description | whether to enable the mqtt service. | +| Type | Boolean | +| Default | false | +| Effective | Hot reload | + +- mqtt_host + +| Name | mqtt_host | +| ----------- | ------------------------------ | +| Description | the mqtt service binding host. | +| Type | String | +| Default | 127.0.0.1 | +| Effective | Hot reload | + +- mqtt_port + +| Name | mqtt_port | +| ----------- | ------------------------------ | +| Description | the mqtt service binding port. | +| Type | int32 | +| Default | 1883 | +| Effective | Hot reload | + +- mqtt_handler_pool_size + +| Name | mqtt_handler_pool_size | +| ----------- | ---------------------------------------------------- | +| Description | the handler pool size for handing the mqtt messages. | +| Type | int32 | +| Default | 1 | +| Effective | Hot reload | + +- mqtt_payload_formatter + +| Name | mqtt_payload_formatter | +| ----------- | ----------------------------------- | +| Description | the mqtt message payload formatter. | +| Type | String | +| Default | json | +| Effective | Hot reload | + +- mqtt_max_message_size + +| Name | mqtt_max_message_size | +| ----------- | ---------------------------------- | +| Description | max length of mqtt message in byte | +| Type | int32 | +| Default | 1048576 | +| Effective | Hot reload | + +### Audit log Configuration + +- enable_audit_log + +| Name | enable_audit_log | +| ----------- | -------------------------------- | +| Description | whether to enable the audit log. | +| Type | Boolean | +| Default | false | +| Effective | Restart required. | + +- audit_log_storage + +| Name | audit_log_storage | +| ----------- | ----------------------------- | +| Description | Output location of audit logs | +| Type | String | +| Default | IOTDB,LOGGER | +| Effective | Restart required. | + +- audit_log_operation + +| Name | audit_log_operation | +| ----------- | ------------------------------------------------------------ | +| Description | whether enable audit log for DML operation of datawhether enable audit log for DDL operation of schemawhether enable audit log for QUERY operation of data and schema | +| Type | String | +| Default | DML,DDL,QUERY | +| Effective | Restart required. | + +- enable_audit_log_for_native_insert_api + +| Name | enable_audit_log_for_native_insert_api | +| ----------- | ---------------------------------------------- | +| Description | whether the local write api records audit logs | +| Type | Boolean | +| Default | true | +| Effective | Restart required. | + +### White List Configuration + +- enable_white_list + +| Name | enable_white_list | +| ----------- | ------------------------- | +| Description | whether enable white list | +| Type | Boolean | +| Default | false | +| Effective | Hot reload | + +### IoTDB-AI Configuration + +- model_inference_execution_thread_count + +| Name | model_inference_execution_thread_count | +| ----------- | ------------------------------------------------------------ | +| Description | The thread count which can be used for model inference operation. | +| Type | int | +| Default | 5 | +| Effective | Restart required. | + +### Load TsFile Configuration + +- load_clean_up_task_execution_delay_time_seconds + +| Name | load_clean_up_task_execution_delay_time_seconds | +| ----------- | ------------------------------------------------------------ | +| Description | Load clean up task is used to clean up the unsuccessful loaded tsfile after a certain period of time. | +| Type | int | +| Default | 1800 | +| Effective | Hot reload | + +- load_write_throughput_bytes_per_second + +| Name | load_write_throughput_bytes_per_second | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum bytes per second of disk write throughput when loading tsfile. | +| Type | int | +| Default | -1 | +| Effective | Hot reload | + +- load_active_listening_enable + +| Name | load_active_listening_enable | +| ----------- | ------------------------------------------------------------ | +| Description | Whether to enable the active listening mode for tsfile loading. | +| Type | Boolean | +| Default | true | +| Effective | Hot reload | + +- load_active_listening_dirs + +| Name | load_active_listening_dirs | +| ----------- | ------------------------------------------------------------ | +| Description | The directory to be actively listened for tsfile loading.Multiple directories should be separated by a ','. | +| Type | String | +| Default | ext/load/pending | +| Effective | Hot reload | + +- load_active_listening_fail_dir + +| Name | load_active_listening_fail_dir | +| ----------- | ------------------------------------------------------------ | +| Description | The directory where tsfiles are moved if the active listening mode fails to load them. | +| Type | String | +| Default | ext/load/failed | +| Effective | Hot reload | + +- load_active_listening_max_thread_num + +| Name | load_active_listening_max_thread_num | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum number of threads that can be used to load tsfile actively.The default value, when this parameter is commented out or <= 0, use CPU core number. | +| Type | Long | +| Default | 0 | +| Effective | Restart required. | + +- load_active_listening_check_interval_seconds + +| Name | load_active_listening_check_interval_seconds | +| ----------- | ------------------------------------------------------------ | +| Description | The interval specified in seconds for the active listening mode to check the directory specified in `load_active_listening_dirs`.The active listening mode will check the directory every `load_active_listening_check_interval_seconds seconds`. | +| Type | Long | +| Default | 5 | +| Effective | Restart required. | + +### Dispatch Retry Configuration + +- enable_retry_for_unknown_error + +| Name | enable_retry_for_unknown_error | +| ----------- | ------------------------------------------------------------ | +| Description | The maximum retrying time for write request remotely dispatching, time unit is milliseconds. | +| Type | Long | +| Default | 60000 | +| Effective | Hot reload | + +- enable_retry_for_unknown_error + +| Name | enable_retry_for_unknown_error | +| ----------- | ------------------------------------ | +| Description | Whether retrying for unknown errors. | +| Type | boolean | +| Default | false | +| Effective | Hot reload | \ No newline at end of file From 4523155d29dcb418f48e6be27011fb03a18b4066 Mon Sep 17 00:00:00 2001 From: zhaorunhao <599683125@qq.com> Date: Thu, 20 Feb 2025 17:15:41 +0800 Subject: [PATCH 2/2] UserGuide/latest-Table/Reference/Sample-Data.md Master/Table/Reference/Sample-Data.md --- .../public/img/sample-dataset-en-01.png | Bin 0 -> 305317 bytes .../Master/Table/Reference/Sample-Data.md | 16 ++++++---------- .../latest-Table/Reference/Sample-Data.md | 16 ++++++---------- 3 files changed, 12 insertions(+), 20 deletions(-) create mode 100644 src/.vuepress/public/img/sample-dataset-en-01.png diff --git a/src/.vuepress/public/img/sample-dataset-en-01.png b/src/.vuepress/public/img/sample-dataset-en-01.png new file mode 100644 index 0000000000000000000000000000000000000000..615c3a17af1da1acd955b022f52a2a0ceeda06e3 GIT binary patch literal 305317 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

WTu{GWyFDlVH`Md^ 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

II6suyPRC2NV*fYMZ-KQ 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 >S#3CtplF2oc+Gyn5IW&osx( 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 literal 0 HcmV?d00001 diff --git a/src/UserGuide/Master/Table/Reference/Sample-Data.md b/src/UserGuide/Master/Table/Reference/Sample-Data.md index 4b6f45201..b838cd49b 100644 --- a/src/UserGuide/Master/Table/Reference/Sample-Data.md +++ b/src/UserGuide/Master/Table/Reference/Sample-Data.md @@ -19,20 +19,16 @@ --> -# Sample Data +This section introduces a simple time-series data application scenario, along with the modeling and sample data for this scenario. All example SQL statements in the IoTDB Table Model User Guide can be executed using this modeling and sample data. -This chapter mainly introduces a simple temporal data application scenario and the modeling and example data in this scenario. All the example SQL statements in the IoTDB table model user manual can be executed under this modeling and example data. +## Data Structure -## 1 Data Structure +The structures of `table1` and `table2` are as follows: +![](/img/sample-dataset-en-01.png) +## Import Statements -Table 1 and Table 2 both have the following table structure: - -![](/img/Sample_data02.png) - -## 2 Import Statement - -The following is the SQL statement used to construct the above table structure and data. You can click here([sample_data.sql](/img/sample_data.sql))to download all the SQL statements and execute them in CLI to import the data into your IoTDB. +Below are the SQL statements to create the above table structures and insert data. You can download the complete SQL script ([sample_data.sql](/img/sample_data.sql)) to execute these statements in the CLI to import the data into IoTDB. ```SQL -- Create a table with table names that are close to business semantics. Here, we use table1 instead diff --git a/src/UserGuide/latest-Table/Reference/Sample-Data.md b/src/UserGuide/latest-Table/Reference/Sample-Data.md index 4b6f45201..b838cd49b 100644 --- a/src/UserGuide/latest-Table/Reference/Sample-Data.md +++ b/src/UserGuide/latest-Table/Reference/Sample-Data.md @@ -19,20 +19,16 @@ --> -# Sample Data +This section introduces a simple time-series data application scenario, along with the modeling and sample data for this scenario. All example SQL statements in the IoTDB Table Model User Guide can be executed using this modeling and sample data. -This chapter mainly introduces a simple temporal data application scenario and the modeling and example data in this scenario. All the example SQL statements in the IoTDB table model user manual can be executed under this modeling and example data. +## Data Structure -## 1 Data Structure +The structures of `table1` and `table2` are as follows: +![](/img/sample-dataset-en-01.png) +## Import Statements -Table 1 and Table 2 both have the following table structure: - -![](/img/Sample_data02.png) - -## 2 Import Statement - -The following is the SQL statement used to construct the above table structure and data. You can click here([sample_data.sql](/img/sample_data.sql))to download all the SQL statements and execute them in CLI to import the data into your IoTDB. +Below are the SQL statements to create the above table structures and insert data. You can download the complete SQL script ([sample_data.sql](/img/sample_data.sql)) to execute these statements in the CLI to import the data into IoTDB. ```SQL -- Create a table with table names that are close to business semantics. Here, we use table1 instead