---
layout: docu
redirect_from:
- /docs/configuration
- /docs/configuration/
- /docs/sql/configuration
- /docs/sql/configuration/
- /docs/configuration/overview
title: Configuration
---

DuckDB has a number of configuration options that can be used to change the behavior of the system.

The configuration options can be set using either the [`SET` statement]({% link docs/stable/sql/statements/set.md %}) or the [`PRAGMA` statement]({% link docs/stable/configuration/pragmas.md %}).
They can be reset to their original values using the [`RESET` statement]({% link docs/stable/sql/statements/set.md %}#reset).

The values of configuration options can be queried via the [`current_setting()` scalar function]({% link docs/stable/sql/functions/utility.md %}) or using the [`duckdb_settings()` table function]({% link docs/stable/sql/meta/duckdb_table_functions.md %}#duckdb_settings). For example:

```sql
SELECT current_setting('memory_limit') AS memlimit;
```

Or:

```sql
SELECT value AS memlimit
FROM duckdb_settings()
WHERE name = 'memory_limit';
```

## Examples

Set the memory limit of the system to 10 GB.

```sql
SET memory_limit = '10GB';
```

Configure the system to use 1 thread.

```sql
SET threads TO 1;
```

Enable printing of a progress bar during long-running queries.

```sql
SET enable_progress_bar = true;
```

Set the default null order to `NULLS LAST`.

```sql
SET default_null_order = 'nulls_last';
```

Return the current value of a specific setting.

```sql
SELECT current_setting('threads') AS threads;
```

| threads |
|--------:|
| 10      |

Query a specific setting.

```sql
SELECT *
FROM duckdb_settings()
WHERE name = 'threads';
```

|  name   | value |                   description                   | input_type | scope  |
|---------|-------|-------------------------------------------------|------------|--------|
| threads | 1     | The number of total threads used by the system. | BIGINT     | GLOBAL |

Show a list of all available settings.

```sql
SELECT *
FROM duckdb_settings();
```

Reset the memory limit of the system back to the default.

```sql
RESET memory_limit;
```

## Secrets Manager

DuckDB has a [Secrets manager]({% link docs/stable/sql/statements/create_secret.md %}), which provides a unified user interface for secrets across all backends (e.g., AWS S3) that use them.

## Configuration Reference

<!-- This section is generated by scripts/generate_config_docs.py -->

Configuration options come with different default [scopes]({% link docs/stable/sql/statements/set.md %}#scopes): `GLOBAL` and `LOCAL`. Below is a list of all available configuration options by scope.

### Global Configuration Options

|                     Name                      |                                                                                                  Description                                                                                                  |    Type     |                    Default value                    |
|----|--------|--|---|
| `Calendar`                                    | The current calendar                                                                                                                                                                                          | `VARCHAR`   | System (locale) calendar                            |
| `TimeZone`                                    | The current time zone                                                                                                                                                                                         | `VARCHAR`   | System (locale) timezone                            |
| `access_mode`                                 | Access mode of the database (`AUTOMATIC`, `READ_ONLY` or `READ_WRITE`)                                                                                                                                        | `VARCHAR`   | `automatic`                                         |
| `allocator_background_threads`                | Whether to enable the allocator background thread.                                                                                                                                                            | `BOOLEAN`   | `false`                                             |
| `allocator_bulk_deallocation_flush_threshold` | If a bulk deallocation larger than this occurs, flush outstanding allocations.                                                                                                                                | `VARCHAR`   | `512.0 MiB`                                         |
| `allocator_flush_threshold`                   | Peak allocation threshold at which to flush the allocator after completing a task.                                                                                                                            | `VARCHAR`   | `128.0 MiB`                                         |
| `allow_community_extensions`                  | Allow to load community built extensions                                                                                                                                                                      | `BOOLEAN`   | `true`                                              |
| `allow_extensions_metadata_mismatch`          | Allow to load extensions with not compatible metadata                                                                                                                                                         | `BOOLEAN`   | `false`                                             |
| `allow_persistent_secrets`                    | Allow the creation of persistent secrets, that are stored and loaded on restarts                                                                                                                              | `BOOLEAN`   | `true`                                              |
| `allow_unredacted_secrets`                    | Allow printing unredacted secrets                                                                                                                                                                             | `BOOLEAN`   | `false`                                             |
| `allow_unsigned_extensions`                   | Allow to load extensions with invalid or missing signatures                                                                                                                                                   | `BOOLEAN`   | `false`                                             |
| `allowed_directories`                         | List of directories/prefixes that are ALWAYS allowed to be queried - even when enable_external_access is false                                                                                                | `VARCHAR[]` | `[]`                                                |
| `allowed_paths`                               | List of files that are ALWAYS allowed to be queried - even when enable_external_access is false                                                                                                               | `VARCHAR[]` | `[]`                                                |
| `arrow_large_buffer_size`                     | Whether Arrow buffers for strings, blobs, uuids and bits should be exported using large buffers                                                                                                               | `BOOLEAN`   | `false`                                             |
| `arrow_lossless_conversion`                   | Whenever a DuckDB type does not have a clear native or canonical extension match in Arrow, export the types with a duckdb.type_name extension name.                                                           | `BOOLEAN`   | `false`                                             |
| `arrow_output_list_view`                      | Whether export to Arrow format should use ListView as the physical layout for LIST columns                                                                                                                    | `BOOLEAN`   | `false`                                             |
| `autoinstall_extension_repository`            | Overrides the custom endpoint for extension installation on autoloading                                                                                                                                       | `VARCHAR`   |                                                     |
| `autoinstall_known_extensions`                | Whether known extensions are allowed to be automatically installed when a query depends on them                                                                                                               | `BOOLEAN`   | `true`                                              |
| `autoload_known_extensions`                   | Whether known extensions are allowed to be automatically loaded when a query depends on them                                                                                                                  | `BOOLEAN`   | `true`                                              |
| `binary_as_string`                            | In Parquet files, interpret binary data as a string.                                                                                                                                                          | `BOOLEAN`   |                                                     |
| `ca_cert_file`                                | Path to a custom certificate file for self-signed certificates.                                                                                                                                               | `VARCHAR`   |                                                     |
| `catalog_error_max_schemas`                   | The maximum number of schemas the system will scan for "did you mean..." style errors in the catalog                                                                                                          | `UBIGINT`   | `100`                                               |
| `checkpoint_threshold`, `wal_autocheckpoint`  | The WAL size threshold at which to automatically trigger a checkpoint (e.g., 1GB)                                                                                                                             | `VARCHAR`   | `16.0 MiB`                                          |
| `custom_extension_repository`                 | Overrides the custom endpoint for remote extension installation                                                                                                                                               | `VARCHAR`   |                                                     |
| `custom_user_agent`                           | Metadata from DuckDB callers                                                                                                                                                                                  | `VARCHAR`   |                                                     |
| `default_block_size`                          | The default block size for new duckdb database files (new as-in, they do not yet exist).                                                                                                                      | `UBIGINT`   | `262144`                                            |
| `default_collation`                           | The collation setting used when none is specified                                                                                                                                                             | `VARCHAR`   |                                                     |
| `default_null_order`, `null_order`            | NULL ordering used when none is specified (`NULLS_FIRST` or `NULLS_LAST`)                                                                                                                                     | `VARCHAR`   | `NULLS_LAST`                                        |
| `default_order`                               | The order type used when none is specified (`ASC` or `DESC`)                                                                                                                                                  | `VARCHAR`   | `ASC`                                               |
| `default_secret_storage`                      | Allows switching the default storage for secrets                                                                                                                                                              | `VARCHAR`   | `local_file`                                        |
| `disable_parquet_prefetching`                 | Disable the prefetching mechanism in Parquet                                                                                                                                                                  | `BOOLEAN`   | `false`                                             |
| `disabled_compression_methods`                | Disable a specific set of compression methods (comma separated)                                                                                                                                               | `VARCHAR`   |                                                     |
| `disabled_filesystems`                        | Disable specific file systems preventing access (e.g., LocalFileSystem)                                                                                                                                       | `VARCHAR`   |                                                     |
| `disabled_log_types`                          | Sets the list of disabled loggers                                                                                                                                                                             | `VARCHAR`   |                                                     |
| `duckdb_api`                                  | DuckDB API surface                                                                                                                                                                                            | `VARCHAR`   | `cli`                                               |
| `enable_external_access`                      | Allow the database to access external state (through e.g., loading/installing modules, COPY TO/FROM, CSV readers, pandas replacement scans, etc)                                                              | `BOOLEAN`   | `true`                                              |
| `enable_fsst_vectors`                         | Allow scans on FSST compressed segments to emit compressed vectors to utilize late decompression                                                                                                              | `BOOLEAN`   | `false`                                             |
| `enable_geoparquet_conversion`                | Attempt to decode/encode geometry data in/as GeoParquet files if the spatial extension is present.                                                                                                            | `BOOLEAN`   | `true`                                              |
| `enable_http_metadata_cache`                  | Whether or not the global http metadata is used to cache HTTP metadata                                                                                                                                        | `BOOLEAN`   | `false`                                             |
| `enable_logging`                              | Enables the logger                                                                                                                                                                                            | `BOOLEAN`   | `0`                                                 |
| `enable_macro_dependencies`                   | Enable created MACROs to create dependencies on the referenced objects (such as tables)                                                                                                                       | `BOOLEAN`   | `false`                                             |
| `enable_object_cache`                         | [PLACEHOLDER] Legacy setting - does nothing                                                                                                                                                                   | `BOOLEAN`   | `NULL`                                              |
| `enable_server_cert_verification`             | Enable server side certificate verification.                                                                                                                                                                  | `BOOLEAN`   | `false`                                             |
| `enable_view_dependencies`                    | Enable created VIEWs to create dependencies on the referenced objects (such as tables)                                                                                                                        | `BOOLEAN`   | `false`                                             |
| `enabled_log_types`                           | Sets the list of enabled loggers                                                                                                                                                                              | `VARCHAR`   |                                                     |
| `extension_directory`                         | Set the directory to store extensions in                                                                                                                                                                      | `VARCHAR`   |                                                     |
| `external_threads`                            | The number of external threads that work on DuckDB tasks.                                                                                                                                                     | `UBIGINT`   | `1`                                                 |
| `force_download`                              | Forces upfront download of file                                                                                                                                                                               | `BOOLEAN`   | `false`                                             |
| `http_keep_alive`                             | Keep alive connections. Setting this to false can help when running into connection failures                                                                                                                  | `BOOLEAN`   | `true`                                              |
| `http_proxy_password`                         | Password for HTTP proxy                                                                                                                                                                                       | `VARCHAR`   |                                                     |
| `http_proxy_username`                         | Username for HTTP proxy                                                                                                                                                                                       | `VARCHAR`   |                                                     |
| `http_proxy`                                  | HTTP proxy host                                                                                                                                                                                               | `VARCHAR`   |                                                     |
| `http_retries`                                | HTTP retries on I/O error                                                                                                                                                                                     | `UBIGINT`   | `3`                                                 |
| `http_retry_backoff`                          | Backoff factor for exponentially increasing retry wait time                                                                                                                                                   | `FLOAT`     | `4`                                                 |
| `http_retry_wait_ms`                          | Time between retries                                                                                                                                                                                          | `UBIGINT`   | `100`                                               |
| `http_timeout`                                | HTTP timeout read/write/connection/retry (in seconds)                                                                                                                                                         | `UBIGINT`   | `30`                                                |
| `immediate_transaction_mode`                  | Whether transactions should be started lazily when needed, or immediately when BEGIN TRANSACTION is called                                                                                                    | `BOOLEAN`   | `false`                                             |
| `index_scan_max_count`                        | The maximum index scan count sets a threshold for index scans. If fewer than MAX(index_scan_max_count, index_scan_percentage * total_row_count) rows match, we perform an index scan instead of a table scan. | `UBIGINT`   | `2048`                                              |
| `index_scan_percentage`                       | The index scan percentage sets a threshold for index scans. If fewer than MAX(index_scan_max_count, index_scan_percentage * total_row_count) rows match, we perform an index scan instead of a table scan.    | `DOUBLE`    | `0.001`                                             |
| `lock_configuration`                          | Whether or not the configuration can be altered                                                                                                                                                               | `BOOLEAN`   | `false`                                             |
| `logging_level`                               | The log level which will be recorded in the log                                                                                                                                                               | `VARCHAR`   | `INFO`                                              |
| `logging_mode`                                | Enables the logger                                                                                                                                                                                            | `VARCHAR`   | `LEVEL_ONLY`                                        |
| `logging_storage`                             | Set the logging storage (memory/stdout/file)                                                                                                                                                                  | `VARCHAR`   | `memory`                                            |
| `max_memory`, `memory_limit`                  | The maximum memory of the system (e.g., 1GB)                                                                                                                                                                  | `VARCHAR`   | 80% of RAM                                          |
| `max_temp_directory_size`                     | The maximum amount of data stored inside the 'temp_directory' (when set) (e.g., 1GB)                                                                                                                          | `VARCHAR`   | `90% of available disk space`                       |
| `max_vacuum_tasks`                            | The maximum vacuum tasks to schedule during a checkpoint.                                                                                                                                                     | `UBIGINT`   | `100`                                               |
| `old_implicit_casting`                        | Allow implicit casting to/from VARCHAR                                                                                                                                                                        | `BOOLEAN`   | `false`                                             |
| `parquet_metadata_cache`                      | Cache Parquet metadata - useful when reading the same files multiple times                                                                                                                                    | `BOOLEAN`   | `false`                                             |
| `password`                                    | The password to use. Ignored for legacy compatibility.                                                                                                                                                        | `VARCHAR`   | `NULL`                                              |
| `prefetch_all_parquet_files`                  | Use the prefetching mechanism for all types of parquet files                                                                                                                                                  | `BOOLEAN`   | `false`                                             |
| `preserve_insertion_order`                    | Whether or not to preserve insertion order. If set to false the system is allowed to re-order any results that do not contain ORDER BY clauses.                                                               | `BOOLEAN`   | `true`                                              |
| `produce_arrow_string_view`                   | Whether strings should be produced by DuckDB in Utf8View format instead of Utf8                                                                                                                               | `BOOLEAN`   | `false`                                             |
| `s3_access_key_id`                            | S3 Access Key ID                                                                                                                                                                                              | `VARCHAR`   |                                                     |
| `s3_endpoint`                                 | S3 Endpoint                                                                                                                                                                                                   | `VARCHAR`   |                                                     |
| `s3_region`                                   | S3 Region                                                                                                                                                                                                     | `VARCHAR`   | `us-east-1`                                         |
| `s3_secret_access_key`                        | S3 Access Key                                                                                                                                                                                                 | `VARCHAR`   |                                                     |
| `s3_session_token`                            | S3 Session Token                                                                                                                                                                                              | `VARCHAR`   |                                                     |
| `s3_uploader_max_filesize`                    | S3 Uploader max filesize (between 50GB and 5TB)                                                                                                                                                               | `VARCHAR`   | `800GB`                                             |
| `s3_uploader_max_parts_per_file`              | S3 Uploader max parts per file (between 1 and 10000)                                                                                                                                                          | `UBIGINT`   | `10000`                                             |
| `s3_uploader_thread_limit`                    | S3 Uploader global thread limit                                                                                                                                                                               | `UBIGINT`   | `50`                                                |
| `s3_url_compatibility_mode`                   | Disable Globs and Query Parameters on S3 URLs                                                                                                                                                                 | `BOOLEAN`   | `false`                                             |
| `s3_url_style`                                | S3 URL style                                                                                                                                                                                                  | `VARCHAR`   | `vhost`                                             |
| `s3_use_ssl`                                  | S3 use SSL                                                                                                                                                                                                    | `BOOLEAN`   | `true`                                              |
| `secret_directory`                            | Set the directory to which persistent secrets are stored                                                                                                                                                      | `VARCHAR`   | `~/.duckdb/stored_secrets`                          |
| `storage_compatibility_version`               | Serialize on checkpoint with compatibility for a given duckdb version                                                                                                                                         | `VARCHAR`   | `v0.10.2`                                           |
| `temp_directory`                              | Set the directory to which to write temp files                                                                                                                                                                | `VARCHAR`   | `⟨database_name⟩.tmp` or `.tmp` (in in-memory mode) |
| `threads`, `worker_threads`                   | The number of total threads used by the system.                                                                                                                                                               | `BIGINT`    | # CPU cores                                         |
| `username`, `user`                            | The username to use. Ignored for legacy compatibility.                                                                                                                                                        | `VARCHAR`   | `NULL`                                              |
| `zstd_min_string_length`                      | The (average) length at which to enable ZSTD compression, defaults to 4096                                                                                                                                    | `UBIGINT`   | `4096`                                              |

### Local Configuration Options

|                   Name                   |                                                                       Description                                                                       |   Type    |                                                                                                                                                                                        Default value                                                                                                                                                                                        |
|----|--------|--|---|
| `custom_profiling_settings`              | Accepts a `JSON` enabling custom metrics                                                                                                                | `VARCHAR` | `{"ROWS_RETURNED": "true", "LATENCY": "true", "RESULT_SET_SIZE": "true", "OPERATOR_TIMING": "true", "OPERATOR_ROWS_SCANNED": "true", "CUMULATIVE_ROWS_SCANNED": "true", "OPERATOR_CARDINALITY": "true", "OPERATOR_TYPE": "true", "OPERATOR_NAME": "true", "CUMULATIVE_CARDINALITY": "true", "EXTRA_INFO": "true", "CPU_TIME": "true", "BLOCKE...`   |
| `dynamic_or_filter_threshold`            | The maximum amount of OR filters we generate dynamically from a hash join                                                                               | `UBIGINT` | `50`                                                                                                                                                                                                                                                                                                                                          |
| `enable_http_logging`                    | Enables HTTP logging                                                                                                                                    | `BOOLEAN` | `false`                                                                                                                                                                                                                                                                                                                                       |
| `enable_profiling`                       | Enables profiling, and sets the output format (`JSON`, `QUERY_TREE`, `QUERY_TREE_OPTIMIZER`)                                                            | `VARCHAR` | `NULL`                                                                                                                                                                                                                                                                                                                                        |
| `enable_progress_bar_print`              | Controls the printing of the progress bar, when 'enable_progress_bar' is true                                                                           | `BOOLEAN` | `true`                                                                                                                                                                                                                                                                                                                                        |
| `enable_progress_bar`                    | Enables the progress bar, printing progress to the terminal for long queries                                                                            | `BOOLEAN` | `true`                                                                                                                                                                                                                                                                                                                                        |
| `errors_as_json`                         | Output error messages as structured `JSON` instead of as a raw string                                                                                   | `BOOLEAN` | `false`                                                                                                                                                                                                                                                                                                                                       |
| `explain_output`                         | Output of EXPLAIN statements (`ALL`, `OPTIMIZED_ONLY`, `PHYSICAL_ONLY`)                                                                                 | `VARCHAR` | `physical_only`                                                                                                                                                                                                                                                                                                                               |
| `file_search_path`                       | A comma separated list of directories to search for input files                                                                                         | `VARCHAR` |                                                                                                                                                                                                                                                                                                                                               |
| `home_directory`                         | Sets the home directory used by the system                                                                                                              | `VARCHAR` |                                                                                                                                                                                                                                                                                                                                               |
| `http_logging_output`                    | The file to which HTTP logging output should be saved, or empty to print to the terminal                                                                | `VARCHAR` |                                                                                                                                                                                                                                                                                                                                               |
| `ieee_floating_point_ops`                | Use IEE754-compliant floating point operations (returning NAN instead of errors/NULL).                                                                  | `BOOLEAN` | `true`                                                                                                                                                                                                                                                                                                                                        |
| `integer_division`                       | Whether or not the / operator defaults to integer division, or to floating point division                                                               | `BOOLEAN` | `false`                                                                                                                                                                                                                                                                                                                                       |
| `late_materialization_max_rows`          | The maximum amount of rows in the LIMIT/SAMPLE for which we trigger late materialization                                                                | `UBIGINT` | `50`                                                                                                                                                                                                                                                                                                                                          |
| `log_query_path`                         | Specifies the path to which queries should be logged (default: NULL, queries are not logged)                                                            | `VARCHAR` | `NULL`                                                                                                                                                                                                                                                                                                                                        |
| `max_expression_depth`                   | The maximum expression depth limit in the parser. WARNING: increasing this setting and using very deep expressions might lead to stack overflow errors. | `UBIGINT` | `1000`                                                                                                                                                                                                                                                                                                                                        |
| `merge_join_threshold`                   | The number of rows we need on either table to choose a merge join                                                                                       | `UBIGINT` | `1000`                                                                                                                                                                                                                                                                                                                                        |
| `nested_loop_join_threshold`             | The number of rows we need on either table to choose a nested loop join                                                                                 | `UBIGINT` | `5`                                                                                                                                                                                                                                                                                                                                           |
| `order_by_non_integer_literal`           | Allow ordering by non-integer literals - ordering by such literals has no effect.                                                                       | `BOOLEAN` | `false`                                                                                                                                                                                                                                                                                                                                       |
| `ordered_aggregate_threshold`            | The number of rows to accumulate before sorting, used for tuning                                                                                        | `UBIGINT` | `262144`                                                                                                                                                                                                                                                                                                                                      |
| `partitioned_write_flush_threshold`      | The threshold in number of rows after which we flush a thread state when writing using `PARTITION_BY`                                                   | `UBIGINT` | `524288`                                                                                                                                                                                                                                                                                                                                      |
| `partitioned_write_max_open_files`       | The maximum amount of files the system can keep open before flushing to disk when writing using `PARTITION_BY`                                          | `UBIGINT` | `100`                                                                                                                                                                                                                                                                                                                                         |
| `perfect_ht_threshold`                   | Threshold in bytes for when to use a perfect hash table                                                                                                 | `UBIGINT` | `12`                                                                                                                                                                                                                                                                                                                                          |
| `pivot_filter_threshold`                 | The threshold to switch from using filtered aggregates to LIST with a dedicated pivot operator                                                          | `UBIGINT` | `20`                                                                                                                                                                                                                                                                                                                                          |
| `pivot_limit`                            | The maximum number of pivot columns in a pivot statement                                                                                                | `UBIGINT` | `100000`                                                                                                                                                                                                                                                                                                                                      |
| `prefer_range_joins`                     | Force use of range joins with mixed predicates                                                                                                          | `BOOLEAN` | `false`                                                                                                                                                                                                                                                                                                                                       |
| `preserve_identifier_case`               | Whether or not to preserve the identifier case, instead of always lowercasing all non-quoted identifiers                                                | `BOOLEAN` | `true`                                                                                                                                                                                                                                                                                                                                        |
| `profile_output`, `profiling_output`     | The file to which profile output should be saved, or empty to print to the terminal                                                                     | `VARCHAR` |                                                                                                                                                                                                                                                                                                                                               |
| `profiling_mode`                         | The profiling mode (`STANDARD` or `DETAILED`)                                                                                                           | `VARCHAR` | `NULL`                                                                                                                                                                                                                                                                                                                                        |
| `progress_bar_time`                      | Sets the time (in milliseconds) how long a query needs to take before we start printing a progress bar                                                  | `BIGINT`  | `2000`                                                                                                                                                                                                                                                                                                                                        |
| `scalar_subquery_error_on_multiple_rows` | When a scalar subquery returns multiple rows - return a random row instead of returning an error.                                                       | `BOOLEAN` | `true`                                                                                                                                                                                                                                                                                                                                        |
| `schema`                                 | Sets the default search schema. Equivalent to setting search_path to a single value.                                                                    | `VARCHAR` | `main`                                                                                                                                                                                                                                                                                                                                        |
| `search_path`                            | Sets the default catalog search path as a comma-separated list of values                                                                                | `VARCHAR` |                                                                                                                                                                                                                                                                                                                                               |
| `streaming_buffer_size`                  | The maximum memory to buffer between fetching from a streaming result (e.g., 1GB)                                                                       | `VARCHAR` | `976.5 KiB`                                                                                                                                                                                                                                                                                                                                   |