查询级会话设置
概述
有多种方法可以使用特定设置来运行语句。设置是分层配置的,每个后续层会重新定义先前的设置值。
优先级顺序
定义设置的优先级顺序如下:
-
将设置直接应用于用户,或在设置配置文件中
- SQL(推荐)
- 将一个或多个 XML 或 YAML 文件添加到
/etc/clickhouse-server/users.d
-
会话设置
- 从 ClickHouse Cloud SQL 控制台或在交互模式下使用
clickhouse client
发送SET setting=value
。同样,您可以在 HTTP 协议中使用 ClickHouse 会话。为此,您需要指定session_id
HTTP 参数。
- 从 ClickHouse Cloud SQL 控制台或在交互模式下使用
-
查询设置
- 在非交互模式下启动
clickhouse client
时,设置启动参数--setting=value
。 - 使用 HTTP API 时,传递 CGI 参数(
URL?setting_1=value&setting_2=value...
)。 - 在 SELECT 查询的 SETTINGS 子句中定义设置。设置值仅适用于该查询,查询执行后恢复为默认值或先前值。
- 在非交互模式下启动
将设置恢复为默认值
如果您更改了设置并希望将其恢复为默认值,请将值设置为 DEFAULT
。语法如下:
例如,async_insert
的默认值为 0
。假设您将其值更改为 1
:
响应为:
以下命令将其值重置为 0:
设置现在已恢复为默认值:
自定义设置
除了常见的 settings 之外,用户可以定义自定义设置。
自定义设置名称必须以预定义前缀之一开头。这些前缀的列表必须在服务器配置文件中的 custom_settings_prefixes 参数中声明。
要定义自定义设置,请使用 SET
命令:
要获取自定义设置的当前值,请使用 getSetting()
函数:
示例
这些示例均将 async_insert
设置的值设置为 1
,并展示如何检查运行中的系统中的设置。
使用 SQL 直接将设置应用于用户
这将创建用户 ingester
,并设置 async_inset = 1
:
检查设置配置文件和分配
使用 SQL 创建设置配置文件并分配给用户
这将创建配置文件 log_ingest
,并设置 async_inset = 1
:
这将创建用户 ingester
,并将设置配置文件 log_ingest
分配给该用户:
使用 XML 创建设置配置文件和用户
检查设置配置文件和分配
将设置分配给会话
在查询期间分配设置
另请参见
- 查看 Settings 页面以获取 ClickHouse 设置的描述。
- Global server settings