暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ClickHouse 之 Server Settings

ClickHouse周边 2021-05-09
5797
从clickhouse的官网中来看,ClickHouse的配置参数主要分了两大方面,一个是服务器配置参数(Server Settings),另一个是常规配置参数(setttings)。
1. Server settings官方文档
https://clickhouse.tech/docs/en/operations/server-configuration-parameters/settings/
---> config.xml
2. Settings 官方文档
https://clickhouse.tech/docs/en/operations/settings/settings/
---> users.xml
详情请点击:ClickHouse的用户配置详解及SQL化用户配置
本篇主要介绍 Server settings :
ClickHouse支持多文件配置管理。默认配置文件是/etc/clickhouse-server/config.xml。其他子文件也可以在/etc/clickhouse-server/config.d、conf.d目录中以*.xml和*.conf文件覆盖各个设置。所有配置文件均应为XML格式。而且它们通常具有相同的根元素。另外,还可以为这些配置文件的元素指定replace或remove属性,如果均未指定,它将以递归方式合并元素的内容,从而替换重复子元素的值。如果指定了replace,将用指定的元素替换整个元素。如果指定了remove,则删除该元素。

config.xml文件调用users.xml配置,为profiles和quotas指定单独的配置。此配置的相对路径在'users_config'元素中设置。默认情况下,它是users.xml。如果省略users_config,则直接在config.xml中指定。

    vim etc/clickhouse-server/config.xml

    <users_config>users.xmlusers_config>

    • Server settings:在config.xml中配置部分

    1.logger元素:日志记录设置。选项组里的设置有:level、log、errorlog、size、count
      <logger>
      <level>tracelevel> --日志记录级别。可接受的值:trace, debug, information, warning, error
      <log>/var/log/clickhouse-server/clickhouse-server.loglog> --日志文件,根据级别包含所有条目
      <errorlog>/var/log/clickhouse-server/clickhouse-server.err.logerrorlog> -- 错误日志文件
      <size>1000Msize> -- 文件的大小。适用于loganderrorlog,文件达到大小后,ClickHouse将对其进行存档并重命名,并在其位置创建一个新的日志文件
      <count>10count> -- ClickHouse存储的已归档日志文件的数量
      logger>
      还支持写入系统日志:
        <logger>
        <use_syslog>1use_syslog> -- 写入系统日志
        <syslog>
        <address>syslog.remote:10514address> -- syslogd的主机[:port]。如果省略,则使用本地守护程序
        <hostname>myhost.localhostname> -- 可选,从中发送日志的主机的名称。
        <facility>LOG_LOCAL6facility> -- syslog关键字,其大写字母带有“ LOG_”前缀:(LOG_USER,LOG_DAEMON,LOG_LOCAL3,依此类推)
        <format>syslogformat> -- 格式。可能的值:bsd和syslog
        syslog>
        logger>
        2.http_port/https_port元素:通过HTTP连接到服务器的端口。如果指定了https_port,则必须配置openSSL。如果指定了http_port,则即使已设置openSSL配置,也会将其忽略。
          <http_port>8123http_port>

          <https_port>8443https_port>
          <openSSL>
          <server>
          <certificateFile>/etc/clickhouse-server/server.crtcertificateFile>
          <privateKeyFile>/etc/clickhouse-server/server.keyprivateKeyFile>
          <dhParamsFile>/etc/clickhouse-server/dhparam.pemdhParamsFile>
          <verificationMode>noneverificationMode>
          <loadDefaultCAFile>trueloadDefaultCAFile>
          <cacheSessions>truecacheSessions>
          <disableProtocols>sslv2,sslv3disableProtocols>
          <preferServerCiphers>truepreferServerCiphers>
          server>
          <client>
          <loadDefaultCAFile>trueloadDefaultCAFile>
          <cacheSessions>truecacheSessions>
          <disableProtocols>sslv2,sslv3disableProtocols>
          <preferServerCiphers>truepreferServerCiphers>
          <invalidCertificateHandler>
          <name>RejectCertificateHandlername>
          invalidCertificateHandler>
          client>
          openSSL>
          3.tcp_port元素:通过TCP协议与客户端进行通信的端口,即ClickHouse端口。
            <tcp_port>9000tcp_port>
            4.. tcp_port_secure元素:通过TCP协议与客户端进行通信的端口,即ClickHouse端口。 与OpenSSL设置一起使用。
              <tcp_port_secure> 9440 tcp_port_secure> 
              5. mysql_port元素:通过MySQL协议与客户端通信的端口。
                <mysql_port>9004mysql_port>
                6.interserver_http_port元素:在ClickHouse服务器之间交换数据的端口。
                  <interserver_http_port>9009interserver_http_port>
                  7. interserver_http_host元素:其他服务器可以用来访问该服务器的主机名。如果省略,则其定义方法与hostname -f命令相同。
                    <interserver_http_host>example.yandex.ruinterserver_http_host>
                    8. interserver_http_credentials元素:在使用Replicated *引擎进行复制期间进行身份验证的用户名和密码。这些凭据仅用于副本之间的通信,与ClickHouse客户端的凭据无关。服务器正在检查这些凭据以连接副本,并在连接到其他副本时使用相同的凭据。因此,对于群集中的所有副本,应将这些凭据设置为相同。默认不使用身份验证。
                      <interserver_http_credentials>
                      <user>adminuser>
                      <password>222password>
                      interserver_http_credentials>
                      9.listen_host元素:限制来源主机的请求, 如果要服务器回答所有请求,请指定“::” :
                        <listen_host> :: 1 listen_host>
                        <listen_host> 127.0.0.1 listen_host>
                        10.max_connections元素:最大连接数。
                          <max_connections>4096max_connections>
                          11.keep_alive_timeout元素:ClickHouse在关闭连接之前等待传入请求的秒数。默认为3秒。
                            <keep_alive_timeout>3keep_alive_timeout>

                            12. max_concurrent_queries元素:同时处理的最大请求数。

                              <max_concurrent_queries>100max_concurrent_queries>

                              13.max_server_memory_usage元素:限制ClickHouse服务器的总RAM使用量。取值:正整数、0(自动),默认值:0。

                              附加信息:默认max_server_memory_usage值计算为memory_amount * max_server_memory_usage_to_ram_ratio。

                                <max_server_memory_usage>0max_server_memory_usage>
                                14.max_thread_pool_size元素:最大的线程池大小
                                  <max_thread_pool_size>10000max_thread_pool_size>

                                  15.max_server_memory_usage_to_ram_ratio 元素:定义可用于Clickhouse服务器的总物理RAM量的一部分。如果服务器尝试利用更多资源,则会将内存减少到适当的数量。可能的值:正双、0-Clickhouse服务器可以使用所有可用的RAM,默认值:0。

                                  在具有低RAM和交换max_server_memory_usage_to_ram_ratio容量的主机上,您可能需要设置大于1的值。

                                    <max_server_memory_usage_to_ram_ratio>0.9max_server_memory_usage_to_ram_ratio>
                                    16.max_open_files元素:打开最大的文件数,默认最大值
                                      <max_open_files> 262144 max_open_files>
                                      17.uncompressed_cache_size元素:表引擎从MergeTree使用的未压缩数据的缓存大小(以字节为单位,8G)。服务器有一个共享缓存,内存是按需分配的。如果启用,则使用高速缓存。在个别情况下,未压缩的缓存对于非常短的查询是有利的。
                                        <uncompressed_cache_size>8589934592uncompressed_cache_size>
                                        18.mark_cache_size元素:标记缓存的大小,用于MergeTree系列的表中。 以字节为单位,共享服务器的缓存,并根据需要分配内存。缓存大小必须至少为5368709120(5G)。
                                          <mark_cache_size>5368709120mark_cache_size> 
                                          19.path元素:数据的目录路径
                                                
                                            <path>/var/lib/clickhouse/path>
                                            20.user_files_path元素:包含用户文件的目录,在表函数file()中使用。
                                              /var/lib/clickhouse/user_files/user_files_path>
                                              21.users_config元素:用户配置文件,可以配置用户访问、profiles、quota、查询等级等。
                                                <users_config>users.xmlusers_config>
                                                21.default_profile元素:默认设置配置文件,在参数user_config中指定。
                                                  <default_profile>defaultdefault_profile>
                                                  22.default_database元素:默认数据库。
                                                    <default_database>defaultdefault_database>
                                                    23.include_from元素:带替换文件的路径,例如搭建集群是的配置文件
                                                           
                                                      <include_from>/etc/metrica.xmlinclude_from>
                                                      24.builtin_dictionaries_reload_interval元素:重新加载内置词典的时间间隔(以秒为单位),默认3600。可以在不重新启动服务器的情况下“即时”修改词典。
                                                        3600
                                                        25.graphite元素:将数据发送到Graphite,它是一款企业级监控。
                                                          <graphite>
                                                          <host>localhosthost> -- Graphite服务器
                                                          <port>42000port> -- Graphite服务器上的端口
                                                          <timeout>0.1timeout> -- 发送超时时间,以秒为单位
                                                          <interval>60interval> -- 发送间隔,以秒为单位
                                                          <root_path>one_minroot_path> -- 密钥的前缀
                                                          <metrics>truemetrics> -- 从system.metrics表发送数据
                                                          <events>trueevents> -- 从system.events表发送在该时间段内累积的增量数据
                                                          <events_cumulative>falseevents_cumulative> -- 从system.events表发送累积数据
                                                          <asynchronous_metrics>trueasynchronous_metrics> -- 从system.asynchronous_metrics表发送数据
                                                          graphite>
                                                          可以配置多个子句。例如,您可以使用它以不同的时间间隔发送不同的数据。
                                                          26.query_log元素:通过log_queries = 1设置,记录接收到的查询。查询记录在system.query_log表中,而不记录在单独的文件中。可以在table参数中更改表的名称。
                                                            <query_log>
                                                            <database>systemdatabase> --库名
                                                            <table>query_logtable> --表名
                                                            <partition_by>toMonday(event_date)partition_by> --自定义分区键
                                                            <flush_interval_milliseconds>7500flush_interval_milliseconds> --将数据从内存中的缓冲区刷新到表的时间间隔
                                                            query_log>
                                                            如果该表不存在,ClickHouse将创建它。如果在更新ClickHouse服务器时查询日志的结构发生了更改,则具有旧结构的表将重命名,并自动创建一个新表。
                                                            27.trace_log元素:trace_log系统表操作的设置。
                                                              <trace_log>
                                                              <database>systemdatabase> --库名
                                                              <table>trace_logtable> --表名
                                                              <partition_by>toYYYYMM(event_date)partition_by> ----自定义分区键
                                                              <flush_interval_milliseconds>7500flush_interval_milliseconds> ----将数据从内存中的缓冲区刷新到表的时间间隔
                                                              trace_log>
                                                              28.query_thread_log元素:使用log_query_threads = 1设置,记录接收到查询的线程。查询记录在system.query_thread_log表中,而不记录在单独的文件中。您可以在table参数中更改表的名称。
                                                                <query_thread_log>
                                                                <database>systemdatabase> --库名
                                                                <table>query_thread_logtable> --表名
                                                                <partition_by>toMonday(event_date)partition_by> --自定义分区键
                                                                <flush_interval_milliseconds>7500flush_interval_milliseconds> --将数据从内存中的缓冲区刷新到表的时间间隔
                                                                query_thread_log>
                                                                如果该表不存在,ClickHouse将创建它。如果在更新ClickHouse服务器时查询线程日志的结构发生了更改,则具有旧结构的表将重命名,并自动创建一个新表。
                                                                29.part_log元素:记录与MergeTree关联的事件。如添加或合并数据。可以使用日志来模拟合并算法并比较其特征。查询记录在system.part_log表中,而不记录在单独的文件中。您可以在table参数中配置该表的名称()。使用以下参数来配置日志记录:
                                                                  <part_log>
                                                                  <database>systemdatabase> --库名
                                                                  <table>part_logtable> --表名
                                                                  <partition_by>toMonday(event_date)partition_by> --自定义分区键
                                                                  <flush_interval_milliseconds>7500flush_interval_milliseconds> --将数据从内存中的缓冲区刷新到表的时间间隔,单位毫秒。
                                                                  part_log>
                                                                  30.dictionaries_config元素:外部词典的配置文件的路径,在config配置文件中指定。路径可以包含通配符*和?的绝对或则相对路径。
                                                                    <dictionaries_config>*_dictionary.xmldictionaries_config>
                                                                    31.compression元素:MergeTree引擎表的数据压缩设置。配置模板如:
                                                                      <compression incl="clickhouse_compression">  --指定incl
                                                                      <case>
                                                                      <min_part_size>10000000000min_part_size> --数据部分的最小大小
                                                                      <min_part_size_ratio>0.01min_part_size_ratio> --数据部分大小与表大小的比率
                                                                      <method>zstdmethod> --压缩算法,zstd和lz4
                                                                      case>
                                                                      compression>
                                                                      可以配置多个。如果数据部分与条件集匹配,使用指定的压缩方法;如果数据部分匹配多个条件集,将使用第一个匹配的条件集;如果数据部分不满足任何条件,则使用lz4压缩。
                                                                      32.max_table_size_to_drop元素:删除表的限制,默认50G,0表示不限制。如果MergeTree表的大小超过max_table_size_to_drop(以字节为单位),则无法使用DROP查询将其删除。如果仍然需要删除表而不重新启动ClickHouse服务器,请创建/flags/force_drop_table文件并运行DROP查询。
                                                                        <max_table_size_to_drop>0max_table_size_to_drop>
                                                                        • Server settings:使用set设置(system.settings)

                                                                        1. log_queries:设置发送到ClickHouse的查询将根据query_log服务器配置参数中的规则记录。

                                                                        在system.settings中以log_queries为例:

                                                                          set log_queries=1;
                                                                          Ok.
                                                                          0 rows in set. Elapsed: 0.001 sec.

                                                                          select * from system.settings where name ='log_queries'\G

                                                                          Row 1:
                                                                          ──────
                                                                          name: log_queries
                                                                          value: 1
                                                                          changed: 1
                                                                          description: Log requests and write the log to the system table.
                                                                          min: ᴺᵁᴸᴸ
                                                                          max: ᴺᵁᴸᴸ
                                                                          readonly: 0
                                                                          type: Bool

                                                                          1 rows in set. Elapsed: 0.002 sec.
                                                                          2. log_query_threads:设置运行的查询的线程将根据query_thread_log服务器配置参数中的规则记录。
                                                                          3.force_index_by_date:如果无法按日期使用索引,则禁用查询执行,与MergeTree系列中的表一起使用。默认0,可选0、1。 如果force_index_by_date = 1,检查查询是否具有可用于限制数据范围的日期键条件。 如果没有合适的条件,它将引发异常。 但不会检查条件是否减少了要读取的数据量。 如条件Date!='2000-01-01'是可以接受的,即使它与表中的所有数据匹配(即,运行查询需要完全扫描)。
                                                                          4.force_primary_key:如果无法通过主键建立索引,则禁用查询执行,与MergeTree系列中的表一起使用。默认0,可选0、1。
                                                                          如果force_primary_key = 1,检查查询是否具有可用于限制数据范围的主键条件。 如果没有合适的条件,它将引发异常。 但不会检查条件是否减少了要读取的数据量。
                                                                          5.max_block_size:在ClickHouse中,数据由块(列部分的集合)处理。 处理每个块都有开销。 对于要从表中加载的块大小(以行数为单位),建议使用max_block_size设置。 目的是避免在多个线程中提取大量列时避免占用过多内存,并至少保留一些缓存局部性。默认:65,536(行数)。并非总是从表中加载max_block_size大小的块。 如果很明显需要检索较少的数据,则处理较小的块。
                                                                          6. preferred_block_size_bytes:用于与max_block_size相同的目的,但是它通过将其调整为适合块中的行数来设置建议的块大小(以字节为单位),但块大小不能超过max_block_size行。默认值:1,000,000。 仅在从MergeTree引擎读取时有效。
                                                                          7. merge_tree_min_rows_for_concurrent_read:从MergeTree引擎表的文件中读取的行数超过merge_tree_min_rows_for_concurrent_read,则ClickHouse尝试在多个线程上从该文件执行并发读取。默认163840,可选任何正整数。
                                                                          8. merge_tree_min_bytes_for_concurrent_read:从MergeTree引擎表的文件读取的字节数超过了merge_tree_min_bytes_for_concurrent_read,则ClickHouse会尝试在多个线程中同时读取该文件。默认251658240,可选任何正整数。
                                                                          9. merge_tree_min_rows_for_seek:在一个文件中读取的两个数据块之间的距离小于merge_tree_min_rows_for_seek行,则ClickHouse不会搜索文件,而是顺序读取数据。默认0,可选任何正整数。
                                                                          10. merge_tree_min_bytes_for_seek:在一个文件中读取的两个数据块之间的距离小于merge_tree_min_bytes_for_seek字节,则ClickHouse顺序读取包含两个块的文件的范围,从而避免了额外的查找。默认0,可选任何正整数。
                                                                          11. merge_tree_coarse_index_granularity:搜索数据时,ClickHouse检查索引文件中的数据标记。如果ClickHouse发现所需键在某个范围内,则会将该范围划分为merge_tree_coarse_index_granularity子范围,然后在该范围内递归搜索所需键。默认8,可选任何正偶数整数。
                                                                          12. merge_tree_max_rows_to_use_cache:在一个查询中读取的行数超过merge_tree_max_rows_to_use_cache行,则它不使用未压缩块的缓存,使用压缩块的高速缓存存储为查询提取的数据。 ClickHouse使用此缓存来加快对重复的小型查询的响应。此设置可保护高速缓存免受读取大量数据的查询的破坏。 uncompressed_cache_size服务器设置定义未压缩块的缓存大小。默认1048576,可选任何正整数。
                                                                          13. merge_tree_max_bytes_to_use_cache:在一个查询中读取的数据多于merge_tree_max_bytes_to_use_cache字节,则它不使用未压缩块的缓存,同上。默认2013265920,可选任何正整数。
                                                                          14. min_bytes_to_use_direct_io:使用直接I/O访问存储磁盘所需的最小数据量。如果要读取的所有数据的总存储量超过min_bytes_to_use_direct_io字节,则ClickHouse会使用O_DIRECT选项从存储磁盘读取数据。默认0,禁用,可选0、正整数。
                                                                          15.max_insert_block_size:插入表中要形成的块的大小。此设置仅在服务器构成块的情况下适用。对通过HTTP接口的INSERT,服务器解析数据格式并形成指定大小的块。默认1048576。默认值略大于max_block_size,这样做是因为某些表引擎(* MergeTree)在磁盘上为每个插入的块形成了一个数据部分,这是一个相当大的实体。类似地,* MergeTree表在插入期间对数据进行排序,并且足够大的块大小允许对RAM中的更多数据进行排序。
                                                                          16.max_threads:查询处理线程的最大数量,不包括用于从远程服务器检索数据的线程(请参见“ max_distributed_connections”参数),适用于并行执行查询处理管道相同阶段的线程。默认值:物理CPU内核数。max_threads值越小,消耗的内存越少。
                                                                          当从表中读取时,如果可以使用函数求值表达式,使用WHERE进行过滤并使用至少“max_threads”个线程数并行地为GROUP BY进行预聚合。
                                                                          • 如在服务器上运行少于一个SELECT查询,则将此参数设置为稍小于处理器核心实际数量的值。
                                                                          对于由于LIMIT而快速完成的查询,可以设置较低的“max_threads”。
                                                                          • 如如果每个块中都有必要的条目数,并且max_threads = 8,则将检索8个块,尽管仅读取一个块就足够了。
                                                                          17. max_insert_threads:执行INSERT SELECT查询的最大线程数。默认值0,可选0、正整数。较高的值将导致较高的内存使用率。并行INSERT SELECT仅在SELECT部分并行执行时才有效。
                                                                          18. max_compress_block_size:压缩写入表之前,未压缩数据块的最大大小,默认1048576(1 MiB)。如果减小大小,则由于高速缓存局部性,压缩率将降低,压缩和解压缩速度会略有增加,并且内存消耗也会减少。通常没有任何理由更改此设置。不要将压缩块(由字节组成的内存块)与查询处理块(表中的一组行)混淆。
                                                                          19. min_compress_block_size:对于MergeTree表为了减少处理查询时的延迟,如果块的大小至少为min_compress_block_size,则在写入下一个标记时将压缩该块。默认值为65536。如果未压缩的数据小于max_compress_block_size,则块的实际大小不小于此值且不小于一个标记的数据量,通常没有任何理由更改此设置。
                                                                          20. max_query_size:可以带到RAM以便与SQL解析器一起解析的查询的最大部分,默认256K。
                                                                          21. Interactive_delay:检查请求执行是否已取消并发送进度的时间间隔,以微秒为单位。默认值:100000(检查取消并每秒发送10次进度)。
                                                                          22. connect_timeout,receive_timeout,send_timeout:用于与客户端通信的套接字上的超时(以秒为单位),默认为10,300,300。
                                                                          关于Server Settings大致先说明到这里,后续会持续更新。

                                                                          上一篇:ClickHouse优化典藏

                                                                          近期文章推荐:

                                                                          CllickHouse 部署架构和国内大厂应用实践

                                                                          MergeTree的Merge和Mutation机制

                                                                          MergeTree的存储结构和查询加速

                                                                          更多精彩内容欢迎关注微信公众号

                                                                          最后修改时间:2021-05-09 09:24:57
                                                                          文章转载自 ClickHouse周边,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                                                                          评论