#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.
#

####################
### RPC Configuration
####################

# could set 0.0.0.0, 127.0.0.1(for local test) or ipv4 address
# Datatype: String
rpc_address=0.0.0.0

# Datatype: int
rpc_port=6667

####################
### Shuffle Configuration
####################
# Datatype: int
mpp_data_exchange_port=8777

# Datatype: int
# mpp_data_exchange_core_pool_size=10

# Datatype: int
# mpp_data_exchange_max_pool_size=10

# Datatype: int
# mpp_data_exchange_keep_alive_time_in_ms=1000

# Datatype: String
# used for communication between cluster nodes.
# could set 0.0.0.0, 127.0.0.1(for local test) or ipv4 address.
internal_address=0.0.0.0

# Datatype: int
# port for coordinator's communication between cluster nodes.
internal_port=9003

# Datatype: int
# port for consensus's communication for data region between cluster nodes.
data_region_consensus_port=40010

# Datatype: int
# port for consensus's communication for schema region between cluster nodes.
schema_region_consensus_port=50010

# At least one running ConfigNode should be set for joining the cluster
# Format: ip:port
# where the ip should be consistent with the target ConfigNode's confignode_internal_address,
# and the port should be consistent with the target ConfigNode's confignode_internal_port.
# When successfully connecting to the ConfigNodeGroup, DataNode will get all online
# config nodes and store them in memory.
# Datatype: String
# Notice: The ip for any target_config_node should never be 0.0.0.0
target_config_nodes=127.0.0.1:22277

# Datatype: boolean
# rpc_thrift_compression_enable=false

# if true, a snappy based compression method will be called before sending data by the network
# Datatype: boolean
# this feature is under development, set this as false before it is done.
# rpc_advanced_compression_enable=false

# Datatype: int
# rpc_selector_thread_num=1

# Datatype: int
# rpc_min_concurrent_client_num=1

# Datatype: int
# rpc_max_concurrent_client_num=65535

# thrift max frame size, 512MB by default
# Datatype: int
# thrift_max_frame_size=536870912

# thrift init buffer size
# Datatype: int
# thrift_init_buffer_size=1024

# Thrift socket and connection timeout between raft nodes, in milliseconds.
# Datatype: int
# connection_timeout_ms=20000

# The maximum number of clients that can be idle for a node's InternalService.
# When the number of idle clients on a node exceeds this number, newly returned clients will be released
# Datatype: int
# core_connection_for_internal_service=100

# The maximum number of clients that can be applied for a node's InternalService
# Datatype: int
# max_connection_for_internal_service=100

# selector thread (TAsyncClientManager) nums for async thread in a clientManager
# Datatype: int
# selector_thread_nums_of_client_manager=1

####################
### Write Ahead Log Configuration
####################

# Write mode of wal
# The details of these three modes are as follows:
# 1. DISABLE: the system will disable wal.
# 2. SYNC: the system will submit wal synchronously, write request will not return until its wal is fsynced to the disk successfully.
# 3. ASYNC: the system will submit wal asynchronously, write request will return immediately no matter its wal is fsynced to the disk successfully.
# The write performance order is DISABLE > ASYNC > SYNC, but only SYNC mode can ensure data durability.
# wal_mode=ASYNC

# wal dirs
# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data).
# If it is absolute, system will save the data in the exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
# If there are more than one directory, please separate them by commas ",".
# Note: If wal_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
# For windows platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
# wal_dirs=data\\wal
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# wal_dirs=data/wal

# Max number of wal nodes, each node corresponds to one wal directory
# The default value 0 means twice the number of wal dirs.
# Notice: this value affects write performance significantly.
# For non-SSD disks, values between one third and half of storage groups number are recommended.
# Datatype: int
# max_wal_nodes_num=0

# Duration a wal flush operation will wait before calling fsync
# A duration greater than 0 batches multiple wal fsync calls into one. This is useful when disks are slow or WAL write contention exists.
# Notice: this value affects write performance significantly, values in the range of 0ms-10ms are recommended.
# Datatype: long
# fsync_wal_delay_in_ms=3

# Buffer size of each wal node
# If it's a value smaller than 0, use the default value 16 * 1024 * 1024 bytes (16MB).
# Datatype: int
# wal_buffer_size_in_byte=16777216

# Blocking queue capacity of each wal buffer, restricts maximum number of WALEdits cached in the blocking queue.
# Datatype: int
# wal_buffer_queue_capacity=50

# Size threshold of each wal file
# When a wal file's size exceeds this, the wal file will be closed and a new wal file will be created.
# If it's a value smaller than 0, use the default value 10 * 1024 * 1024 (10MB).
# Datatype: long
# wal_file_size_threshold_in_byte=10485760

# Minimum ratio of effective information in wal files
# This value should be between 0.0 and 1.0
# If effective information ratio is below this value, MemTable snapshot or flush will be triggered.
# Increase this value when wal occupies too much disk space. But, if this parameter is too large, the write performance may decline.
# Datatype: double
# wal_min_effective_info_ratio=0.1

# MemTable size threshold for triggering MemTable snapshot in wal
# When a memTable's size (in byte) exceeds this, wal can flush this memtable to disk, otherwise wal will snapshot this memtable in wal.
# If it's a value smaller than 0, use the default value 8 * 1024 * 1024 bytes (8MB).
# Datatype: long
# wal_memtable_snapshot_threshold_in_byte=8388608

# MemTable's max snapshot number in wal
# If one memTable's snapshot number in wal exceeds this value, it will be flushed to disk.
# Datatype: int
# max_wal_memtable_snapshot_num=1

# The period when outdated wal files are periodically deleted
# If this value is too large, outdated wal files may not able to be deleted in time.
# If it's a value smaller than 0, use the default value 20 * 1000 ms (20 seconds).
# Datatype: long
# delete_wal_files_period_in_ms=20000

# The minimum size of wal files when throttle down in MultiLeader consensus
# If it's a value smaller than 0, use the default value 50 * 1024 * 1024 * 1024 bytes (50GB).
# Datatype: long
# multi_leader_throttle_threshold_in_byte=53687091200

# Maximum wait time of write cache in MultiLeader consensus
# If this value is less than or equal to 0, use the default value Long.MAX_VALUE.
# Datatype: long
# multi_leader_cache_window_time_in_ms=-1

####################
### Directory Configuration
####################

# system dir
# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/system).
# If it is absolute, system will save the data in exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
# For windows platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
# system_dir=data\\system
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# system_dir=data/system


# data dirs
# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data/data).
# If it is absolute, system will save the data in exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
# If there are more than one directory, please separate them by commas ",".
# Note: If data_dirs is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
# For windows platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
# data_dirs=data\\data
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# data_dirs=data/data


# multi_dir_strategy
# The strategy is used to choose a directory from data_dirs for the system to store a new tsfile.
# System provides four strategies to choose from, or user can create his own strategy by extending org.apache.iotdb.db.conf.directories.strategy.DirectoryStrategy.
# The info of the four strategies are as follows:
# 1. SequenceStrategy: the system will choose the directory in sequence.
# 2. MaxDiskUsableSpaceFirstStrategy: the system will choose the directory whose disk has the maximum space.
# 3. MinFolderOccupiedSpaceFirstStrategy: the system will choose the directory whose folder has the minimum occupied space.
# 4. RandomOnDiskUsableSpaceStrategy: the system will randomly choose the directory based on usable space of disks. The more usable space, the greater the chance of being chosen;
# Set SequenceStrategy,MaxDiskUsableSpaceFirstStrategy and MinFolderOccupiedSpaceFirstStrategy to apply the corresponding strategy.
# If this property is unset, system will use MaxDiskUsableSpaceFirstStrategy as default strategy.
# For this property, fully-qualified class name (include package name) and simple class name are both acceptable.
# multi_dir_strategy=MaxDiskUsableSpaceFirstStrategy

# consensus dir
# If this property is unset, system will save the data in the default relative path directory under the IoTDB folder(i.e., %IOTDB_HOME%/data).
# If it is absolute, system will save the data in the exact location it points to.
# If it is relative, system will save the data in the relative path directory it indicates under the IoTDB folder.
# Note: If consensus_dir is assigned an empty string(i.e.,zero-size), it will be handled as a relative path.
# For windows platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is absolute. Otherwise, it is relative.
# consensus_dir=data\\consensus
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# consensus_dir=data/consensus


# TSFile storage file system. Currently, TsFiles are supported to be stored in LOCAL file system or HDFS.
# Datatype: FSType
# tsfile_storage_fs=LOCAL

# If using HDFS, the absolute file path of Hadoop core-site.xml should be configured
# Datatype: String
# core_site_path=/etc/hadoop/conf/core-site.xml

# If using HDFS, the absolute file path of Hadoop hdfs-site.xml should be configured
# Datatype: String
# hdfs_site_path=/etc/hadoop/conf/hdfs-site.xml

# If using HDFS, hadoop ip can be configured. If there are more than one hdfs_ip, Hadoop HA is used
# Datatype: String
# hdfs_ip=localhost

# If using HDFS, hadoop port can be configured
# Datatype: String
# hdfs_port=9000

# If there are more than one hdfs_ip, Hadoop HA is used. Below are configuration for HA
# If using Hadoop HA, nameservices of hdfs can be configured
# Datatype: String
# dfs_nameservices=hdfsnamespace

# If using Hadoop HA, namenodes under dfs nameservices can be configured
# Datatype: String
# dfs_ha_namenodes=nn1,nn2

# If using Hadoop HA, automatic failover can be enabled or disabled
# Datatype: boolean
# dfs_ha_automatic_failover_enabled=true

# If using Hadoop HA and enabling automatic failover, the proxy provider can be configured
# Datatype: String
# dfs_client_failover_proxy_provider=org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider

# If using kerberos to authenticate hdfs, this should be true
# Datatype: boolean
# hdfs_use_kerberos=false

# Full path of kerberos keytab file
# Datatype: String
# kerberos_keytab_file_path=/path

# Kerberos pricipal
# Datatype: String
# kerberos_principal=your principal


####################
### Storage Engine Configuration
####################

# Use this value to set timestamp precision as "ms", "us" or "ns".
# Once the precision is been set, it can not be changed.
# Datatype: String
timestamp_precision=ms

# Default TTL for storage groups that are not set TTL by statements, If not set (default),
# the TTL will be unlimited.
# Notice: if this property is changed, previous created storage group which are not set TTL will
# also be affected. And negative values are accepted, which means you can only insert future
# data.
# Datatype: long
# Unit: ms
# default_ttl=36000000

# What will the system do when unrecoverable error occurs.
# Datatype: String
# Optional strategies are as follows:
# 1. CHANGE_TO_READ_ONLY: set system status to read-only and the system only accepts query operations.
# 2. SHUTDOWN: the system will be shutdown.
# handle_system_error=CHANGE_TO_READ_ONLY

# Size of log buffer in each metadata operation plan(in byte).
# If the size of a metadata operation plan is larger than this parameter, then it will be rejected by SchemaRegion
# If it sets a value smaller than 0, use the default value 1024*1024
# Datatype: int
# mlog_buffer_size=1048576

# 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 refreshment
# Set this parameter to 0 may slow down the operation on slow disk.
# sync_mlog_period_in_ms=100

# When a memTable's size (in byte) exceeds this, the memtable is flushed to disk. The default threshold is 1 GB.
# Datatype: long
# memtable_size_threshold=1073741824

# Whether to timed flush sequence tsfiles' memtables.
# Datatype: boolean
# enable_timed_flush_seq_memtable=false

# If a memTable's created time is older than current time minus this, the memtable will be flushed to disk.
# Only check sequence tsfiles' memtables.
# The default flush interval is 60 * 60 * 1000. (unit: ms)
# Datatype: long
# seq_memtable_flush_interval_in_ms=3600000

# The interval to check whether sequence memtables need flushing.
# The default flush check interval is 10 * 60 * 1000. (unit: ms)
# Datatype: long
# seq_memtable_flush_check_interval_in_ms=600000

# Whether to timed flush unsequence tsfiles' memtables.
# Datatype: boolean
# enable_timed_flush_unseq_memtable=true

# If a memTable's created time is older than current time minus this, the memtable will be flushed to disk.
# Only check unsequence tsfiles' memtables.
# The default flush interval is 60 * 60 * 1000. (unit: ms)
# Datatype: long
# unseq_memtable_flush_interval_in_ms=3600000

# The interval to check whether unsequence memtables need flushing.
# The default flush check interval is 10 * 60 * 1000. (unit: ms)
# Datatype: long
# unseq_memtable_flush_check_interval_in_ms=600000

# The sort algorithms used in the memtable's TVList
# TIM: default tim sort,
# QUICK: quick sort,
# BACKWARD: backward sort
# tvlist_sort_algorithm=TIM

# When the average point number of timeseries in memtable exceeds this, the memtable is flushed to disk. The default threshold is 100000.
# Datatype: int
# avg_series_point_number_threshold=100000

# When a chunk in memtable reaches this threshold, flush the memtable to disk.
# The default threshold is 20 MB.
# Datatype: long
# max_chunk_raw_size_threshold = 20971520

# How many threads can concurrently flush. When <= 0, use CPU core number.
# Datatype: int
# concurrent_flush_thread=0

# How many threads can concurrently execute query statement. When <= 0, use CPU core number.
# Datatype: int
# concurrent_query_thread=0

# How many threads can concurrently read data for raw data query. When <= 0, use CPU core number.
# Datatype: int
# concurrent_sub_rawQuery_thread=8

# Blocking queue size for read task in raw data query. Must >= 1.
# Datatype: int
# raw_query_blocking_queue_capacity=5

# whether take over the memory management by IoTDB rather than JVM when serializing memtable as bytes in memory
# (i.e., whether use ChunkBufferPool), value true, false
# Datatype: boolean
# chunk_buffer_pool_enable=false

# The amount of data iterate each time in server (the number of data strips, that is, the number of different timestamps.)
# Datatype: int
# batch_size=100000

# max size for tag and attribute of one time series
# the unit is byte
# Datatype: int
# tag_attribute_total_size=700

# interval num for tag and attribute records when force flushing to disk
# When a certain amount of tag and attribute records is reached, they will be force flushed to disk
# It is possible to lose at most tag_attribute_flush_interval records
# tag_attribute_flush_interval=1000

# In one insert (one device, one timestamp, multiple measurements),
# if enable partial insert, one measurement failure will not impact other measurements
# Datatype: boolean
# enable_partial_insert=true

# the interval to log recover progress of each vsg when starting iotdb
# Datatype: int
# recovery_log_interval_in_ms=5000

# Add a switch to drop ouf-of-order data
# Out-of-order data will impact the aggregation query a lot. Users may not care about discarding some out-of-order data.
# Datatype: boolean
# enable_discard_out_of_order_data=false

####################
### Memory Control Configuration
####################

# Whether to enable memory control
# Datatype: boolean
# enable_mem_control=true

# Memory Allocation Ratio: Write, Read, Schema and Free Memory.
# The parameter form is a:b:c:d, where a, b, c and d are integers. for example: 1:1:1:1 , 6:2:1:1
# If you have high level of writing pressure and low level of reading pressure, please adjust it to for example 6:1:1:2
# write_read_schema_free_memory_proportion=4:3:1:2

# Schema Memory Allocation Ratio: SchemaRegion, SchemaCache, PartitionCache and LastCache.
# The parameter form is a:b:c:d, where a, b, c and d are integers. for example: 1:1:1:1 , 6:2:1:1
# In cluster mode, we recommend 5:3:1:1. In standalone mode, we recommend 8:1:0:1
# schema_memory_allocate_proportion=5:3:1:1

# Memory allocation ratio in StorageEngine: MemTable, Compaction
# The parameter form is a:b:c:d, where a, b, c and d are integers. for example: 8:2 , 7:3
# storage_engine_memory_proportion=8:2

# Max number of concurrent writing time partitions in one storage group
# This parameter is used to control total memTable number when memory control is disabled
# The max number of memTable is 4 * concurrent_writing_time_partition * storage group number
# Datatype: long
# concurrent_writing_time_partition=1

# primitive array size (length of each array) in array pool
# Datatype: int
# primitive_array_size=32

# the percentage of write memory for chunk metadata remains in a single file writer when flushing memtable
# Datatype: double
# chunk_metadata_size_proportion_in_write=0.1

# Ratio of write memory for invoking flush disk, 0.4 by default
# If you have extremely high write load (like batch=1000), it can be set lower than the default value like 0.2
# Datatype: double
# flush_proportion=0.4

# Ratio of write memory allocated for buffered arrays, 0.6 by default
# Datatype: double
# buffered_arrays_memory_proportion=0.6

# Ratio of write memory for rejecting insertion, 0.8 by default
# If 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
# Datatype: double
# reject_proportion=0.8

# If memory (in byte) of storage group increased more than this threshold, report to system. The default value is 16MB
# Datatype: long
# storage_group_report_threshold=16777216

# allowed max numbers of deduplicated path in one query
# it's just an advised value, the real limitation will be the smaller one between this and the one we calculated
# Datatype: int
# max_deduplicated_path_num=1000

# When an inserting is rejected, 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.
# Datatype: int
# check_period_when_insert_blocked=50

# When the waiting time (in ms) of an inserting exceeds this, throw an exception. 10000 by default.
# If the insertion has been rejected and the read load is low, it can be set larger
# Datatype: int
# max_waiting_time_when_insert_blocked=10000

# size of ioTaskQueue. The default value is 10
# Datatype: int
# io_task_queue_size_for_flushing=10

# 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
# Datatype: bool
# enable_query_memory_estimation=true

####################
### Upgrade Configurations
####################

# When there exists old version(0.9.x/v1) data, how many thread will be set up to perform upgrade tasks, 1 by default.
# Set to 1 when less than or equal to 0.
# Datatype: int
# upgrade_thread_num=1

####################
### Query Configurations
####################

# the default time period that used in fill query, -1 by default means infinite past time
# Datatype: int, Unit: ms
# default_fill_interval=-1

# the max execution time of a DriverTask
# Datatype: int, Unit: ms
# driver_task_execution_time_slice_in_ms=100

# the max capacity of a TsBlock
# Datatype: int, Unit: byte
# max_tsblock_size_in_bytes=1048576

# the max number of lines in a single TsBlock
# Datatype: int
# max_tsblock_line_numbers=1000

####################
### Compaction Configurations
####################
# sequence space compaction: only compact the sequence files
# Datatype: boolean
# enable_seq_space_compaction=true

# unsequence space compaction: only compact the unsequence files
# Datatype: boolean
# enable_unseq_space_compaction=true

# cross space compaction: compact the unsequence files into the overlapped sequence files
# Datatype: boolean
# enable_cross_space_compaction=true

# the selector of cross space compaction task
# Options: rewrite
# cross_selector=rewrite

# the compaction performer of cross space compaction task
# Options: read_point
# cross_performer=read_point

# the selector of inner sequence space compaction task
# Options: size_tiered
# inner_seq_selector=size_tiered

# the performer of inner sequence space compaction task
# Options: read_chunk
# inner_seq_performer=read_chunk

# the selector of inner unsequence space compaction task
# Options: size_tiered
# inner_unseq_selector=size_tiered

# the performer of inner unsequence space compaction task
# Options: read_point
# inner_unseq_performer=read_point

# The priority of compaction execution
# INNER_CROSS: prioritize inner space compaction, reduce the number of files first
# CROSS_INNER: prioritize cross space compaction, eliminate the unsequence files first
# BALANCE: alternate two compaction types
# compaction_priority=BALANCE

# size proportion for chunk metadata maintains in memory when compacting
# Datatype: double
# chunk_metadata_size_proportion_in_compaction=0.05

# The target tsfile size in compaction
# Datatype: long, Unit: byte
# target_compaction_file_size=1073741824

# The target chunk size in compaction, default is 1MB
# Datatype: long, Unit: byte
# target_chunk_size=1048576

# The target point nums in one chunk in compaction
# Datatype: long
# target_chunk_point_num=100000

# If the chunk size is lower than this threshold, it will be deserialize into points, default is 128 byte
# Datatype: long, Unit:byte
# chunk_size_lower_bound_in_compaction=128

# If the chunk size is lower than this threshold, it will be deserialize into points
# Datatype: long
# chunk_point_num_lower_bound_in_compaction=100

# The max file when selecting inner space compaction candidate files
# Datatype: int
# max_inner_compaction_candidate_file_num=30

# The max file when selecting cross space compaction candidate files
# At least one unseq file with it's overlapped seq files will be selected even exceeded this number
# Datatype: int
# max_cross_compaction_candidate_file_num=1000

# The max total size when selecting cross space compaction candidate files
# At least one unseq file with it's overlapped seq files will be selected even exceeded this number
# Datatype: long, Unit: byte
# max_cross_compaction_candidate_file_size=5368709120

# If one merge file selection runs for more than this time, it will be ended and its current
# selection will be used as final selection.
# When < 0, it means time is unbounded.
# Datatype: long, Unit: ms
# cross_compaction_file_selection_time_budget=30000

# How many threads will be set up to perform compaction, 10 by default.
# Set to 1 when less than or equal to 0.
# Datatype: int
# concurrent_compaction_thread=10

# The interval of compaction task schedule
# Datatype: long, Unit: ms
# compaction_schedule_interval_in_ms=60000

# The interval of compaction task submission
# Datatype: long, Unit: ms
# compaction_submission_interval_in_ms=60000

# The limit of write throughput merge can reach per second
# Datatype: int
# compaction_write_throughput_mb_per_sec=16

# The maximum session idle time. unit: ms
# Idle sessions are the ones that performs neither query or non-query operations for a period of time
# Set to 0 to disable session timeout
# Datatype: int
# session_timeout_threshold=0

# The max executing time of query. unit: ms
# Datatype: int
# query_timeout_threshold=60000

# The maximum allowed concurrently executing queries
# Datatype: int
# max_allowed_concurrent_queries=1000

# The number of sub compaction threads to be set up to perform compaction.
# Currently only works for nonAligned data in cross space compaction and unseq inner space compaction.
# Set to 1 when less than or equal to 0.
# Datatype: int
# sub_compaction_thread_num=4

####################
### Metadata Cache Configuration
####################

# whether to cache meta data(BloomFilter, ChunkMetadata and TimeSeriesMetadata) or not.
# Datatype: boolean
# meta_data_cache_enable=true

# 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
# chunk_timeseriesmeta_free_memory_proportion=1:100:200:50:200:200:200:50

####################
### LAST Cache Configuration
####################

# Whether to enable LAST cache
# Datatype: boolean
# enable_last_cache=true

####################
### External sort Configuration
####################
# Is external sort enable
# Datatype: boolean
# enable_external_sort=true

# The maximum number of simultaneous chunk reading for a single time series.
# If the num of simultaneous chunk reading is greater than external_sort_threshold, external sorting is used.
# When external_sort_threshold increases, the number of chunks sorted at the same time in memory may increase and this will occupy more memory.
# When external_sort_threshold decreases, triggering external sorting will increase the time-consuming.
# Datatype: int
# external_sort_threshold=1000

####################
### PIPE Server Configuration
####################
# White IP list of Sync client.
# Please use the form of network segment to present the range of IP, for example: 192.168.0.0/16
# If there are more than one IP segment, please separate them by commas
# The default is to allow all IP to sync
# Datatype: String
# ip_white_list=0.0.0.0/0

####################
### PIPE Sender Configuration
####################
# The maximum number of retry when syncing a file to receiver fails.
# max_number_of_sync_file_retry=5


####################
### performance statistic configuration
####################

# Uncomment following fields to configure the tracing root directory.
# For Window platform, the index is as follows:
# tracing_dir=data\\tracing
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# tracing_dir=data/tracing

####################
### Configurations for watermark module
####################
# Datatype: boolean
# watermark_module_opened=false
# Datatype: String
# watermark_secret_key=IoTDB*2019@Beijing
# Datatype: String
# watermark_bit_string=100101110100
# Datatype: String
# watermark_method=GroupBasedLSBMethod(embed_row_cycle=2,embed_lsb_num=5)


####################
### Configurations for creating schema automatically
####################

# Whether creating schema automatically is enabled
# Datatype: boolean
# enable_auto_create_schema=true

# Storage group level when creating schema automatically is enabled
# e.g. root.sg0.d1.s2
#      we will set root.sg0 as the storage group if storage group level is 1
# Datatype: int
# default_storage_group_level=1

# ALL data types: BOOLEAN, INT32, INT64, FLOAT, DOUBLE, TEXT

# register time series as which type when receiving boolean string "true" or "false"
# Datatype: TSDataType
# boolean_string_infer_type=BOOLEAN

# register time series as which type when receiving an integer string "67"
# Datatype: TSDataType
# integer_string_infer_type=FLOAT

# register time series as which type when receiving an integer string and using float may lose precision
# num > 2 ^ 24
# Datatype: TSDataType
# long_string_infer_type=DOUBLE

# register time series as which type when receiving a floating number string "6.7"
# Datatype: TSDataType
# floating_string_infer_type=FLOAT

# register time series as which type when receiving the Literal NaN. Values can be DOUBLE, FLOAT or TEXT
# Datatype: TSDataType
# nan_string_infer_type=DOUBLE


# BOOLEAN encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_boolean_encoding=RLE

# INT32 encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_int32_encoding=RLE

# INT64 encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_int64_encoding=RLE

# FLOAT encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_float_encoding=GORILLA

# DOUBLE encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_double_encoding=GORILLA

# TEXT encoding when creating schema automatically is enabled
# Datatype: TSEncoding
# default_text_encoding=PLAIN

####################
### Configurations for tsfile-format
####################

# Datatype: int
# group_size_in_byte=134217728

# The memory size for each series writer to pack page, default value is 64KB
# Datatype: int
# page_size_in_byte=65536

# The maximum number of data points in a page, default 1024*1024
# Datatype: int
# max_number_of_points_in_page=1048576

# Max size limitation of input string
# Datatype: int
# max_string_length=128

# Floating-point precision
# Datatype: int
# float_precision=2

# Encoder configuration
# Encoder of time series, supports TS_2DIFF, PLAIN and RLE(run-length encoding), REGULAR and default value is TS_2DIFF
# time_encoder=TS_2DIFF

# Encoder of value series. default value is PLAIN.
# For int, long data type, also supports TS_2DIFF and RLE(run-length encoding), GORILLA and ZIGZAG.
# value_encoder=PLAIN

# Compression configuration
# Data compression method, supports UNCOMPRESSED, SNAPPY or LZ4. Default value is SNAPPY
# compressor=SNAPPY

# Maximum degree of a metadataIndex node, default value is 256
# Datatype: int
# max_degree_of_index_node=256

# time interval in minute for calculating query frequency
# Datatype: int
# frequency_interval_in_minute=1

# time cost(ms) threshold for slow query
# Datatype: long
# slow_query_threshold=5000

# Signal-noise-ratio (SNR) of FREQ encoding
# Datatype: double
# freq_snr=40.0

# Block size of FREQ encoding
# Datatype: integer
# freq_block_size=1024

####################
### MQTT Broker Configuration
####################

# whether to enable the mqtt service.
# Datatype: boolean
# enable_mqtt_service=false

# the mqtt service binding host.
# Datatype: String
# mqtt_host=0.0.0.0

# the mqtt service binding port.
# Datatype: int
# mqtt_port=1883

# the handler pool size for handing the mqtt messages.
# Datatype: int
# mqtt_handler_pool_size=1

# the mqtt message payload formatter.
# Datatype: String
# mqtt_payload_formatter=json

# max length of mqtt message in byte
# Datatype: int
# mqtt_max_message_size=1048576

####################
### Authorization Configuration
####################

# which class to serve for authorization. By default, it is LocalFileAuthorizer.
# Another choice is org.apache.iotdb.db.auth.authorizer.OpenIdAuthorizer
# authorizer_provider_class=org.apache.iotdb.commons.auth.authorizer.LocalFileAuthorizer

# If OpenIdAuthorizer is enabled, then openID_url must be set.
# openID_url=

# admin username, default is root
# Datatype: string
# admin_name=root

# encryption provider class
# iotdb_server_encrypt_decrypt_provider=org.apache.iotdb.commons.security.encrypt.MessageDigestEncrypt

# encryption provided class parameter
# iotdb_server_encrypt_decrypt_provider_parameter=

# admin password, default is root
# Datatype: string
# admin_password=root

# Cache size of user and role
# Datatype: int
# author_cache_size=1000

# Cache expire time of user and role
# Datatype: int
# author_cache_expire_time=30

####################
### UDF Configuration
####################

# 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.
# Datatype: int
# udf_initial_byte_array_length_for_memory_control=48

# How much memory may be used in ONE UDF query (in MB).
# The upper limit is 20% of allocated memory for read.
# Datatype: float
# udf_memory_budget_in_mb=30.0

# UDF memory allocation ratio.
# The parameter form is a:b:c, where a, b, and c are integers.
# udf_reader_transformer_collector_memory_proportion=1:1:1

# Uncomment the following field to configure the udf root directory.
# For Window platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is
# absolute. Otherwise, it is relative.
# udf_root_dir=ext\\udf
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# udf_root_dir=ext/udf

####################
### Trigger Configuration
####################

# The size of log buffer for every trigger management operation plan. If the size of a trigger
# management operation plan is larger than this parameter, the trigger management operation plan
# will be rejected by TriggerManager.
# Datatype: int
# tlog_buffer_size=1048576

# Uncomment the following field to configure the trigger root directory.
# For Window platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is
# absolute. Otherwise, it is relative.
# trigger_root_dir=ext\\trigger
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# trigger_root_dir=ext/trigger

# How many threads can be used for evaluating sliding windows. When <= 0, use CPU core number.
# Datatype: int
# concurrent_window_evaluation_thread=0

# Max number of window evaluation tasks that can be pending for execution. When <= 0, the value is
# 64 by default.
# Datatype: int
# max_pending_window_evaluation_tasks=64

####################
### Continuous Query Configuration
####################

# How many thread will be set up to perform continuous queries. When <= 0, use max(1, CPU core number / 2).
# Datatype: int
# continuous_query_execution_thread=2

# Maximum number of continuous query tasks that can be pending for execution. When <= 0, the value is
# 64 by default.
# Datatype: int
# max_pending_continuous_query_tasks=64

# Minimum every interval to perform continuous query.
# The every interval of continuous query instances should not be lower than this limit.
# Datatype: duration
# continuous_query_min_every_interval=1s

# The size of log buffer for every CQ management operation plan. If the size of a CQ
# management operation plan is larger than this parameter, the CQ management operation plan
# will be rejected by CQManager.
# Datatype: int
# cqlog_buffer_size=1048576

####################
### Select-Into Configuration
####################

# The maximum number of rows can be processed in insert-tablet-plan when executing select-into statements.
# When <= 0, use 10000.
# Datatype: int
# select_into_insert_tablet_plan_row_limit=10000


####################
### Insert-Tablets Configuration
####################

# When the insert plan column count reaches the specified threshold, which means that the plan is relatively large. At this time, may be enabled multithreading.
# If the tablet is small, the time of each insertion is short.
# If we enable multithreading, we also need to consider the switching loss between threads,
# so we need to judge the size of the tablet.
# Datatype: int
# insert_multi_tablet_enable_multithreading_column_threshold=10

####################
### Index Configuration
####################

# Uncomment following fields to configure the index root directory.
# For Window platform, the index is as follows:
# index_root_dir=data\\index
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# index_root_dir=data/index

# Is index enable
# Datatype: boolean
# enable_index=false

# How many threads can concurrently build index. When <= 0, use CPU core number.
# Datatype: int
# concurrent_index_build_thread=0

# the default size of sliding window used for the subsequence matching in index framework
# Datatype: int
# default_index_window_range=10

# buffer parameter for index processor.
# Datatype: long
# index_buffer_size=134217728

# whether enable data partition. If disabled, all data belongs to partition 0
# Datatype: boolean
# enable_partition=false

# time range for partitioning data inside each storage group, the unit is second
# Datatype: long
# partition_interval=86400

# time range for partitioning data inside each data region, the unit is millisecond
# Datatype: long
# time_partition_interval_for_storage=86400000

####################
### Influx DB RPC Service Configuration
####################
# Datatype: boolean
# enable_influxdb_rpc_service=false

# Datatype: int
# influxdb_rpc_port=8086

####################
### Group By Fill Configuration
####################
# Datatype: float
# group_by_fill_cache_size_in_mb=1.0

####################
### Schema Engine Configuration
####################
# Choose the mode of schema engine. The value could be Memory,Schema_File and Rocksdb_based. If the provided value doesn't match any pre-defined value, Memory mode will be used as default.
# Datatype: string
# schema_engine_mode=Memory

# cache size for SchemaRegion.
# This cache is used to improve insert speed where all path check and TSDataType will be cached in SchemaRegion with corresponding Path.
# Datatype: int
# schema_region_device_node_cache_size=10000

# thread pool size for read operation in DataNode's coordinator.
# Datatype: int
# coordinator_read_executor_size=20

# thread pool size for write operation in DataNode's coordinator.
# Datatype: int
# coordinator_write_executor_size=50

# cache size for partition.
# This cache is used to improve partition fetch from config node.
# Datatype: int
# partition_cache_size=1000

####################
### Schema File Configuration
####################
# The minimum size (in bytes) allocated for a node in schema file
# A large number for this will make it faster while occupying more space, or otherwise
# The default 0 means if a flushed internal(entity) had less than 20 children, it will get a segment with the size calculated from total size of its children
# If no child, it would get a segment of 25 bytes, which is the size of segment header
# Datatype: short
# minimum_schema_file_segment_in_bytes=0

# The cache size for schema page in one schema file
# A bigger cache makes it faster but costs more space and more volatile when evicts item from cache
# Datatype: int
# page_cache_in_schema_file=1024

####################
### Trigger Forward
####################
# Number of queues per forwarding trigger
trigger_forward_max_queue_number=8
# The length of one of the queues per forwarding trigger
trigger_forward_max_size_per_queue=2000
# Trigger forwarding data size per batch
trigger_forward_batch_size=50
# Trigger HTTP forward pool size
trigger_forward_http_pool_size=200
# Trigger HTTP forward pool max connection for per route
trigger_forward_http_pool_max_per_route=20
# Trigger MQTT forward pool size
trigger_forward_mqtt_pool_size=4



#######################
### LocalConfigNode ###
#######################

# number of data regions per user-defined storage group
# a data region is the unit of parallelism in memory as all ingestions in one data region are serialized
# recommended value is [data region number] = [CPU core number] / [user-defined storage group number]
# Datatype: int
# data_region_num=1

####################
### External Lib Configuration
####################

# external lib directory for properties loader
# For Window platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is
# absolute. Otherwise, it is relative.
# external_properties_loader_dir=ext\\loader
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# external_properties_loader_dir=ext/loader

# external lib directory for limiter
# For Window platform
# If its prefix is a drive specifier followed by "\\", or if its prefix is "\\\\", then the path is
# absolute. Otherwise, it is relative.
# external_limiter_dir=ext\\limiter
# For Linux platform
# If its prefix is "/", then the path is absolute. Otherwise, it is relative.
# external_limiter_dir=ext/limiter

