在Clickhouse中,user.xml用来管理用户级别的参数设置以及用户信息、权限信息等,当您需要为ClickHouse集群配置用户级别参数时,可以通过修改user.xml来进行设置。本文介绍如何修改云数据库ClickHouse的user.xml配置文件中的参数。
背景介绍
ClickHouse集群包含多个参数,其默认值通常配置在config.xml和user.xml文件中。您可以通过修改这两个文件中的参数来优化集群的性能。
您可以通过控制台在线修config.xml配置文件中的参数,并重新启动集群,以使参数修改生效。详细信息,请参见配置config.xml参数。
您需要通过客户端连接云数据库ClickHouse集群,执行相关语法命令修改user.xml配置文件中的参数,但不支持通过clickhouse-client客户端修改。
前提条件
集群状态为运行中。
操作步骤
集群版本不同,修改user.xml的方式也不同。
社区兼容版
社区兼容版集群user.xml配置文件的语法以及使用示例。
语法
SET GLOBAL ON cluster default <setting_name> = <setting_value>;
参数说明
目前支持的参数清单,请参见ClickHouse参数列表。
setting_value取值是布尔类型或字符型时,需要用单引号括起来。
使用示例
示例1:设置从表加载数据时,在单个块中包含的最大行数。
SET GLOBAL ON cluster default max_block_size = 10000;
示例2:启用数据格式的顺序保留并行分析。
SET GLOBAL ON cluster default input_format_parallel_parsing = 'True';
查看参数
查看当前集群user.xml配置的参数。
SELECT * FROM system.settings;
企业版
企业版的users.xml参数设置与社区版的不同,请您根据具体需求执行对应语句。
下文所有语法中setting_name、setting_value、profile_name的值请参见Core Settings | ClickHouse Docs和Restrictions on Query Complexity | ClickHouse Docs。
设置临时生效的参数
修改当前登录所在会话的参数设置。
此种参数设置,参数信息并没有被持久化在集群中,所以当您退出集群连接后再重新连接,设置的参数就会失效。
语法
SET <setting_name> = <setting_value>;
示例
当前session下启用live view功能。
SET allow_experimental_live_view = 1;
使一个账号的参数持久化生效
为集群单个账号设置参数、用户信息以及权限信息。
执行以下SQL需要高权限账号或拥有ACCESS MANAGEMENT权限的账号。
这种参数设置方法,参数会被持久化在集群中,但当前的session并没有更新,因此需要重新连接集群,设置的参数才能在session中生效。
语法
ALTER USER user_name SETTINGS <setting_name> = <setting_value>;
示例
将名字为Nancy的账号的内存使用量限制为4GB。
ALTER USER Nancy SETTINGS max_memory_usage_for_user = 4294967296;
使全账号的参数持久化生效
为集群所有账号设置参数、用户信息以及权限信息。
执行以下SQL需要高权限账号或拥有ACCESS MANAGEMENT权限的账号。
这种参数设置方法,参数会被持久化在集群中,但当前的session并没有更新,因此需要重新连接集群,设置的参数才能在session中生效。
语法
CREATE SETTINGS PROFILE profile_name SETTINGS <setting_name> = <setting_value> TO ALL;
示例
将所有账号在执行query时的执行时长限制为10秒。
CREATE SETTINGS PROFILE max_execution_time_profile SETTINGS max_execution_time = 10 TO ALL;
查看设置的参数是否持久化
语法
SHOW SETTINGS LIKE '%<settings_name>%';
示例
查看设置的allow_experimental_live_view参数是否持久化生效。
SHOW SETTINGS LIKE '%allow_experimental_live_view%';