-
Notifications
You must be signed in to change notification settings - Fork 6.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Docs organize user setting profiles #52041
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -7,90 +7,16 @@ pagination_next: en/operations/settings/settings | |
|
||
# Settings Overview | ||
|
||
There are multiple ways to define ClickHouse settings. Settings are configured in layers, and each subsequent layer redefines the previous values of a setting. | ||
There are two main groups of ClickHouse settings: | ||
|
||
The order of priority for defining a setting is: | ||
- Global server settings | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There are two main groups of ClickHouse settings:
|
||
- Query-level settings | ||
|
||
1. Settings in the `users.xml` server configuration file | ||
The main distinction between global server settings and query-level settings is that | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. The main distinction between global server settings and session / query-level settings is that global server settings must be set in configuration files while session / query-level settings can be set in configuration files or with SQL queries. |
||
global server settings must be set in configuration files while query-level settings | ||
can be set in configuration files or with SQL queries. | ||
|
||
- Set in the element `<profiles>`. | ||
Read about [global server settings](/docs/en/operations/server-configuration-parameters/settings.md) to learn more about configuring your ClickHouse server at the global server level. | ||
|
||
2. Session settings | ||
Read about [query-level settings](/docs/en/operations/settings/settings-query-level.md) to learn more about configuring your ClickHouse server at the query-level. | ||
|
||
- Send `SET setting=value` from the ClickHouse console client in interactive mode. | ||
Similarly, you can use ClickHouse sessions in the HTTP protocol. To do this, you need to specify the `session_id` HTTP parameter. | ||
|
||
3. Query settings | ||
|
||
- When starting the ClickHouse console client in non-interactive mode, set the startup parameter `--setting=value`. | ||
- When using the HTTP API, pass CGI parameters (`URL?setting_1=value&setting_2=value...`). | ||
- Define settings in the [SETTINGS](../../sql-reference/statements/select/index.md#settings-in-select-query) clause of the SELECT query. The setting value is applied only to that query and is reset to the default or previous value after the query is executed. | ||
|
||
View the [Settings](./settings.md) page for a description of the ClickHouse settings. | ||
|
||
## Converting a Setting to its Default Value | ||
|
||
If you change a setting and would like to revert it back to its default value, set the value to `DEFAULT`. The syntax looks like: | ||
|
||
```sql | ||
SET setting_name = DEFAULT | ||
``` | ||
|
||
For example, the default value of `max_insert_block_size` is 1048449. Suppose you change its value to 100000: | ||
|
||
```sql | ||
SET max_insert_block_size=100000; | ||
|
||
SELECT value FROM system.settings where name='max_insert_block_size'; | ||
``` | ||
|
||
The response is: | ||
|
||
```response | ||
┌─value──┐ | ||
│ 100000 │ | ||
└────────┘ | ||
``` | ||
|
||
The following command sets its value back to 1048449: | ||
|
||
```sql | ||
SET max_insert_block_size=DEFAULT; | ||
|
||
SELECT value FROM system.settings where name='max_insert_block_size'; | ||
``` | ||
|
||
The setting is now back to its default: | ||
|
||
```response | ||
┌─value───┐ | ||
│ 1048449 │ | ||
└─────────┘ | ||
``` | ||
|
||
|
||
## Custom Settings {#custom_settings} | ||
|
||
In addition to the common [settings](../../operations/settings/settings.md), users can define custom settings. | ||
|
||
A custom setting name must begin with one of predefined prefixes. The list of these prefixes must be declared in the [custom_settings_prefixes](../../operations/server-configuration-parameters/settings.md#custom_settings_prefixes) parameter in the server configuration file. | ||
|
||
```xml | ||
<custom_settings_prefixes>custom_</custom_settings_prefixes> | ||
``` | ||
|
||
To define a custom setting use `SET` command: | ||
|
||
```sql | ||
SET custom_a = 123; | ||
``` | ||
|
||
To get the current value of a custom setting use `getSetting()` function: | ||
|
||
```sql | ||
SELECT getSetting('custom_a'); | ||
``` | ||
|
||
**See Also** | ||
|
||
- [Server Configuration Settings](../../operations/server-configuration-parameters/settings.md) |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,217 @@ | ||
--- | ||
sidebar_label: Query-level Settings | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Let's rename this to include "session-level" settings. |
||
title: Query-level Settings | ||
slug: /en/operations/settings/query-level | ||
--- | ||
|
||
There are multiple ways to set ClickHouse query-level settings. Settings are configured in layers, and each subsequent layer redefines the previous values of a setting. | ||
|
||
The order of priority for defining a setting is: | ||
|
||
1. Applying a setting to a user directly, or within a settings profile | ||
|
||
- SQL (recommended) | ||
- adding one or more XML or YAML files to `/etc/clickhouse-server/users.d` | ||
|
||
2. Session settings | ||
|
||
- Send `SET setting=value` from the ClickHouse Cloud SQL console or | ||
`clickhouse client` in interactive mode. Similarly, you can use ClickHouse | ||
sessions in the HTTP protocol. To do this, you need to specify the | ||
`session_id` HTTP parameter. | ||
|
||
3. Query settings | ||
|
||
- When starting `clickhouse client` in non-interactive mode, set the startup | ||
parameter `--setting=value`. | ||
- When using the HTTP API, pass CGI parameters (`URL?setting_1=value&setting_2=value...`). | ||
- Define settings in the | ||
[SETTINGS](../../sql-reference/statements/select/index.md#settings-in-select-query) | ||
clause of the SELECT query. The setting value is applied only to that query | ||
and is reset to the default or previous value after the query is executed. | ||
|
||
## Examples | ||
|
||
These examples all set the value of the `async_insert` setting to `1`, and | ||
show how to examine the settings in a running system. | ||
|
||
### Using SQL to apply a setting to a user directly | ||
|
||
This creates the user `ingester` with the setting `async_inset = 1`: | ||
|
||
```sql | ||
CREATE USER ingester | ||
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3' | ||
# highlight-next-line | ||
SETTINGS async_insert = 1 | ||
``` | ||
|
||
#### Examine the settings profile and assignment | ||
|
||
```sql | ||
SHOW ACCESS | ||
``` | ||
|
||
```response | ||
┌─ACCESS─────────────────────────────────────────────────────────────────────────────┐ | ||
│ ... │ | ||
# highlight-next-line | ||
│ CREATE USER ingester IDENTIFIED WITH sha256_password SETTINGS async_insert = true │ | ||
│ ... │ | ||
└────────────────────────────────────────────────────────────────────────────────────┘ | ||
``` | ||
### Using SQL to create a settings profile and assign to a user | ||
|
||
This creates the profile `log_ingest` with the setting `async_inset = 1`: | ||
|
||
```sql | ||
CREATE | ||
SETTINGS PROFILE log_ingest SETTINGS async_insert = 1 | ||
``` | ||
|
||
This creates the user `ingester` and assigns the user the settings profile `log_ingest`: | ||
|
||
```sql | ||
CREATE USER ingester | ||
IDENTIFIED WITH sha256_hash BY '7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3' | ||
# highlight-next-line | ||
SETTINGS PROFILE log_ingest | ||
``` | ||
|
||
|
||
### Using XML to create a settings profile and user | ||
|
||
```xml title=/etc/clickhouse-server/users.d/users.xml | ||
<clickhouse> | ||
# highlight-start | ||
<profiles> | ||
<log_ingest> | ||
<async_insert>1</async_insert> | ||
</log_ingest> | ||
</profiles> | ||
# highlight-end | ||
|
||
<users> | ||
<ingester> | ||
<password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex> | ||
# highlight-start | ||
<profile>log_ingest</profile> | ||
# highlight-end | ||
</ingester> | ||
<default replace="true"> | ||
<password_sha256_hex>7e099f39b84ea79559b3e85ea046804e63725fd1f46b37f281276aae20f86dc3</password_sha256_hex> | ||
<access_management>1</access_management> | ||
<named_collection_control>1</named_collection_control> | ||
</default> | ||
</users> | ||
</clickhouse> | ||
``` | ||
|
||
#### Examine the settings profile and assignment | ||
|
||
```sql | ||
SHOW ACCESS | ||
``` | ||
|
||
```response | ||
┌─ACCESS─────────────────────────────────────────────────────────────────────────────┐ | ||
│ CREATE USER default IDENTIFIED WITH sha256_password │ | ||
# highlight-next-line | ||
│ CREATE USER ingester IDENTIFIED WITH sha256_password SETTINGS PROFILE log_ingest │ | ||
│ CREATE SETTINGS PROFILE default │ | ||
# highlight-next-line | ||
│ CREATE SETTINGS PROFILE log_ingest SETTINGS async_insert = true │ | ||
│ CREATE SETTINGS PROFILE readonly SETTINGS readonly = 1 │ | ||
│ ... │ | ||
└────────────────────────────────────────────────────────────────────────────────────┘ | ||
``` | ||
|
||
### Assign a setting to a session | ||
|
||
```sql | ||
SET async_insert =1; | ||
SELECT value FROM system.settings where name='async_insert'; | ||
``` | ||
|
||
```response | ||
┌─value──┐ | ||
│ 1 │ | ||
└────────┘ | ||
``` | ||
|
||
### Assign a setting during a query | ||
|
||
```sql | ||
INSERT INTO YourTable | ||
# highlight-next-line | ||
SETTINGS async_insert=1 | ||
VALUES (...) | ||
``` | ||
|
||
|
||
## Converting a Setting to its Default Value | ||
|
||
If you change a setting and would like to revert it back to its default value, set the value to `DEFAULT`. The syntax looks like: | ||
|
||
```sql | ||
SET setting_name = DEFAULT | ||
``` | ||
|
||
For example, the default value of `async_insert` is `0`. Suppose you change its value to `1`: | ||
|
||
```sql | ||
SET async_insert = 1; | ||
|
||
SELECT value FROM system.settings where name='async_insert'; | ||
``` | ||
|
||
The response is: | ||
|
||
```response | ||
┌─value──┐ | ||
│ 1 │ | ||
└────────┘ | ||
``` | ||
|
||
The following command sets its value back to 0: | ||
|
||
```sql | ||
SET async_insert = DEFAULT; | ||
|
||
SELECT value FROM system.settings where name='async_insert'; | ||
``` | ||
|
||
The setting is now back to its default: | ||
|
||
```response | ||
┌─value───┐ | ||
│ 0 │ | ||
└─────────┘ | ||
``` | ||
|
||
## Custom Settings {#custom_settings} | ||
|
||
In addition to the common [settings](../../operations/settings/settings.md), users can define custom settings. | ||
|
||
A custom setting name must begin with one of predefined prefixes. The list of these prefixes must be declared in the [custom_settings_prefixes](../../operations/server-configuration-parameters/settings.md#custom_settings_prefixes) parameter in the server configuration file. | ||
|
||
```xml | ||
<custom_settings_prefixes>custom_</custom_settings_prefixes> | ||
``` | ||
|
||
To define a custom setting use `SET` command: | ||
|
||
```sql | ||
SET custom_a = 123; | ||
``` | ||
|
||
To get the current value of a custom setting use `getSetting()` function: | ||
|
||
```sql | ||
SELECT getSetting('custom_a'); | ||
``` | ||
|
||
**See Also** | ||
|
||
- View the [Settings](./settings.md) page for a description of the ClickHouse settings. | ||
- [Global server settings](../../operations/server-configuration-parameters/settings.md) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is the current order of doc pages:
In my view, a more logical order would be:
Pages "Permissions for Queries" and "Memory Overcommit" look out-of-place and are ideally integrated into an existing page. But that can also be done separately.