clickhouse config.xml

1. builtin_dictionaries_reload_interval:重新加載內置詞典的時間間隔(以秒爲單位),默認3600。可以在不重新啓動服務器的情況下“即時”修改詞典。

<builtin_dictionaries_reload_interval>3600</builtin_dictionaries_reload_interval>

2. compression:MergeTree引擎表的數據壓縮設置。配置模板如:

<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:默認數據庫。

<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命令相同。

<>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>

可以看複製ZooKeeper說明。

44. use_minimalistic_part_header_in_zookeeper:ZooKeeper中數據部分頭的存儲方法。1:打開;0:關閉。默認0

僅適用於MergeTree系列。可以指定:

  • 位於config.xml文件的merge_tree部分,對服務器上的所有表使用該設置。 可以隨時更改設置。 當設置更改時,現有表將更改其行爲。
  • 對於每個單獨的表,創建表時,請指定相應的引擎設置。 即使全局設置發生更改,具有此設置的現有表的行爲也不會更改。

如果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秒。

Settings:使用set設置(system.settings)

1. distributed_product_mode:更改分佈式子查詢的行爲。當查詢包含分佈式表的乘積,即當分佈式表的查詢包含分佈式表的非GLOBAL子查詢時,ClickHouse將應用此設置。

限制條件:

  • 僅適用於IN和JOIN子查詢。
  • 僅當FROM部分使用包含多個分片的分佈式表時。
  • 如果子查詢涉及一個包含多個分片的分佈式表。
  • 不用於遠程功能。

可設置的值:

  • deny:默認值。 禁止使用這些類型的子查詢(返回“ Double-distributed in / JOIN子查詢被拒絕”異常)。
  • local:將子查詢中的數據庫和表替換爲目標服務器(碎片)的本地查詢,而保留普通的IN / JOIN。
  • global:用GLOBAL IN / GLOBAL JOIN替換IN / JOIN查詢。
  • allow:允許使用這些類型的子查詢。

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:

  • 0:必須提供格式化的數據,請參閱格式部分。
  • 1:將SQL表達式用作值,但是這種方式的數據插入速度要慢得多。
    如:插入具有不同設置的DateTime類型值。
    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。

  • basic:lickHouse只能解析基本的YYYY-MM-DD HH:MM:SS格式。 例如,“ 2019-08-20 10:18:56”。
  • best_effort:啓用擴展解析,可以解析基本的YYYY-MM-DD HH:MM:SS格式以及所有ISO 8601日期和時間格式,如:'2018-06-08T01:02:03.000Z'。

可以看DateTime數據類型和日期函數

25. join_default_strictness:設置JOIN子句的默認嚴格性,默認all。可選值:

  • ALL:如果右表具有多個匹配的行,ClickHouse將從匹配的行創建笛卡爾積。 這是標準SQL的正常JOIN行爲。
  • ANY:如果右表具有多個匹配的行,則僅連接找到的第一個行。 如果右表只有一個匹配行,則ANY和ALL的結果相同。
  • ASOF:用於加入不確定匹配的序列。
  • 空字符串:如果在查詢中未指定ALL或ANY,則ClickHouse會引發異常。

26. join_any_take_last_row:嚴格更改聯接操作的行爲,僅適用於具有Join引擎表的JOIN操作。默認值0,

  • 0:如果右表具有多個匹配行,則僅連接找到的第一個。
  • 1:如果右表具有多個匹配行,則僅連接找到的最後一個。

可以看JOIN子句聯接表引擎

27. join_use_nulls:設置JOIN行爲的類型,合併表時可能會出現空單元格,ClickHouse根據此設置以不同的方式填充。默認0,可選:

  • 0:空單元格用相應字段類型的默認值填充。
  • 1:JOIN的行爲與標準SQL相同。 相應字段的類型將轉換爲Nullable,並且將空單元格填充爲NULL。

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接口的IN​​SERT,服務器解析數據格式並形成指定大小的塊。默認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進行預聚合。

  • 如在服務器上運行少於一個SELECT查詢,則將此參數設置爲稍小於處理器核心實際數量的值。

對於由於LIMIT而快速完成的查詢,可以設置較低的“max_threads”。

  • 如如果每個塊中都有必要的條目數,並且max_threads = 8,則將檢索8個塊,儘管僅讀取一個塊就足夠了。

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參數:

  • 0(默認值):引發異常(如果已經在運行具有相同“ query_id”的查詢,則不允許運行查詢)。
  • 1 :取消舊查詢,然後開始運行新查詢。

59. stream_flush_interval_ms:在超時或線程生成max_insert_block_size行的情況下,適用於具有流式傳輸的表,默認7500。值越小,將數據刷新到表中的頻率越高。將該值設置得太低會導致性能下降。

60. load_balancing:指定用於分佈式查詢處理的副本選擇算法。默認:Random。

  • Random (by default):

    計算每個副本的錯誤數量。 查詢發送到最少的錯誤副本,如果存在多個,則發送到其中任何一個。
    缺點:不考慮服務器的鄰近性; 如果副本具有不同的數據,則可能獲得不同的數據。

  • Nearest hostname:
    計算每個副本的錯誤數量。每隔5分鐘,錯誤數量將被2整除。如果有一個副本的錯誤數量最少(即最近在其他副本上發生的錯誤),則將查詢發送給它。如果有多個副本且錯誤的最小數量相同,則查詢將以與配置文件中的服務器主機名最相似的主機名發送到副本。因此,如果存在等效的副本,則首選名稱最接近的副本。
  • In order:
    具有相同數量錯誤的副本將以與配置中指定的順序相同的順序進行訪問,
  • First or random:
    選擇集合中的第一個副本,如果第一個副本不可用,則選擇一個隨機副本。 它在交叉複製拓撲設置中有效,但在其他配置中無效。
    first_or_random算法解決了in_order算法的問題。 使用in_order,如果一個副本出現故障,則下一個副本負載將加倍,而其餘副本則處理通常的流量。 使用first_or_random算法時,負載在仍然可用的副本之間平均分配。

61. prefer_localhost_replica:啓用或則禁用處理分佈式查詢時使用localhost副本。默認1,可選值0、1:

  • 1:ClickHouse始終向本地副本發送查詢(如果存在)。
  • 0:ClickHouse使用load_balancing設置指定的平衡策略。

注意:如果使用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。可選值:uniquniqCombineduniqCombined64uniqHLL12uniqExact

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納秒(每秒),可選值:

  • 10000000(每秒100次)納秒或更少的單個查詢。
  • 1000000000(每秒一次)用於羣集範圍內的性能分析。
  • 0 用於關閉計時器。

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,可選值:

  • null:不壓縮
  • deflate:使用Deflate壓縮(zlib)
  • snappy:使用Snappy壓縮

95. output_format_avro_sync_interval:設置輸出Avro文件的同步標記之間的最小數據大小(以字節爲單位)。默認32K,可選值:32(32字節)~ 1073741824(1 GiB)

96. format_avro_schema_registry_url:設置Confluent Schema註冊表URL以與AvroConfluent格式一起使用,默認空。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章