Server Settings

[Edit this page](https://github.com/ClickHouse/ClickHouse/tree/master/docs/en/operations/server-configuration-parameters/settings.md)

This section contains descriptions of server settings. These are settings which
cannot be changed at the session or query level.

For more information on configuration files in ClickHouse see [""Configuration Files""](/docs/operations/configuration-files).

Other settings are described in the ""[Settings](/docs/operations/settings/overview)"" section.
Before studying the settings, we recommend reading the [Configuration files](/docs/operations/configuration-files)
section and note the use of substitutions (the `incl` and `optional` attributes).

## abort\_on\_logical\_error[​](#abort_on_logical_error "Direct link to abort_on_logical_error")

Crash the server on LOGICAL\_ERROR exceptions. Only for experts.

## access\_control\_improvements[​](#access_control_improvements "Direct link to access_control_improvements")

Settings for optional improvements in the access control system.

|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Setting Description Default|  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  | | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | | `on_cluster_queries_require_cluster_grant` Sets whether `ON CLUSTER` queries require the `CLUSTER` grant. `true`| `role_cache_expiration_time_seconds` Sets the number of seconds since last access, that a role is stored in the Role Cache. `600`| `select_from_information_schema_requires_grant` Sets whether `SELECT * FROM information_schema.<table>` requires any grants and can be executed by any user. If set to true, then this query requires `GRANT SELECT ON information_schema.<table>`, just as for ordinary tables. `true`| `select_from_system_db_requires_grant` Sets whether `SELECT * FROM system.<table>` requires any grants and can be executed by any user. If set to true then this query requires `GRANT SELECT ON system.<table>` just as for non-system tables. Exceptions: a few system tables (`tables`, `columns`, `databases`, and some constant tables like `one`, `contributors`) are still accessible for everyone; and if there is a `SHOW` privilege (e.g. `SHOW USERS`) granted then the corresponding system table (i.e. `system.users`) will be accessible. `true`| `settings_constraints_replace_previous` Sets whether a constraint in a settings profile for some setting will cancel actions of the previous constraint (defined in other profiles) for that setting, including fields which are not set by the new constraint. It also enables the `changeable_in_readonly` constraint type. `true`| `table_engines_require_grant` Sets whether creating a table with a specific table engine requires a grant. `false`| `throw_on_unmatched_row_policies` Sets whether reading from a table should throw an exception if the table has row policies, but none of them are for the current user `false`| `users_without_row_policies_can_read_rows` Sets whether users without permissive row policies can still read rows using a `SELECT` query. For example, if there are two users A and B and a row policy is defined only for A, then if this setting is true, user B will see all rows. If this setting is false, user B will see no rows. `true` | | | | | | | | | | | | | | | | | | | | | | | | | | |

Example:

```
<access_control_improvements>
    <throw_on_unmatched_row_policies>true</throw_on_unmatched_row_policies>
    <users_without_row_policies_can_read_rows>true</users_without_row_policies_can_read_rows>
    <on_cluster_queries_require_cluster_grant>true</on_cluster_queries_require_cluster_grant>
    <select_from_system_db_requires_grant>true</select_from_system_db_requires_grant>
    <select_from_information_schema_requires_grant>true</select_from_information_schema_requires_grant>
    <settings_constraints_replace_previous>true</settings_constraints_replace_previous>
    <table_engines_require_grant>false</table_engines_require_grant>
    <role_cache_expiration_time_seconds>600</role_cache_expiration_time_seconds>
</access_control_improvements>
```

## access\_control\_path[​](#access_control_path "Direct link to access_control_path")

Path to a folder where a ClickHouse server stores user and role configurations created by SQL commands.

**See also**

- [Access Control and Account Management](/docs/operations/access-rights#access-control-usage)

## aggregate\_function\_group\_array\_action\_when\_limit\_is\_reached[​](#aggregate_function_group_array_action_when_limit_is_reached "Direct link to aggregate_function_group_array_action_when_limit_is_reached")

Action to execute when max array element size is exceeded in groupArray: `throw` exception, or `discard` extra values

## aggregate\_function\_group\_array\_max\_element\_size[​](#aggregate_function_group_array_max_element_size "Direct link to aggregate_function_group_array_max_element_size")

Max array element size in bytes for groupArray function. This limit is checked at serialization and help to avoid large state size.

## allow\_experimental\_webassembly\_udf[​](#allow_experimental_webassembly_udf "Direct link to allow_experimental_webassembly_udf")

Enable experimental support for WebAssembly UDFs

## allow\_feature\_tier[​](#allow_feature_tier "Direct link to allow_feature_tier")

Controls if the user can change settings related to the different feature tiers.

- `0` - Changes to any setting are allowed (experimental, beta, production).
- `1` - Only changes to beta and production feature settings are allowed. Changes to experimental settings are rejected.
- `2` - Only changes to production settings are allowed. Changes to experimental or beta settings are rejected.

This is equivalent to setting a readonly constraint on all `EXPERIMENTAL` / `BETA` features.

Note

A value of `0` means that all settings can be changed.

## allow\_impersonate\_user[​](#allow_impersonate_user "Direct link to allow_impersonate_user")

Enable/disable the IMPERSONATE feature (EXECUTE AS target\_user). The setting is deprecated.

## allow\_implicit\_no\_password[​](#allow_implicit_no_password "Direct link to allow_implicit_no_password")

Forbids creating a user with no password unless 'IDENTIFIED WITH no\_password' is explicitly specified.

```
<allow_implicit_no_password>1</allow_implicit_no_password>
```

## allow\_no\_password[​](#allow_no_password "Direct link to allow_no_password")

Sets whether an insecure password type of no\_password is allowed or not.

```
<allow_no_password>1</allow_no_password>
```

## allow\_plaintext\_password[​](#allow_plaintext_password "Direct link to allow_plaintext_password")

Sets whether plaintext-password types (insecure) are allowed or not.

```
<allow_plaintext_password>1</allow_plaintext_password>
```

## allow\_use\_jemalloc\_memory[​](#allow_use_jemalloc_memory "Direct link to allow_use_jemalloc_memory")

Allows to use jemalloc memory.

## allowed\_disks\_for\_table\_engines[​](#allowed_disks_for_table_engines "Direct link to allowed_disks_for_table_engines")

List of disks allowed for use with Iceberg

## async\_insert\_queue\_flush\_on\_shutdown[​](#async_insert_queue_flush_on_shutdown "Direct link to async_insert_queue_flush_on_shutdown")

If true queue of asynchronous inserts is flushed on graceful shutdown

## async\_insert\_threads[​](#async_insert_threads "Direct link to async_insert_threads")

Maximum number of threads to actually parse and insert data in background. Zero means asynchronous mode is disabled

## async\_load\_databases[​](#async_load_databases "Direct link to async_load_databases")

Asynchronous loading of databases and tables.