users.xml配置详解
<?xml version="1.0"?>
<yandex>
<profiles>
<default>
<max_memory_usage>10000000000</max_memory_usage> <!--单个查询最大内存使用量-->
<max_memory_usage_for_user>0</max_memory_usage_for_user> <!--在单个ClickHouse服务进程中,以用户为单位进行统计,单个用户在运行查询时,限制使用的最大内存用量,默认值为0,即不做限制-->
<max_memory_usage_for_all_queries>0</max_memory_usage_for_all_queries><!--在单个ClickHouse服务进程中,所有运行的查询累加在一起,限制使用的最大内存用量,默认为0不做限制-->
<max_partitions_per_insert_block>100</max_partitions_per_insert_block><!--在单次INSERT写入的时候,限制创建的最大分区个数,默认值为100个。如果超出这个阈值数目,将会得到异常-->
<max_rows_to_group_by>0</max_rows_to_group_by> <!--在执行GROUP BY聚合查询的时候,限制去重后的聚合KEY的最大个数,默认值为0,即不做限制-->
<max_bytes_before_external_group_by>0</max_bytes_before_external_group_by> <!--在执行GROUP BY聚合查询的时候,限制使用的最大内存用量,默认值为0,即不做限制-->
<use_uncompressed_cache>0</use_uncompressed_cache> <!--是否使用未压缩块的缓存。接受0或1。默认情况下,0(禁用)-->
<load_balancing>random</load_balancing> <!--指定用于分布式查询处理的副本选择算法 默认:Random
random是默认的负载均衡算法,在ClickHouse的服务节点中,拥有一个全局计数器errors_count,当服务发生任何异常时,该计数累积加1。而random算法会选择errors_count错误数量最少的replica,如果多个replica的errors_count计数相同,则在它们之中随机选择一个
nearest_hostname可以看作random算法的变种,首先它会选择errors_count错误数量最少的replica,如果多个replica的errors_count计数相同,则选择集群配置中host名称与当前host最相似的一个
in_order同样可以看作random算法的变种,首先它会选择errors_count错误数量最少的replica,如果多个replica的errors_count计数相同,则按照集群配置中replica的定义顺序逐个选择。
first_or_random可以看作in_order算法的变种,首先它会选择errors_count错误数量最少的replica,如果多个replica的errors_count计数相同,它首先会选择集群配置中第一个定义的replica,如果该replica不可用,则进一步随机选择一个其他的replica。
-->
<log_queries> 1</log_queries> <!--用户配置开启query_log查询日志,记录了ClickHouse服务中所有已经执行的查询记录-->
<log_query_threads> 1</log_query_threads> <!--用户配置开启query_thread_log日志 记录了所有线程的执行查询的信息-->
<part_log>1</part_log> <!--用户配置开启part_log日志,记录了MergeTree系列表引擎的分区操作日志-->
<text_log>1</text_log> <!--用户配置开启text_log日志 记录了ClickHouse运行过程中产生的一系列打印日志,包括INFO、DEBUG和Trace-->
<metric_log>1</metric_log> <!--用户配置开启metric_log日志 用于将system.metrics和system.events中的数据汇聚到一起-->
</default>
<readonly> <!--读权限、写权限和设置权限 readonly:用户名-->
<readonly>0</readonly> <!--不进行任何限制(默认值)-->
<readonly>1</readonly> <!--只拥有读权限(只能执行SELECT、EXISTS、SHOW和DESCRIBE)-->
<readonly>2</readonly> <!--拥有读权限和设置权限(在读权限基础上,增加了SET查询)-->
<allow_ddl>0</allow_ddl> <!--·当取值为0时,不允许DDL查询 create drop alter-->
<allow_ddl>1</allow_ddl> <!--·当取值为1时,允许DDL查询(默认值)-->
</readonly>
</profiles>
<users> <!--用户配置-->
<default> <!--用户名-->
<password></password> <!--置登录密码 免密码登入,支持明文、SHA256加密和double_sha1加密三种形式-->
<password>123</password> <!--明文密码-->
<password_sha256_hex>a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3</password_sha256_hex> <!--SHA256加密 # echo -n 123 | openssl dgst -sha256-->
<password_double_sha1_hex>23ae809ddacaf96af0fd78ed04b6a265e05aa257</password_double_sha1_hex> <!--double_sha1加密 # echo -n 123 | openssl dgst -sha1 -binary | openssl dgst -sha1-->
<networks incl="networks" replace="replace"> <!--限制IP访问-->
<ip>::/0</ip> --允许任何地址访问
<ip>127.0.0.1</ip> --允许本地访问
<ip>192.168.107.216</ip> --允许该IP访问
</networks>
<allow_databases> <!--限制访问数据库 不指定表示不限制-->
<database>default</database> <!--库名称-->
<database>test_dictionaries</database>
</allow_databases>
<databases> <!--限制访问表的数据 不指定表示不限制-->
<database_name><!--数据库名称-->
<table_name><!--表名称-->
<filter> id < 10</filter><!--数据过滤条件-->
</table_name>
</database_name>
</databases>
<profile>default</profile>
<quota>default</quota>
</default>
</users>
<quotas> <!--限制资源被过度使用,当使用的资源数量达到阈值时,那么正在进行的操作会被自动中断-->
<default> <!--自定义名称,全局唯一-->
<interval> <!--配置时间间隔,每个时间内的资源消耗限制-->
<duration>3600</duration> <!--表示累积的时间周期,单位是秒-->
<queries>0</queries> <!--表示在周期内允许执行的查询次数,0表示不限制-->
<errors>0</errors> <!--表示在周期内允许发生异常的次数,0表示不限制-->
<result_rows>0</result_rows> <!--表示在周期内允许查询返回的结果行数,0表示不限制-->
<read_rows>0</read_rows> <!--表示在周期内在分布式查询中,允许远端节点读取的数据行数,0表示不限制。-->
<execution_time>0</execution_time> <!--表示周期内允许执行的查询时间,单位是秒,0表示不限制。-->
</interval>
</default>
</quotas>
</yandex>