最近花了些时间看了下ClickHouse文档,发现它在OLAP方面表现很优异,并且相对也比较轻量和简单,因此准备入门了解下该数据库系统。在介绍了安装和用户权限管理以后,本文对其配置文件作下相关的介绍说明。html
ClickHouse的配置文件是config.xml,默认在/etc/clickhouse-server/目录中,能够在conf.d和config.d目录中的*.xml和*.conf文件中覆盖各个设置。还能够为这些配置文件的元素指定replace或remove属性,若是均未指定,它将以递归方式合并元素的内容,从而替换重复子元素的值。若是指定了replace,将用指定的元素替换整个元素。若是指定了remove,则删除该元素。node
配置文件还能够定义substitutions(替代)。若是元素具备incl属性,则文件中的相应值将被替换。替换文件的路径为/etc/metrika.xml。能够在配置文件加入include_from元素进行更改。替换值在此文件的/yandex/substitution_name元素中指定。若是incl中指定的替代不存在,则将其记录在日志中。为了防止ClickHouse记录缺乏的替代项,请指定:optional= true属性。mysql
能够从ZooKeeper中进行替换,指定属性from_zk =“ /path/to/node”。元素值将替换为ZooKeeper中/path/to/node上节点的内容。还能够将整个XML子树放在ZooKeeper节点上,并将其彻底插入到source元素中。git
config.xml文件可使用users设置,为profiles和quotas指定单独的配置。此配置的相对路径在'users_config'元素中设置。默认状况下,它是users.xml。若是省略users_config,则直接在config.xml中指定。github
了解了各个参数的目的是更好进行配置和使用资源的限制,关于参数的详细说明能够看官方文档:Server settings、Settings正则表达式
1. builtin_dictionaries_reload_interval:从新加载内置词典的时间间隔(以秒为单位),默认3600。能够在不从新启动服务器的状况下“即时”修改词典。算法
<builtin_dictionaries_reload_interval>3600</builtin_dictionaries_reload_interval>
2. compression:MergeTree引擎表的数据压缩设置。配置模板如:sql
<compression incl="clickhouse_compression"> --指定incl <case> <min_part_size>10000000000</min_part_size> --数据部分的最小大小 <min_part_size_ratio>0.01</min_part_size_ratio> --数据部分大小与表大小的比率 <method>zstd</method> --压缩算法,zstd和lz4 </case> </compression>
能够配置多个<case>。若是数据部分与条件集匹配,使用指定的压缩方法;若是数据部分匹配多个条件集,将使用第一个匹配的条件集;若是数据部分不知足任何条件,则使用lz4压缩。数据库
3. default_database:默认数据库。express
<default_database>default</default_database>
4. default_profile:默认设置配置文件,在参数user_config中指定。
<default_profile>default</default_profile>
5. dictionaries_config:外部词典的配置文件的路径,在config配置文件中指定。路径能够包含通配符*和?的绝对或则相对路径。
<dictionaries_config>*_dictionary.xml</dictionaries_config>
6. dictionaries_lazy_load:延迟加载词典,默认false。
true:在首次使用时建立每一个字典。 若是字典建立失败,则正在使用字典的函数将引起异常。
false:在服务器启动时将建立全部字典,若是有错误,则服务器将关闭。
<dictionaries_lazy_load>true</dictionaries_lazy_load>
7. format_schema_path:包含输入格式文件(例如CapnProto格式的方案)的目录路径。
<format_schema_path> format_schemas / </ format_schema_path>
8. graphite:将数据发送到Graphite,它是一款企业级监控。
<graphite> <host>localhost</host> -- Graphite服务器 <port>42000</port> -- Graphite服务器上的端口 <timeout>0.1</timeout> -- 发送超时时间,以秒为单位 <interval>60</interval> -- 发送间隔,以秒为单位 <root_path>one_min</root_path> -- 密钥的前缀 <metrics>true</metrics> -- 从system.metrics表发送数据 <events>true</events> -- 从system.events表发送在该时间段内累积的增量数据 <events_cumulative>false</events_cumulative> -- 从system.events表发送累积数据 <asynchronous_metrics>true</asynchronous_metrics> -- 从system.asynchronous_metrics表发送数据 </graphite>
能够配置多个<graphite>子句。例如,您可使用它以不一样的时间间隔发送不一样的数据。后期监控会单独写篇文章介绍,目前暂时进行说明。
9. graphite_rollup:数据汇总设置
<default> <function>max</function> <retention> <age>0</age> <precision>60</precision> </retention> <retention> <age>3600</age> <precision>300</precision> </retention> <retention> <age>86400</age> <precision>3600</precision> </retention> </default> </graphite_rollup_example>
更多详细信息,请参见GraphiteMergeTree。
10. http_port/https_port:经过HTTP链接到服务器的端口。若是指定了https_port,则必须配置openSSL。若是指定了http_port,则即便已设置openSSL配置,也会将其忽略。
<http_port>8123</http_port>
11. http_server_default_response:访问ClickHouse HTTP服务器时默认显示的页面。默认值为“OK”(末尾有换行符)
<http_server_default_response> <![CDATA[<html ng-app="SMI2"><head><base href="http://ui.tabix.io/"></head><body><div ui-view="" class="content-ui"></div><script src="http://loader.tabix.io/master.js"></script></body></html>]]> </http_server_default_response>
12. include_from:带替换文件的路径,有关更多信息,请参见“Configuration files”部分。
<include_from>/etc/metrica.xml</include_from>
13. interserver_http_port:于在ClickHouse服务器之间交换数据的端口。
<interserver_http_port>9009</interserver_http_port>
14. interserver_http_host:其余服务器能够用来访问该服务器的主机名。若是省略,则其定义方法与hostname -f命令相同。
<interserver_http_host>example.yandex.ru</interserver_http_host>
15. interserver_http_credentials:在使用Replicated *引擎进行复制期间进行身份验证的用户名和密码。 这些凭据仅用于副本之间的通讯,与ClickHouse客户端的凭据无关。 服务器正在检查这些凭据以链接副本,并在链接到其余副本时使用相同的凭据。 所以,对于群集中的全部副本,应将这些凭据设置为相同。默认不使用身份验证。
<interserver_http_credentials> <user>admin</user> <password>222</password> </interserver_http_credentials>
16. keep_alive_timeout:ClickHouse在关闭链接以前等待传入请求的秒数。 默认为3秒。
<keep_alive_timeout>3</keep_alive_timeout>
17. listen_host:限制来源主机的请求, 若是要服务器回答全部请求,请指定“::” :
<listen_host> :: 1 </ listen_host> <listen_host> 127.0.0.1 </ listen_host>
18. logger:日志记录设置。选项组里的设置有:level、log、errorlog、size、count:
<logger>
<level>trace</level> --日志记录级别。可接受的值: trace, debug, information, warning, error
<log>/var/log/clickhouse-server/clickhouse-server.log</log> --日志文件,根据级别包含全部条目 <errorlog>/var/log/clickhouse-server/clickhouse-server.err.log</errorlog> -- 错误日志文件 <size>1000M</size> -- 文件的大小。适用于loganderrorlog,文件达到大小后,ClickHouse将对其进行存档并重命名,并在其位置建立一个新的日志文件 <count>10</count> -- ClickHouse存储的已归档日志文件的数量 </logger>
还支持写入系统日志:
<logger>
<use_syslog>1</use_syslog> -- 写入系统日志
<syslog>
<address>syslog.remote:10514</address> -- syslogd的主机[:port]。若是省略,则使用本地守护程序 <hostname>myhost.local</hostname> -- 可选,从中发送日志的主机的名称。 <facility>LOG_LOCAL6</facility> -- syslog关键字,其大写字母带有“ LOG_”前缀:(LOG_USER,LOG_DAEMON,LOG_LOCAL3,依此类推) <format>syslog</format> -- 格式。可能的值:bsd和syslog </syslog> </logger>
19. macros:复制表的参数替换,若是不使用复制表,则能够省略。有关更多信息,请参见“Creating replicated tables”
<macros incl="macros" optional="true" />
20. mark_cache_size:标记缓存的大小,用于MergeTree系列的表中。 以字节为单位,共享服务器的缓存,并根据须要分配内存。缓存大小必须至少为5368709120(5G)。
<mark_cache_size>5368709120</mark_cache_size>
21. max_concurrent_queries:同时处理的最大请求数。
<max_concurrent_queries>100</max_concurrent_queries>
22. max_connections:最大链接数。
<max_connections>4096</max_connections>
23. max_open_files:打开最大的文件数,默认最大值
<max_open_files> 262144 </ max_open_files>
24. max_table_size_to_drop:删除表的限制,默认50G,0表示不限制。若是MergeTree表的大小超过max_table_size_to_drop(以字节为单位),则没法使用DROP查询将其删除。若是仍然须要删除表而不从新启动ClickHouse服务器,请建立<clickhouse-path>/flags/force_drop_table文件并运行DROP查询。
<max_table_size_to_drop>0</max_table_size_to_drop>
25. merge_tree:对MergeTree中的表进行调整,有关更多信息,请参见MergeTreeSettings.h头文件。
<merge_tree> <max_suspicious_broken_parts>5</max_suspicious_broken_parts> </merge_tree>
26. openSSL:SSL客户端/服务器配置。服务器/客户端设置:
<openSSL> <server> <!-- openssl req -subj "/CN=localhost" -new -newkey rsa:2048 -days 365 -nodes -x509 -keyout /etc/clickhouse-server/server.key -out /etc/clickhouse-server/server.crt --> <certificateFile>/etc/clickhouse-server/server.crt</certificateFile> --PEM格式的客户端/服务器证书文件的路径。若是privateKeyFile包含证书,则能够忽略它。 <privateKeyFile>/etc/clickhouse-server/server.key</privateKeyFile> --具备PEM证书的秘密密钥的文件的路径。该文件可能同时包含密钥和证书。 <!-- openssl dhparam -out /etc/clickhouse-server/dhparam.pem 4096 --> <dhParamsFile>/etc/clickhouse-server/dhparam.pem</dhParamsFile> <verificationMode>none</verificationMode> --检查节点证书的方法。详细信息在Context类的描述中。可能的值:none, relaxed, strict, once. <loadDefaultCAFile>true</loadDefaultCAFile> --指示将使用OpenSSL的内置CA证书。可接受的值:true,false <cacheSessions>true</cacheSessions> --启用或禁用缓存会话。必须与sessionIdContext结合使用。可接受的值:true,false。 <disableProtocols>sslv2,sslv3</disableProtocols> --不容许使用的协议。 <preferServerCiphers>true</preferServerCiphers> ----首选服务器密码 </server> <client> <loadDefaultCAFile>true</loadDefaultCAFile> --指示将使用OpenSSL的内置CA证书。可接受的值:true,false <cacheSessions>true</cacheSessions> -- --启用或禁用缓存会话。必须与sessionIdContext结合使用。可接受的值:true,false。 <disableProtocols>sslv2,sslv3</disableProtocols> --不容许使用的协议。 <preferServerCiphers>true</preferServerCiphers> --首选服务器密码 <!-- Use for self-signed: <verificationMode>none</verificationMode> --> <invalidCertificateHandler> --用于验证无效证书的类 <!-- Use for self-signed: <name>AcceptCertificateHandler</name> --> <name>RejectCertificateHandler</name> </invalidCertificateHandler> </client> </openSSL>
27. part_log:记录与MergeTree关联的事件。如添加或合并数据。可使用日志来模拟合并算法并比较其特征。 查询记录在system.part_log表中,而不记录在单独的文件中。 您能够在table参数中配置该表的名称(<part_log>)。使用如下参数来配置日志记录:
<part_log> <database>system</database> --库名 <table>part_log</table> --表名 <partition_by>toMonday(event_date)</partition_by> --自定义分区键 <flush_interval_milliseconds>7500</flush_interval_milliseconds> --将数据从内存中的缓冲区刷新到表的时间间隔,单位毫秒。 </part_log>
28. path:数据的目录路径。
<path>/var/lib/clickhouse/</path>
29. query_log:经过log_queries = 1设置,记录接收到的查询。查询记录在system.query_log表中,而不记录在单独的文件中。能够在table参数中更改表的名称。
<query_log> <database>system</database> --库名 <table>query_log</table> --表名 <partition_by>toMonday(event_date)</partition_by> --自定义分区键 <flush_interval_milliseconds>7500</flush_interval_milliseconds> --将数据从内存中的缓冲区刷新到表的时间间隔 </query_log>
若是该表不存在,ClickHouse将建立它。若是在更新ClickHouse服务器时查询日志的结构发生了更改,则具备旧结构的表将重命名,并自动建立一个新表。
30. query_thread_log:使用log_query_threads = 1设置,记录接收到查询的线程。查询记录在system.query_thread_log表中,而不记录在单独的文件中。您能够在table参数中更改表的名称。
<query_thread_log> <database>system</database> --库名 <table>query_thread_log</table> --表名 <partition_by>toMonday(event_date)</partition_by> --自定义分区键 <flush_interval_milliseconds>7500</flush_interval_milliseconds> --将数据从内存中的缓冲区刷新到表的时间间隔 </query_thread_log>
若是该表不存在,ClickHouse将建立它。若是在更新ClickHouse服务器时查询线程日志的结构发生了更改,则具备旧结构的表将重命名,并自动建立一个新表。
31. trace_log:trace_log系统表操做的设置。
<trace_log> <database>system</database> --库名 <table>trace_log</table> --表名 <partition_by>toYYYYMM(event_date)</partition_by> ----自定义分区键 <flush_interval_milliseconds>7500</flush_interval_milliseconds> ----将数据从内存中的缓冲区刷新到表的时间间隔 </trace_log>
32. query_masking_rules:基于Regexp的规则,应用于查询以及全部日志消息。再其存储在服务器日志中,system.query_log,system.text_log,system.processes表以及以日志形式发送给客户端。这样能够防止SQL查询中的敏感数据泄漏记录到日志中。
<query_masking_rules> <rule> <name>hide SSN</name> --规则名称 <regexp>(^|\D)\d{3}-\d{2}-\d{4}($|\D)</regexp> --正则表达式 <replace>000-00-0000</replace> --替换,敏感数据的替换字符串(默认为可选-六个星号) </rule> </query_masking_rules>
规则适用于整个查询,system.events表具备计数器QueryMaskingRulesMatch,该计数器具备查询掩码规则匹配的总数。对于分布式查询,必须分别配置每一个服务器,不然子查询将传递给其余服务器节点将被存储而不会屏蔽。
33. remote_servers:远程服务器,分布式表引擎和集群表功能使用的集群的配置。
<remote_servers incl="clickhouse_remote_servers" />
34. timezone:服务器的时区,定为UTC时区或地理位置(例如,非洲/阿比让)的IANA标识符。
当DateTime字段输出为文本格式(打印在屏幕或文件中),以及从字符串获取DateTime时,时区对于在String和DateTime格式之间进行转换是必需的。 此外,若是在输入参数中未接收到时区,则在使用时间和日期的函数中会使用时区。
<timezone>Europe/Moscow</timezone>
35. tcp_port:经过TCP协议与客户端进行通讯的端口,即ClickHouse端口。
<tcp_port>9000</tcp_port>
36. tcp_port_secure:经过TCP协议与客户端进行通讯的端口,即ClickHouse端口。 与OpenSSL设置一块儿使用。
<tcp_port_secure> 9440 </ tcp_port_secure>
37. mysql_port:经过MySQL协议与客户端通讯的端口。
<mysql_port>9004</mysql_port>
38. tmp_path:用于处理大型查询的临时数据的路径。
<tmp_path>/var/lib/clickhouse/tmp/</tmp_path>
39. tmp_policy:从storage_configuration的策略,用于存储临时文件。若是未设置,则使用tmp_path,不然将忽略它。
40. uncompressed_cache_size:表引擎从MergeTree使用的未压缩数据的缓存大小(以字节为单位,8G)。服务器有一个共享缓存,内存是按需分配的。若是启用,则使用高速缓存。在个别状况下,未压缩的缓存对于很是短的查询是有利的。
<uncompressed_cache_size>8589934592</uncompressed_cache_size>
41. user_files_path:包含用户文件的目录,在表函数file()中使用。
<user_files_path>/var/lib/clickhouse/user_files/</user_files_path>
42. users_config:用户配置文件,能够配置用户访问、profiles、quota、查询等级等。
<users_config>users.xml</users_config>
43. zookeeper:ClickHouse与ZooKeeper群集进行交互的设置。使用复制表时,ClickHouse使用ZooKeeper来存储副本的元数据。若是不使用复制表,则能够忽略此参数。
<zookeeper> <node> <host>example1</host> <port>2181</port> </node> <node> <host>example2</host> <port>2181</port> </node> <session_timeout_ms>30000</session_timeout_ms> --客户端会话的最大超时(以毫秒为单位) <operation_timeout_ms>10000</operation_timeout_ms> <!-- Optional. Chroot suffix. Should exist. --> <root>/path/to/zookeeper/node</root> -- 用做ClickHouse服务器使用的znode的根的znode <!-- Optional. Zookeeper digest ACL string. --> <identity>user:password</identity> --用户和密码,ZooKeeper可能须要这些用户和密码才能访问请求的znode </zookeeper>
44. use_minimalistic_part_header_in_zookeeper:ZooKeeper中数据部分头的存储方法。1:打开;0:关闭。默认0
仅适用于MergeTree系列。能够指定:
若是use_minimalistic_part_header_in_zookeeper = 1,则复制的表使用单个znode紧凑地存储数据部分的头。 若是表包含许多列,则此存储方法将大大减小Zookeeper中存储的数据量。但没法将ClickHouse服务器降级到不支持此设置的版本,在群集中的服务器上升级ClickHouse时要当心。 不要一次升级全部服务器。 在测试环境中或仅在群集中的几台服务器上测试ClickHouse的新版本更为安全。已经使用此设置存储的数据部件标题没法恢复为其之前的(非紧凑)表示形式。
45. disable_internal_dns_cache:禁用内部DNS缓存,默认0。
46. dns_cache_update_period:内部DNS缓存中存储的IP地址的更新时间(以秒为单位),更新是在单独的系统线程中异步执行的,默认15秒。
1. distributed_product_mode:更改分布式子查询的行为。当查询包含分布式表的乘积,即当分布式表的查询包含分布式表的非GLOBAL子查询时,ClickHouse将应用此设置。
限制条件:
可设置的值:
2. enable_optimize_predicate_expression:SELECT查询中打开谓词下推,谓词下推可能会大大减小分布式查询的网络流量。默认1,可选0、1。
3. fallback_to_stale_replicas_for_distributed_queries:若是没有新的数据,则强制查询到过时的副本中查询, 请参见复制。默认1,可选0、1。
4. force_index_by_date:若是没法按日期使用索引,则禁用查询执行,与MergeTree系列中的表一块儿使用。默认0,可选0、1。
若是force_index_by_date = 1,检查查询是否具备可用于限制数据范围的日期键条件。 若是没有合适的条件,它将引起异常。 但不会检查条件是否减小了要读取的数据量。 如条件Date!='2000-01-01'是能够接受的,即便它与表中的全部数据匹配(即,运行查询须要彻底扫描)。
5. force_primary_key:若是没法经过主键创建索引,则禁用查询执行,与MergeTree系列中的表一块儿使用。默认0,可选0、1。
若是force_primary_key = 1,检查查询是否具备可用于限制数据范围的主键条件。 若是没有合适的条件,它将引起异常。 但不会检查条件是否减小了要读取的数据量。
6. format_schema:使用定义的格式。
7. fsync_metadata:写入.sql文件时启用或禁用fsync。 默认1,启用。可选0、1。若是服务器具备数百万个不断建立和销毁的小表,则禁用它是有意义的。
8. enable_http_compression:HTTP请求的响应中启用或禁用数据压缩。默认0,可选0、1。
9. http_zlib_compression_level:设置HTTP请求的响应中的数据压缩级别。默认3,可选1~9。
10. http_native_compression_disable_checksumming_on_decompress:从客户端解压缩HTTP POST数据时启用或禁用校验和验证。 仅用于ClickHouse本机压缩格式(不适用于gzip或deflate),默认0,禁用,可选0、1。
11. send_progress_in_http_headers:在clickhouse-server响应中启用或禁用X-ClickHouse-Progress HTTP响应标头。默认0,可选0、1。更多信息见:HTTP 客户端
12. max_http_get_redirects:限制URL引擎表的最大HTTP GET重定向跃点数。 该设置适用于两种类型的表:由CREATE TABLE查询和url表函数建立的表。默认0,可选0、非0正整数。
13. input_format_allow_errors_num:设置从文本格式(CSV,TSV等)读取时可接受的最大错误数。默认0。若是在读取行时发生错误,但错误计数器仍小于input_format_allow_errors_num,则ClickHouse会忽略该行并继续进行下一行。若是同时超过了input_format_allow_errors_num和input_format_allow_errors_ratio,则ClickHouse会引起异常。
14. input_format_allow_errors_ratio:设置从文本格式(CSV,TSV等)读取时容许的最大错误百分比。错误百分比设置为0到1之间的浮点数。默认0。若是在读取行时发生错误,但错误计数器仍小于input_format_allow_errors_ratio,则ClickHouse会忽略该行并继续进行下一行。若是同时超过了input_format_allow_errors_num和input_format_allow_errors_ratio,则ClickHouse会引起异常。
15. input_format_values_interpret_expressions:若是快速流解析器没法解析数据,则启用或禁用完整的SQL解析器。此设置仅用于数据插入时的“值”格式。有关语法分析的更多信息,请参见“语法”部分。默认1,可选0、1:
SET input_format_values_interpret_expressions = 0; INSERT INTO datetime_t VALUES (now()) Exception on client: Code: 27. DB::Exception: Cannot parse input: expected ) before: now()): (at row 1) SET input_format_values_interpret_expressions = 1; INSERT INTO datetime_t VALUES (now()) Ok
16. input_format_values_deduce_templates_of_expressions:启用或禁用SQL表达式模板推导。默认1。若是连续行中的表达式具备相同的结构,则能够更快地解析和解释Values中的表达式。 ClickHouse将尝试推导表达式的模板,使用该模板解析如下行,并对成功解析的行进行评估。如:
INSERT INTO test VALUES (lower('Hello')), (lower('world')), (lower('INSERT')), (upper('Values')), ... 1:若是input_format_values_interpret_expressions = 1和format_values_deduce_templates_of_expressions = 0会分别为每行解释表达式(这对于大量的行来讲很是慢) 2:若是input_format_values_interpret_expressions = 0和format_values_deduce_templates_of_expressions = 1会使用模板lower(String)解析第一,第二和第三行。 3:若是input_format_values_interpret_expressions = 1和format_values_deduce_templates_of_expressions = 1 与前面的状况相同,可是若是没法推断出模板,则还容许回退以单独解释表达式。
17. input_format_values_accurate_types_of_literals: 仅当input_format_values_deduce_templates_of_expressions = 1时才使用此设置。可能会发生某些列的表达式具备相同的结构,但包含不一样类型的状况,默认1,可选0、1。如:
(..., abs(0), ...), -- UInt64 literal (..., abs(3.141592654), ...), -- Float64 literal (..., abs(-1), ...), -- Int64 literal
启用此设置后,ClickHouse将检查实际类型,并将使用相应类型的表达式模板。 在某些状况下,可能会大大减慢表达式的评估。禁用后,ClickHouse可能会使用更通用的类型(例如Float64或Int64而不是42的UInt64),但可能会致使溢出和精度问题。
18. input_format_defaults_for_omitted_fields:执行INSERT查询时,将省略的列替换为各个列的默认值。 此选项仅适用于JSONEachRow,CSV和TabSeparated格式。启用此选项后,扩展表元数据将从服务器发送到客户端。 消耗了服务器上的其余计算资源,并可能下降性能。默认1,可选0、1。
19. input_format_tsv_empty_as_default:将TSV中的空白字段替换为默认值。对于复杂的默认表达式,也必须启用input_format_defaults_for_omitted_fields。默认0,可选0、1。
20. input_format_null_as_default:若是输入数据包含NULL,但对应列的数据类型不是Nullable(T),则启用或禁用默认值(对于文本输入格式),默认0,可选0、1
21. input_format_skip_unknown_fields:启用或禁用跳过多余数据列的插入。默认0,可选0、1。写入数据时,若是输入数据包含目标表中不存在的列,则ClickHouse会引起异常。若是启用了跳过,则ClickHouse不会插入额外的数据,也不会引起异常。支持格式:JSONEachRow,CSVWithNames,TabSeparatedWithNames,TSKV。
22. input_format_import_nested_json:启用或禁用带有嵌套对象的JSON数据插入。默认0,可选0、1。支持的格式为JSONEachRow。
23. input_format_with_names_use_header:启用或禁用在插入数据时检查列顺序。默认0,可选0、1。为了提升插入性能,若是肯定输入数据的列顺序与目标表中的顺序相同,则建议禁用此检查。支持的格式CSVWithNames、TabSeparatedWithNames。
24. date_time_input_format:容许选择一个解析器的文本表示日期和时间,该设置不适用于日期和时间功能。默认basic,可选:basic、best_effort。
25. join_default_strictness:设置JOIN子句的默认严格性,默认all。可选值:
26. join_any_take_last_row:严格更改联接操做的行为,仅适用于具备Join引擎表的JOIN操做。默认值0,
27. join_use_nulls:设置JOIN行为的类型,合并表时可能会出现空单元格,ClickHouse根据此设置以不一样的方式填充。默认0,可选:
28. join_any_take_last_row:更改ANY JOIN的行为。 禁用,ANY JOIN将获取找到的第一行键。 启用,若是同一键有多个行,则ANY JOIN会获取最后匹配的行。 该设置仅在联接表引擎中使用。默认1,可选0、1。
29. max_block_size:在ClickHouse中,数据由块(列部分的集合)处理。 处理每一个块都有开销。 对于要从表中加载的块大小(以行数为单位),建议使用max_block_size设置。 目的是避免在多个线程中提取大量列时避免占用过多内存,并至少保留一些缓存局部性。默认:65,536(行数)。并不是老是从表中加载max_block_size大小的块。 若是很明显须要检索较少的数据,则处理较小的块。
30. preferred_block_size_bytes:用于与max_block_size相同的目的,可是它经过将其调整为适合块中的行数来设置建议的块大小(以字节为单位),但块大小不能超过max_block_size行。默认值:1,000,000。 仅在从MergeTree引擎读取时有效。
31. merge_tree_min_rows_for_concurrent_read:从MergeTree引擎表的文件中读取的行数超过merge_tree_min_rows_for_concurrent_read,则ClickHouse尝试在多个线程上从该文件执行并发读取。默认163840,可选任何正整数。
32. merge_tree_min_bytes_for_concurrent_read:从MergeTree引擎表的文件读取的字节数超过了merge_tree_min_bytes_for_concurrent_read,则ClickHouse会尝试在多个线程中同时读取该文件。默认251658240,可选任何正整数。
33. merge_tree_min_rows_for_seek:在一个文件中读取的两个数据块之间的距离小于merge_tree_min_rows_for_seek行,则ClickHouse不会搜索文件,而是顺序读取数据。默认0,可选任何正整数。
34. merge_tree_min_bytes_for_seek:在一个文件中读取的两个数据块之间的距离小于merge_tree_min_bytes_for_seek字节,则ClickHouse顺序读取包含两个块的文件的范围,从而避免了额外的查找。默认0,可选任何正整数。
35. merge_tree_coarse_index_granularity:搜索数据时,ClickHouse检查索引文件中的数据标记。若是ClickHouse发现所需键在某个范围内,则会将该范围划分为merge_tree_coarse_index_granularity子范围,而后在该范围内递归搜索所需键。默认8,可选任何正偶数整数。
36. merge_tree_max_rows_to_use_cache:在一个查询中读取的行数超过merge_tree_max_rows_to_use_cache行,则它不使用未压缩块的缓存,使用压缩块的高速缓存存储为查询提取的数据。 ClickHouse使用此缓存来加快对重复的小型查询的响应。此设置可保护高速缓存免受读取大量数据的查询的破坏。 uncompressed_cache_size服务器设置定义未压缩块的缓存大小。默认1048576,可选任何正整数。
37. merge_tree_max_bytes_to_use_cache:在一个查询中读取的数据多于merge_tree_max_bytes_to_use_cache字节,则它不使用未压缩块的缓存,同上。默认2013265920,可选任何正整数。
38. min_bytes_to_use_direct_io:使用直接I/O访问存储磁盘所需的最小数据量。若是要读取的全部数据的总存储量超过min_bytes_to_use_direct_io字节,则ClickHouse会使用O_DIRECT选项从存储磁盘读取数据。默认0,禁用,可选0、正整数。
39. log_queries:设置发送到ClickHouse的查询将根据query_log服务器配置参数中的规则记录。
40. log_query_threads:设置运行的查询的线程将根据query_thread_log服务器配置参数中的规则记录。
41. max_insert_block_size:插入表中要造成的块的大小。此设置仅在服务器构成块的状况下适用。对经过HTTP接口的INSERT,服务器解析数据格式并造成指定大小的块。默认1048576。默认值略大于max_block_size,这样作是由于某些表引擎(* MergeTree)在磁盘上为每一个插入的块造成了一个数据部分,这是一个至关大的实体。相似地,* MergeTree表在插入期间对数据进行排序,而且足够大的块大小容许对RAM中的更多数据进行排序。
42. max_replica_delay_for_distributed_queries:以秒为单位设置时间。若是副本滞后于设置值,则不使用该副本。默认300秒,在复制表的分布式表执行SELECT时使用。
43. max_threads:查询处理线程的最大数量,不包括用于从远程服务器检索数据的线程(请参见“ max_distributed_connections”参数),适用于并行执行查询处理管道相同阶段的线程。默认值:物理CPU内核数。max_threads值越小,消耗的内存越少。
当从表中读取时,若是可使用函数求值表达式,使用WHERE进行过滤并使用至少“max_threads”个线程数并行地为GROUP BY进行预聚合。
对于因为LIMIT而快速完成的查询,能够设置较低的“max_threads”。
44. max_insert_threads:执行INSERT SELECT查询的最大线程数。默认值0,可选0、正整数。较高的值将致使较高的内存使用率。并行INSERT SELECT仅在SELECT部分并行执行时才有效。
45. max_compress_block_size:压缩写入表以前,未压缩数据块的最大大小,默认1048576(1 MiB)。若是减少大小,则因为高速缓存局部性,压缩率将下降,压缩和解压缩速度会略有增长,而且内存消耗也会减小。一般没有任何理由更改此设置。不要将压缩块(由字节组成的内存块)与查询处理块(表中的一组行)混淆。
46. min_compress_block_size:对于MergeTree表为了减小处理查询时的延迟,若是块的大小至少为min_compress_block_size,则在写入下一个标记时将压缩该块。默认值为65536。若是未压缩的数据小于max_compress_block_size,则块的实际大小不小于此值且不小于一个标记的数据量,一般没有任何理由更改此设置。
47. max_query_size:能够带到RAM以便与SQL解析器一块儿解析的查询的最大部分,默认256K。
48. Interactive_delay:检查请求执行是否已取消并发送进度的时间间隔,以微秒为单位。默认值:100000(检查取消并每秒发送10次进度)。
49. connect_timeout,receive_timeout,send_timeout:用于与客户端通讯的套接字上的超时(以秒为单位),默认为10,300,300
50. cancel_http_readonly_queries_on_client_close:当客户端关闭链接而不等待响应时,取消HTTP只读查询。默认0,
51. poll_interval:将等待循环锁定指定的秒数,默认10。
52. max_distributed_connections:与远程服务器的并发链接的最大数量,用于对单个查询到单个Distributed表进行分布式处理。建议设置不小于集群中服务器数量的值,默认1024。
53. distributed_connections_pool_size:与远程服务器的并发链接的最大数量,用于对全部查询到单个Distributed表进行的分布式处理。 咱们建议设置一个不小于集群中服务器数量的值。默认1024。
54. connect_timeout_with_failover_ms:若是集群定义中使用了“ shard”和“ replica”部分,则链接到分布式表引擎的远程服务器的超时时间(以毫秒为单位),默认50毫秒。
55. connections_with_failover_max_tries:分布式表引擎与每一个副本的最大链接尝试次数,默认3。
56. extremes:是否计算极值(查询结果列中的最小值和最大值)。 接受0或1。默认状况下,0(禁用)。
57. use_uncompressed_cache:是否使用未压缩块的缓存。接受0或1。默认状况下,0(禁用)。
当使用大量短查询时,使用未压缩的缓存(仅适用于MergeTree系列中的表)能够有效减小延迟并增长吞吐量。建议为频繁发送简短请求的用户启用此设置。
注意uncompressed_cache_size配置参数(仅在配置文件中设置):未压缩的缓存块的大小。默认状况下为8 GiB。未压缩的缓存将根据须要填充,而且使用最少的数据将自动删除。
对于读取一些数据量(一百万行或更多)的查询,未压缩的缓存将自动禁用,以节省真正小的查询的空间。这意味着能够始终将“ use_uncompressed_cache”设置设为1。
58. replace_running_query:使用HTTP接口时,能够传递'query_id'参数。这是用做查询标识符的任何字符串。若是此时已存在来自具备相同query_id的相同用户的查询,则行为取决于replace_running_query参数:
59. stream_flush_interval_ms:在超时或线程生成max_insert_block_size行的状况下,适用于具备流式传输的表,默认7500。值越小,将数据刷新到表中的频率越高。将该值设置得过低会致使性能降低。
60. load_balancing:指定用于分布式查询处理的副本选择算法。默认:Random。
计算每一个副本的错误数量。 查询发送到最少的错误副本,若是存在多个,则发送到其中任何一个。
缺点:不考虑服务器的邻近性; 若是副本具备不一样的数据,则可能得到不一样的数据。
61. prefer_localhost_replica:启用或则禁用处理分布式查询时使用localhost副本。默认1,可选值0、1:
注意:若是使用max_parallel_replicas,请禁用此设置。
62. totals_mode:存在HAVING时以及存在max_rows_to_group_by和group_by_overflow_mode ='any'时如何计算TOTALS。
63. totals_auto_threshold:totals_mode ='auto'的阈值,
64. max_parallel_replicas:执行查询时,每一个分片的最大副本数。为了保持一致性(以获取同一数据拆分的不一样部分),此选项仅在设置采样键时才有效。复制延迟不受控制。
65. compile:启用查询编译。默认状况下,0(禁用)。编译仅用于查询处理管道的一部分:用于聚合的第一阶段(GROUP BY)。对于具备多个简单聚合函数的查询,能够看到最大的性能改进(在极少数状况下,速度提升了四倍)。一般,性能提高微不足道。在极少数状况下,它可能会减慢查询的执行速度。
66. min_count_to_compile:运行编译以前可能使用已编译代码块的次数。默认状况下,3。对于测试,能够将该值设置为0
67. output_format_json_quote_64bit_integers:若是该值为true,则在使用JSON * Int64和UInt64格式时(以与大多数JavaScript实现兼容),引号中会出现整数。不然,将输出不带引号的整数。
68. format_csv_delimiter:CSV数据中的分隔符。默认状况下为:,
69. input_format_csv_unquoted_null_literal_as_null:对于CSV输入格式,启用或禁用将未引用的NULL解析为文字。
70. output_format_csv_crlf_end_of_line:在CSV中使用DOS / Windows样式行分隔符(CRLF),而不是Unix样式(LF)。
71. output_format_tsv_crlf_end_of_line:在TSV中使用DOC / Windows样式行分隔符(CRLF),而不是Unix样式(LF)。
72. insert_quorum:启用仲裁写入,写入多少个副本才算成功。默认0。insert_quorum <2,则禁用仲裁写入;insert_quorum> = 2,则启用仲裁写入。
当在insert_quorum_timeout期间将数据正确写入副本的insert_quorum时,INSERT才能成功。若是因为任何缘由而成功写入的副本数量未达到insert_quorum,则认为写入失败,并将从已写入数据的全部副本中删除插入的块。读取从insert_quorum写入的数据时,可使用select_sequential_consistency选项。查询时可用副本的数量小于insert_quorum则会报错。
73. insert_quorum_timeout:仲裁写入超时(秒),默认60s。 若是超时时间内没有写完,则将生成一个异常,而且客户端必须重复查询才能将同一块写入相同或任何其余副本。
74. select_sequential_consistency:启用或禁用SELECT查询的顺序一致性。默认0,可选0、1。启用顺序一致性后,ClickHouse容许客户端仅对insert_quorum执行的INSERT查询中的数据的副本执行SELECT查询。 若是客户端引用部分副本,则ClickHouse将生成一个异常。 SELECT查询将不包括还没有写入副本仲裁的数据。
75. max_network_bytes:限制执行查询时经过网络接收或传输的数据量(以字节为单位)。此设置适用于每一个单独的查询。默认0,不限制。可选值:0、正整数。
76. max_network_bandwidth_for_user:限制数据在网络上每秒交换的速度(字节),用于单个用户执行的全部同时运行的查询。默认值:0,不限制。可选值:0、正整数。
77. max_network_bandwidth_for_all_users:限制数据在网络上每秒交换的速度(字节),用于服务器上全部同时运行的查询。默认值:0,不限制。可选值:0、正整数。
78. allow_experimental_cross_to_join_conversion:将连表的,语法重写成join on、using语法,若是设置值为0,则不会使用使用逗号的语法来处理查询,而且会引起异常。默认1。可选0、1。能够看join的使用
79. count_distinct_implementation:指定应使用哪一个uniq *函数来执行COUNT(DISTINCT ...),默认uniqExact。可选值:uniq、uniqCombined、uniqCombined64、uniqHLL12、uniqExact
80. skip_unavailable_shards:启用或禁用跳过不可用的分片。若是分片的全部副本都不可用,则认为分片不可用。默认0,禁止跳过,可选值0、1。
81. optimize_skip_unused_shards:对在PREWHERE / WHERE中具备分片键条件的SELECT查询启用或禁用跳过未使用的分片(假设数据是经过分片键分发的,不然不执行任何操做)。默认0,禁止跳过。
82. force_optimize_skip_unused_shards:若是启用了optimize_skip_unused_shards(0),而且没法跳过未使用的分片。若是没法跳过而且启用了设置,则将引起异常。默认0,禁用。可选值:0:禁用(不抛出)1:仅在表具备分片键时才禁用查询执行 2:禁用查询执行,不管为表定义了分片键如何
83. optimize_throw_if_noop:若是OPTIMIZE查询未执行合并,则启用或禁用引起异常。默认0,可选0:禁用引起异常;1:启用引起异常
默认状况下,即便未执行任何操做,OPTIMIZE也会成功返回。使用此设置能够区分这些状况,并在异常消息中获取缘由。
84. distributed_replica_error_half_life:控制将分布式表中的错误快速归零的方式。若是某个副本在一段时间内不可用,累积了5个错误,而且distributed_replica_error_half_life设置为1秒,则该副本在上次错误以后3秒钟被视为正常。默认60s。
85. distributed_replica_error_cap:每一个副本的错误计数都以该值为上限,从而防止单个副本累积太多错误,默认1000。
86. distributed_directory_monitor_sleep_time_ms:分布式表引擎发送数据的基本间隔。发生错误时,实际间隔将呈指数增加,默认100毫秒。
87. distributed_directory_monitor_max_sleep_time_ms:分布式表引擎发送数据的最大间隔。限制在distributed_directory_monitor_sleep_time_ms设置的间隔的指数增加。默认值:30000毫秒(30秒)。
88. distributed_directory_monitor_batch_inserts:启用/禁用批量发送插入的数据。启用批发送功能后,分布式表引擎将尝试经过一项操做发送多个插入数据文件,而不是分别发送。批发送经过更好地利用服务器和网络资源来提升群集性能。默认0,禁用,可选0、1。
89. os_thread_priority:为执行查询的线程设置优先级(nice)。当选择在每一个可用CPU内核上运行的下一个线程时,OS调度程序会考虑此优先级。默认值:0,可选值:能够在[-20,19]范围内设置值。较低的值表示较高的优先级。
90. query_profiler_real_time_period_ns:查询事件探查器的实际时钟计时器的周期。实时时钟计时器计算挂钟时间。单位纳秒,默认值:1000000000纳秒(每秒),可选值:
91. allow_introspection_functions:启用禁用内省功能以进行查询概要分析。默认值:0,可选0(禁用)、1(启用)
92. input_format_parallel_parsing:启用数据格式的保留顺序并行解析。 仅支持TSV,TKSV,CSV和JSONEachRow格式。
93. min_chunk_bytes_for_parallel_parsing:每一个线程将并行解析的最小块大小(以字节为单位),默认1M。
94. output_format_avro_codec:设置用于输出Avro文件的压缩编解码器。默认snappy或deflate,可选值:
95. output_format_avro_sync_interval:设置输出Avro文件的同步标记之间的最小数据大小(以字节为单位)。默认32K,可选值:32(32字节)~ 1073741824(1 GiB)
96. format_avro_schema_registry_url:设置Confluent Schema注册表URL以与AvroConfluent格式一块儿使用,默认空。
关于配置文件和参数已经介绍完毕,主要是经过 Server settings 和 Settings 来进行说明的,在须要调整的时候能够根据各个要求进行修改(修改配置文件& set settings = '')。后面再测试ClickHouse的时候会持续更新。