diff --git a/docs/generated/settings/settings-for-tenants.txt b/docs/generated/settings/settings-for-tenants.txt index 810f96e8ccfe..679e15548f04 100644 --- a/docs/generated/settings/settings-for-tenants.txt +++ b/docs/generated/settings/settings-for-tenants.txt @@ -1,452 +1,452 @@ -Setting Type Default Description Class -admission.epoch_lifo.enabled boolean false when true, epoch-LIFO behavior is enabled when there is significant delay in admission application -admission.epoch_lifo.epoch_closing_delta_duration duration 5ms the delta duration before closing an epoch, for epoch-LIFO admission control ordering application -admission.epoch_lifo.epoch_duration duration 100ms the duration of an epoch, for epoch-LIFO admission control ordering application -admission.epoch_lifo.queue_delay_threshold_to_switch_to_lifo duration 105ms the queue delay encountered by a (tenant,priority) for switching to epoch-LIFO ordering application -admission.sql_kv_response.enabled boolean true when true, work performed by the SQL layer when receiving a KV response is subject to admission control application -admission.sql_sql_response.enabled boolean true when true, work performed by the SQL layer when receiving a DistSQL response is subject to admission control application -bulkio.backup.file_size byte size 128 MiB target size for individual data files produced during BACKUP application -bulkio.backup.read_timeout duration 5m0s amount of time after which a read attempt is considered timed out, which causes the backup to fail application -bulkio.backup.read_with_priority_after duration 1m0s amount of time since the read-as-of time above which a BACKUP should use priority when retrying reads application -bulkio.import.row_count_validation.mode (alias: bulkio.import.row_count_validation.unsafe.mode) enumeration async controls validation of imported data via INSPECT jobs. Options: 'off' (no validation), 'async' (background validation), 'sync' (blocking validation). If disabled, IMPORT will not perform a post-import row count check. [off = 0, async = 1, sync = 2] application -bulkio.merge.file_size byte size 1.0 GiB target size for individual data files produced during local only merge phases application -changefeed.aggregator.flush_jitter float 0.1 jitter aggregator flushes as a fraction of min_checkpoint_frequency. This setting has no effect if min_checkpoint_frequency is set to 0. application -changefeed.backfill.concurrent_scan_requests integer 0 number of concurrent scan requests per node issued during a backfill application -changefeed.backfill.scan_request_size integer 524288 the maximum number of bytes returned by each scan request application -changefeed.batch_reduction_retry.enabled (alias: changefeed.batch_reduction_retry_enabled) boolean false if true, kafka changefeeds upon erroring on an oversized batch will attempt to resend the messages with progressively lower batch sizes application -changefeed.default_range_distribution_strategy enumeration default controls how changefeed work is distributed across nodes. 'default' defers to DistSQL for node selection and work distribution. 'balanced_simple' uses DistSQL for node selection but then attempts to evenly distribute ranges across those selected nodes for better load balancing. this setting does not override locality restrictions and can be overridden per-changefeed using the 'range_distribution_strategy' option. [default = 0, balanced_simple = 1] application -changefeed.event_consumer_worker_queue_size integer 16 if changefeed.event_consumer_workers is enabled, this setting sets the maxmimum number of events which a worker can buffer application -changefeed.event_consumer_workers integer 0 the number of workers to use when processing events: <0 disables, 0 assigns a reasonable default, >0 assigns the setting value. for experimental/core changefeeds and changefeeds using parquet format, this is disabled application -changefeed.fast_gzip.enabled boolean true use fast gzip implementation application -changefeed.span_checkpoint.lag_threshold (alias: changefeed.frontier_highwater_lag_checkpoint_threshold) duration 10m0s the amount of time a changefeed's lagging (slowest) spans must lag behind its leading (fastest) spans before a span-level checkpoint to save leading span progress is written; if 0, span-level checkpoints due to lagging spans is disabled application -changefeed.kafka.max_request_size byte size 256 MiB "the maximum number of uncompressed bytes sent in a single request to a Kafka broker; lowering this value helps avoid spurious ""message too large"" errors that can occur when multiple messages are combined into a single batch; this setting is overridden by the per-changefeed Flush { MaxBytes: } option" application -changefeed.kafka_v2_error_details.enabled boolean true if enabled, Kafka v2 sinks will include the message key, size, and MVCC timestamp in message too large errors application -changefeed.memory.per_changefeed_limit byte size 512 MiB controls amount of data that can be buffered per changefeed application -changefeed.resolved_timestamp.min_update_interval (alias: changefeed.min_highwater_advance) duration 0s minimum amount of time that must have elapsed since the last time a changefeed's resolved timestamp was updated before it is eligible to be updated again; default of 0 means no minimum interval is enforced but updating will still be limited by the average time it takes to checkpoint progress application -changefeed.node_throttle_config string specifies node level throttling configuration for all changefeeeds application -changefeed.partition_alg.enabled boolean false if enabled, allows specifying the partition_alg changefeed option to choose between fnv-1a (default) and murmur2 hash functions for Kafka partitioning. Only affects changefeeds using a kafka sink with changefeed.new_kafka_sink_enabled set to true. application -changefeed.progress.frontier_persistence.interval duration 30s minimum amount of time that must elapse before a changefeed will persist its entire span frontier again application -changefeed.protect_timestamp.max_age duration 96h0m0s fail the changefeed if the protected timestamp age exceeds this threshold; 0 disables expiration application -changefeed.protect_timestamp_interval duration 10m0s controls how often the changefeed forwards its protected timestamp to the resolved timestamp application -changefeed.schema_feed.read_with_priority_after duration 1m0s retry with high priority if we were not able to read descriptors for too long; 0 disables application -changefeed.sink_io_workers integer 0 the number of workers used by changefeeds when sending requests to the sink (currently the batching versions of webhook, pubsub, and kafka sinks that are enabled by changefeed.new__sink_enabled only): <0 disables, 0 assigns a reasonable default, >0 assigns the setting value application -cloudstorage.azure.concurrent_upload_buffers integer 1 controls the number of concurrent buffers that will be used by the Azure client when uploading chunks.Each buffer can buffer up to cloudstorage.write_chunk.size of memory during an upload application -cloudstorage.azure.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.azure.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.azure.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.azure.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.gs.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.gs.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.gs.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.gs.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.http.custom_ca string custom root CA (appended to system's default CAs) for verifying certificates when interacting with HTTPS storage application -cloudstorage.http.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.http.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.http.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.http.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.nodelocal.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.nodelocal.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.nodelocal.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.nodelocal.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.nullsink.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.nullsink.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.nullsink.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.nullsink.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.s3.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.s3.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.s3.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.s3.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.timeout duration 10m0s the timeout for import/export storage operations application -cloudstorage.userfile.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.userfile.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.userfile.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cloudstorage.userfile.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application -cluster.auto_upgrade.enabled boolean true when true, enables automatic finalization of major version upgrades once all cluster nodes are running an upgraded binary application -cluster.organization string organization name system-visible -cluster.preserve_downgrade_option string disable (automatic or manual) cluster version upgrade from the specified version until reset application -debug.zip.redact_addresses.enabled boolean false enables the redaction of hostnames and ip addresses in debug zip application -diagnostics.active_query_dumps.enabled boolean true experimental: enable dumping of anonymized active queries to disk when node is under memory pressure system-visible -diagnostics.forced_sql_stat_reset.interval duration 2h0m0s interval after which the reported SQL Stats are reset even if not collected by telemetry reporter. It has a max value of 24H. application -diagnostics.memory_monitoring_dumps.enabled boolean true enable dumping of memory monitoring state at the same time as heap profiles are taken system-visible -diagnostics.reporting.enabled boolean true enable reporting diagnostic metrics to cockroach labs, but is ignored for Trial or Free licenses application -diagnostics.reporting.interval duration 1h0m0s interval at which diagnostics data should be reported application -enterprise.license string the encoded cluster license system-visible -external.graphite.endpoint string if nonempty, push server metrics to the Graphite or Carbon server at the specified host:port application -external.graphite.interval duration 10s the interval at which metrics are pushed to Graphite (if enabled) application -feature.backup.enabled boolean true set to true to enable backups, false to disable; default is true application -feature.changefeed.enabled boolean true set to true to enable changefeeds, false to disable; default is true application -feature.export.enabled boolean true set to true to enable exports, false to disable; default is true application -feature.import.enabled boolean true set to true to enable imports, false to disable; default is true application -feature.infer_rbr_region_col_using_constraint.enabled boolean false set to true to enable looking up the region column via a foreign key constraint in a REGIONAL BY ROW table, false to disable; default is false application -feature.restore.enabled boolean true set to true to enable restore, false to disable; default is true application -feature.schema_change.enabled boolean true set to true to enable schema changes, false to disable; default is true application -feature.stats.enabled boolean true set to true to enable CREATE STATISTICS/ANALYZE, false to disable; default is true application -feature.vector_index.enabled boolean true set to true to enable vector indexes, false to disable; default is true application -jobs.retention_time duration 336h0m0s the amount of time for which records for completed jobs are retained application -kv.bulk_sst.target_size byte size 16 MiB target size for SSTs emitted from export requests; export requests (i.e. BACKUP) may buffer up to the sum of kv.bulk_sst.target_size and kv.bulk_sst.max_allowed_overage in memory system-visible -kv.closed_timestamp.follower_reads.enabled (alias: kv.closed_timestamp.follower_reads_enabled) boolean true allow (all) replicas to serve consistent historical reads based on closed timestamp information system-visible -kv.closed_timestamp.lead_for_global_reads_auto_tune.enabled boolean false if enabled, observed network latency between leaseholders and their furthest follower will be used to adjust closed timestamp policies for rangesranges configured to serve global reads. kv.closed_timestamp.lead_for_global_reads_override takes precedence if set. system-visible -kv.closed_timestamp.lead_for_global_reads_override duration 0s if nonzero, overrides the lead time that global_read ranges use to publish closed timestamps system-visible -kv.closed_timestamp.side_transport_interval duration 200ms the interval at which the closed timestamp side-transport attempts to advance each range's closed timestamp; set to 0 to disable the side-transport system-visible -kv.closed_timestamp.side_transport_pacing_refresh_interval duration 10ms the refresh interval for the task pacer that controls pacing of sending sidetransport updates to avoid overloading the system when many connections are waiting system-visible -kv.closed_timestamp.side_transport_pacing_smear_interval duration 1ms the smear interval for the task pacer that controls the amount of time each paced batch is going to take when broadcasting sidetransport updates system-visible -kv.closed_timestamp.target_duration duration 3s if nonzero, attempt to provide closed timestamp notifications for timestamps trailing cluster time by approximately this duration system-visible -kv.dist_sender.circuit_breaker.cancellation.enabled boolean true when enabled, in-flight requests will be cancelled when the circuit breaker trips application -kv.dist_sender.circuit_breaker.cancellation.write_grace_period duration 10s how long after the circuit breaker trips to cancel write requests (these can't retry internally, so should be long enough to allow quorum/lease recovery) application -kv.dist_sender.circuit_breaker.probe.interval duration 3s interval between replica probes application -kv.dist_sender.circuit_breaker.probe.threshold duration 3s duration of errors or stalls after which a replica will be probed application -kv.dist_sender.circuit_breaker.probe.timeout duration 3s timeout for replica probes application -kv.dist_sender.circuit_breakers.mode enumeration liveness range only set of ranges to trip circuit breakers for failing or stalled replicas [no ranges = 0, liveness range only = 1, all ranges = 2] application -kv.protectedts.reconciliation.interval duration 5m0s the frequency for reconciling jobs with protected timestamp records system-visible -kv.rangefeed.client.stream_startup_rate integer 100 controls the rate per second the client will initiate new rangefeed stream for a single range; 0 implies unlimited application -kv.rangefeed.closed_timestamp_refresh_interval duration 3s the interval at which closed-timestamp updatesare delivered to rangefeeds; set to 0 to use kv.closed_timestamp.side_transport_interval system-visible -kv.rangefeed.enabled boolean false if set, rangefeed registration is enabled system-visible -kv.transaction.max_intents_and_locks integer 0 maximum count of inserts or durable locks for a single transactions, 0 to disable application -kv.transaction.max_intents_bytes integer 4194304 maximum number of bytes used to track locks in transactions application -kv.transaction.max_refresh_spans_bytes integer 4194304 maximum number of bytes used to track refresh spans in serializable transactions application -kv.transaction.randomized_anchor_key.enabled boolean false dictates whether a transactions anchor key is randomized or not application -kv.transaction.reject_over_max_intents_budget.enabled boolean false if set, transactions that exceed their lock tracking budget (kv.transaction.max_intents_bytes) are rejected instead of having their lock spans imprecisely compressed application -kv.transaction.write_buffering.enabled boolean true if enabled, transactional writes are buffered on the client application -kv.transaction.write_buffering.max_buffer_size byte size 4.0 MiB if non-zero, defines that maximum size of the buffer that will be used to buffer transactional writes per-transaction application -kv.transaction.write_pipelining.locking_reads.enabled boolean true if enabled, transactional locking reads are pipelined through Raft consensus application -kv.transaction.write_pipelining.ranged_writes.enabled boolean true if enabled, transactional ranged writes are pipelined through Raft consensus application -kv.transaction.write_pipelining.enabled (alias: kv.transaction.write_pipelining_enabled) boolean true if enabled, transactional writes are pipelined through Raft consensus application -kv.transaction.write_pipelining.max_batch_size (alias: kv.transaction.write_pipelining_max_batch_size) integer 128 if non-zero, defines that maximum size batch that will be pipelined through Raft consensus application -obs.ash.buffer_size integer 1000000 number of ASH samples to retain in memory system-visible -obs.ash.enabled boolean false enable active session history sampling system-visible -obs.ash.log_interval duration 10m0s interval between periodic ASH top-N workload summary logs; also used as the lookback window for ASH reports written by the env sampler profiler system-visible -obs.ash.log_top_n integer 10 maximum number of entries in periodic ASH workload summary, ranked by sample count descending system-visible -obs.ash.response_limit integer 10000 maximum number of ASH samples returned per node in fan-out responses application -obs.ash.sample_interval duration 1s interval between ASH samples system-visible -obs.metrics_scrape.default_visibility enumeration all controls the default metric visibility level for the metrics scrape endpoints [internal = -1, all = 0, support = 1, essential = 2] application -obs.tablemetadata.automatic_updates.enabled boolean false enables automatic updates of the table metadata cache system.table_metadata application -obs.tablemetadata.data_valid_duration duration 20m0s the duration for which the data in system.table_metadata is considered valid application -schedules.backup.gc_protection.enabled boolean true enable chaining of GC protection across backups run as part of a schedule application -security.client_cert.san_required.enabled boolean false mandates a requirement for client certs to contain SAN system-visible -security.client_cert.subject_required.enabled boolean false mandates a requirement for subject role to be set for db user system-visible -security.ocsp.mode enumeration off use OCSP to check whether TLS certificates are revoked. If the OCSP server is unreachable, in strict mode all certificates will be rejected and in lax mode all certificates will be accepted. [off = 0, lax = 1, strict = 2] application -security.ocsp.timeout duration 3s timeout before considering the OCSP server unreachable application -security.provisioning.ldap.enabled boolean false enables automatic creation of SQL users upon successful LDAP login application -server.auth_log.sql_connections.enabled boolean false if set, log SQL client connect and disconnect events to the SESSIONS log channel (note: may hinder performance on loaded nodes) application -server.auth_log.sql_sessions.enabled boolean false if set, log verbose SQL session authentication events to the SESSIONS log channel (note: may hinder performance on loaded nodes). Session start and end events are always logged regardless of this setting; disable the SESSIONS log channel to suppress them. application -server.authentication_cache.enabled boolean true enables a cache used during authentication to avoid lookups to system tables when retrieving per-user authentication-related information application -server.child_metrics.enabled boolean false enables the exporting of child metrics, additional prometheus time series with extra labels application -server.child_metrics.include_aggregate.enabled boolean true include the reporting of the aggregate time series when child metrics are enabled. This cluster setting has no effect if child metrics are disabled. application -server.clock.forward_jump_check.enabled (alias: server.clock.forward_jump_check_enabled) boolean false if enabled, forward clock jumps > max_offset/2 will cause a panic application -server.clock.persist_upper_bound_interval duration 0s the interval between persisting the wall time upper bound of the clock. The clock does not generate a wall time greater than the persisted timestamp and will panic if it sees a wall time greater than this value. When cockroach starts, it waits for the wall time to catch-up till this persisted timestamp. This guarantees monotonic wall time across server restarts. Not setting this or setting a value of 0 disables this feature. application -server.eventlog.enabled boolean true if set, logged notable events are also stored in the table system.eventlog application -server.eventlog.ttl duration 2160h0m0s if nonzero, entries in system.eventlog older than this duration are periodically purged application -server.host_based_authentication.configuration string host-based authentication configuration to use during connection authentication application -server.hot_ranges_request.node.timeout duration 5m0s the duration allowed for a single node to return hot range data before the request is cancelled; if set to 0, there is no timeout application -server.hsts.enabled boolean false if true, HSTS headers will be sent along with all HTTP requests. The headers will contain a max-age setting of one year. Browsers honoring the header will always use HTTPS to access the DB Console. Ensure that TLS is correctly configured prior to enabling. application -server.http.base_path string / path to redirect the user to upon succcessful login application -server.identity_map.configuration string system-identity to database-username mappings application -server.jwt_authentication.audience string sets accepted audience values for JWT logins over the SQL interface application -server.jwt_authentication.claim string sets the JWT claim that is parsed to get the username; may be a simple claim name (e.g. email) or a JSON Pointer per RFC 6901 (e.g. /kubernetes.io/serviceaccount/uid) application -server.jwt_authentication.client.timeout duration 15s sets the client timeout for external calls made during JWT authentication (e.g. fetching JWKS, etc.) application -server.jwt_authentication.enabled boolean false enables or disables JWT login for the SQL interface application -server.jwt_authentication.issuers.configuration (alias: server.jwt_authentication.issuers) string sets accepted issuer values for JWT logins over the SQL interface which can be a single issuer URL string or a JSON string containing an array of issuer URLs or a JSON object containing map of issuer URLS to JWKS URIs application -server.jwt_authentication.issuers.custom_ca string sets the PEM encoded custom root CA for verifying certificates while fetching JWKS application -server.jwt_authentication.jwks string "{""keys"":[]}" sets the public key set for JWT logins over the SQL interface (JWKS format) application -server.jwt_authentication.jwks_auto_fetch.enabled boolean false enables or disables automatic fetching of JWKS from the issuer's well-known endpoint or JWKS URI set in JWTAuthIssuersConfig. If this is enabled, the server.jwt_authentication.jwks will be ignored. application -server.ldap_authentication.client.tls_certificate string sets the client certificate PEM for establishing mTLS connection with LDAP server application -server.ldap_authentication.client.tls_key string sets the client key PEM for establishing mTLS connection with LDAP server application -server.ldap_authentication.domain.custom_ca string sets the PEM encoded custom root CA for verifying domain certificates when establishing connection with LDAP server application -server.log_gc.max_deletions_per_cycle integer 1000 the maximum number of entries to delete on each purge of log-like system tables application -server.log_gc.period duration 1h0m0s the period at which log-like system tables are checked for old entries application -server.max_connections_per_gateway integer -1 the maximum number of SQL connections per gateway allowed at a given time (note: this will only limit future connection attempts and will not affect already established connections). Negative values result in unlimited number of connections. Superusers are not affected by this limit. application -server.max_open_transactions_per_gateway integer -1 the maximum number of open SQL transactions per gateway allowed at a given time. Negative values result in unlimited number of connections. Superusers are not affected by this limit. application -server.oidc_authentication.autologin.enabled (alias: server.oidc_authentication.autologin) boolean false if true, logged-out visitors to the DB Console will be automatically redirected to the OIDC login endpoint application -server.oidc_authentication.button_text string Log in with your OIDC provider text to show on button on DB Console login page to login with your OIDC provider (only shown if OIDC is enabled) application -server.oidc_authentication.claim_json_key string sets JSON key of principal to extract from payload after OIDC authentication completes (usually email or sid) application -server.oidc_authentication.client.timeout duration 15s sets the client timeout for external calls made during OIDC authentication (e.g. authorization code flow, etc.) application -server.oidc_authentication.client_id string sets OIDC client id application -server.oidc_authentication.client_secret string sets OIDC client secret application -server.oidc_authentication.enabled boolean false enables or disabled OIDC login for the DB Console application -server.oidc_authentication.principal_regex string (.+) regular expression to apply to extracted principal (see claim_json_key setting) to translate to SQL user (golang regex format, must include 1 grouping to extract) application -server.oidc_authentication.provider.custom_ca string sets the PEM encoded custom root CA for verifying certificates while authenticating through the OIDC provider application -server.oidc_authentication.provider_url string sets OIDC provider URL ({provider_url}/.well-known/openid-configuration must resolve) application -server.oidc_authentication.redirect_url string https://localhost:8080/oidc/v1/callback sets OIDC redirect URL via a URL string or a JSON string containing a required `redirect_urls` key with an object that maps from region keys to URL strings (URLs should point to your load balancer and must route to the path /oidc/v1/callback) application -server.oidc_authentication.scopes string openid sets OIDC scopes to include with authentication request (space delimited list of strings, required to start with `openid`) application -server.oidc_authentication.tls_insecure_skip_verify.enabled boolean false if true, TLS certificate verification is skipped for connections to the OIDC provider (insecure) application -server.redact_sensitive_settings.enabled boolean false enables or disables the redaction of sensitive settings in the output of SHOW CLUSTER SETTINGS and SHOW ALL CLUSTER SETTINGS for users without the MODIFYCLUSTERSETTING privilege application -server.shutdown.connections.timeout (alias: server.shutdown.connection_wait) duration 0s the maximum amount of time a server waits for all SQL connections to be closed before proceeding with a drain. (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting) application -server.shutdown.initial_wait (alias: server.shutdown.drain_wait) duration 0s the amount of time a server waits in an unready state before proceeding with a drain (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting. --drain-wait is to specify the duration of the whole draining process, while server.shutdown.initial_wait is to set the wait time for health probes to notice that the node is not ready.) application -server.shutdown.transactions.timeout (alias: server.shutdown.query_wait) duration 10s the timeout for waiting for active transactions to finish during a drain (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting) application -server.sql_tcp_keep_alive.count integer 3 maximum number of probes that will be sent out before a connection is dropped because it's unresponsive (Linux and Darwin only). The value 0 is the operating system default. application -server.sql_tcp_keep_alive.idle duration 0s time with no network activity before sending a TCP keepalive probe (Linux and Darwin only). If 0, the value of server.sql_tcp_keep_alive.interval is used. The value 0 is the operating system default. application -server.sql_tcp_keep_alive.interval duration 10s time between keep alive probes and idle time before probes are sent out. The value 0 is the operating system default. application -server.sql_tcp_user.timeout duration 0s specifies the maximum amount of time that transmitted data can remain unacknowledged before the underlying TCP connection is forcefully closed. (Linux and Darwin only). The value 0 is the operating system default. application -server.time_until_store_dead duration 5m0s the time after which if there is no new gossiped information about a store, it is considered dead application -server.user_login.cert_password_method.auto_scram_promotion.enabled boolean true whether to automatically promote cert-password authentication to use SCRAM application -server.user_login.downgrade_scram_stored_passwords_to_bcrypt.enabled boolean true if server.user_login.password_encryption=crdb-bcrypt, this controls whether to automatically re-encode stored passwords using scram-sha-256 to crdb-bcrypt application -server.user_login.min_password_length integer 1 the minimum length accepted for passwords set in cleartext via SQL. Note that a value lower than 1 is ignored: passwords cannot be empty in any case. This setting only applies when adding new users or altering an existing user's password; it will not affect existing logins. application -server.user_login.password_encryption enumeration scram-sha-256 which hash method to use to encode cleartext passwords passed via ALTER/CREATE USER/ROLE WITH PASSWORD [crdb-bcrypt = 2, scram-sha-256 = 3] application -server.user_login.password_hashes.default_cost.crdb_bcrypt integer 10 the hashing cost to use when storing passwords supplied as cleartext by SQL clients with the hashing method crdb-bcrypt (allowed range: 4-31) application -server.user_login.password_hashes.default_cost.scram_sha_256 integer 10610 the hashing cost to use when storing passwords supplied as cleartext by SQL clients with the hashing method scram-sha-256 (allowed range: 4096-240000000000) application -server.user_login.rehash_scram_stored_passwords_on_cost_change.enabled boolean true if server.user_login.password_hashes.default_cost.scram_sha_256 differs from, the cost in a stored hash, this controls whether to automatically re-encode stored passwords using scram-sha-256 with the new default cost application -server.user_login.timeout duration 10s timeout after which client authentication times out if some system range is unavailable (0 = no timeout) application -server.user_login.upgrade_bcrypt_stored_passwords_to_scram.enabled boolean true if server.user_login.password_encryption=scram-sha-256, this controls whether to automatically re-encode stored passwords using crdb-bcrypt to scram-sha-256 application -server.web_session.purge.ttl duration 1h0m0s if nonzero, entries in system.web_sessions older than this duration are periodically purged application -server.web_session.timeout (alias: server.web_session_timeout) duration 168h0m0s the duration that a newly created web session will be valid application -sql.auth.change_own_password.enabled boolean false controls whether a user is allowed to change their own password, even if they have no other privileges application -sql.auth.grant_option_for_owner.enabled boolean true determines whether the GRANT OPTION for privileges is implicitly given to the owner of an object application -sql.auth.grant_option_inheritance.enabled boolean true determines whether the GRANT OPTION for privileges is inherited through role membership application -sql.auth.public_schema_create_privilege.enabled boolean true determines whether to grant all users the CREATE privileges on the public schema when it is created application -sql.auth.skip_underlying_view_privilege_checks.enabled boolean false determines whether to skip privilege checks on tables underlying views. When enabled, users with SELECT privileges on a view can query it regardless of their privileges on the underlying tables, and row-level security policies are evaluated as the invoking user rather than the view owner. This restores pre-v26.2 behavior. application -sql.catalog.allow_leased_descriptors.enabled boolean true if true, catalog views (crdb_internal, information_schema, pg_catalog) can use leased descriptors for improved performance application -sql.closed_session_cache.capacity integer 1000 the maximum number of sessions in the cache application -sql.closed_session_cache.time_to_live integer 3600 the maximum time to live, in seconds application -sql.contention.event_store.capacity byte size 64 MiB the in-memory storage capacity per-node of contention event store application -sql.contention.event_store.duration_threshold duration 0s minimum contention duration to cause the contention events to be collected into crdb_internal.transaction_contention_events application -sql.contention.record_serialization_conflicts.enabled boolean true enables recording 40001 errors with conflicting txn meta as SERIALIZATION_CONFLICTcontention events into crdb_internal.transaction_contention_events application -sql.contention.txn_id_cache.max_size byte size 64 MiB the maximum byte size TxnID cache will use (set to 0 to disable) application -sql.crdb_internal.tsdb_query.max_rows integer 500000 maximum number of rows a single crdb_internal.tsdb_query call may return; queries that would return more error before any rows are surfaced. Set to 0 to disable the cap. application -sql.crdb_internal.tsdb_query.max_time_range duration 168h0m0s maximum effective time range that a single crdb_internal.tsdb_query call may cover; the requested end_time is first clamped to the current wall-clock time before this cap is checked application -sql.cross_db_fks.enabled boolean false if true, creating foreign key references across databases is allowed application -sql.cross_db_sequence_owners.enabled boolean false if true, creating sequences owned by tables from other databases is allowed application -sql.cross_db_sequence_references.enabled boolean false if true, sequences referenced by tables from other databases are allowed application -sql.cross_db_views.enabled boolean false if true, creating views that refer to other databases is allowed application +Setting Type Default Description Class Min Max +admission.epoch_lifo.enabled boolean false when true, epoch-LIFO behavior is enabled when there is significant delay in admission application +admission.epoch_lifo.epoch_closing_delta_duration duration 5ms the delta duration before closing an epoch, for epoch-LIFO admission control ordering application 1ms +admission.epoch_lifo.epoch_duration duration 100ms the duration of an epoch, for epoch-LIFO admission control ordering application 1ms +admission.epoch_lifo.queue_delay_threshold_to_switch_to_lifo duration 105ms the queue delay encountered by a (tenant,priority) for switching to epoch-LIFO ordering application 1ms +admission.sql_kv_response.enabled boolean true when true, work performed by the SQL layer when receiving a KV response is subject to admission control application +admission.sql_sql_response.enabled boolean true when true, work performed by the SQL layer when receiving a DistSQL response is subject to admission control application +bulkio.backup.file_size byte size 128 MiB target size for individual data files produced during BACKUP application +bulkio.backup.read_timeout duration 5m0s amount of time after which a read attempt is considered timed out, which causes the backup to fail application +bulkio.backup.read_with_priority_after duration 1m0s amount of time since the read-as-of time above which a BACKUP should use priority when retrying reads application +bulkio.import.row_count_validation.mode (alias: bulkio.import.row_count_validation.unsafe.mode) enumeration async controls validation of imported data via INSPECT jobs. Options: 'off' (no validation), 'async' (background validation), 'sync' (blocking validation). If disabled, IMPORT will not perform a post-import row count check. [off = 0, async = 1, sync = 2] application +bulkio.merge.file_size byte size 1.0 GiB target size for individual data files produced during local only merge phases application +changefeed.aggregator.flush_jitter float 0.1 jitter aggregator flushes as a fraction of min_checkpoint_frequency. This setting has no effect if min_checkpoint_frequency is set to 0. application 0 +changefeed.backfill.concurrent_scan_requests integer 0 number of concurrent scan requests per node issued during a backfill application +changefeed.backfill.scan_request_size integer 524288 the maximum number of bytes returned by each scan request application +changefeed.batch_reduction_retry.enabled (alias: changefeed.batch_reduction_retry_enabled) boolean false if true, kafka changefeeds upon erroring on an oversized batch will attempt to resend the messages with progressively lower batch sizes application +changefeed.default_range_distribution_strategy enumeration default controls how changefeed work is distributed across nodes. 'default' defers to DistSQL for node selection and work distribution. 'balanced_simple' uses DistSQL for node selection but then attempts to evenly distribute ranges across those selected nodes for better load balancing. this setting does not override locality restrictions and can be overridden per-changefeed using the 'range_distribution_strategy' option. [default = 0, balanced_simple = 1] application +changefeed.event_consumer_worker_queue_size integer 16 if changefeed.event_consumer_workers is enabled, this setting sets the maxmimum number of events which a worker can buffer application +changefeed.event_consumer_workers integer 0 the number of workers to use when processing events: <0 disables, 0 assigns a reasonable default, >0 assigns the setting value. for experimental/core changefeeds and changefeeds using parquet format, this is disabled application +changefeed.fast_gzip.enabled boolean true use fast gzip implementation application +changefeed.span_checkpoint.lag_threshold (alias: changefeed.frontier_highwater_lag_checkpoint_threshold) duration 10m0s the amount of time a changefeed's lagging (slowest) spans must lag behind its leading (fastest) spans before a span-level checkpoint to save leading span progress is written; if 0, span-level checkpoints due to lagging spans is disabled application +changefeed.kafka.max_request_size byte size 256 MiB "the maximum number of uncompressed bytes sent in a single request to a Kafka broker; lowering this value helps avoid spurious ""message too large"" errors that can occur when multiple messages are combined into a single batch; this setting is overridden by the per-changefeed Flush { MaxBytes: } option" application 268435456 +changefeed.kafka_v2_error_details.enabled boolean true if enabled, Kafka v2 sinks will include the message key, size, and MVCC timestamp in message too large errors application +changefeed.memory.per_changefeed_limit byte size 512 MiB controls amount of data that can be buffered per changefeed application +changefeed.resolved_timestamp.min_update_interval (alias: changefeed.min_highwater_advance) duration 0s minimum amount of time that must have elapsed since the last time a changefeed's resolved timestamp was updated before it is eligible to be updated again; default of 0 means no minimum interval is enforced but updating will still be limited by the average time it takes to checkpoint progress application +changefeed.node_throttle_config string specifies node level throttling configuration for all changefeeeds application +changefeed.partition_alg.enabled boolean false if enabled, allows specifying the partition_alg changefeed option to choose between fnv-1a (default) and murmur2 hash functions for Kafka partitioning. Only affects changefeeds using a kafka sink with changefeed.new_kafka_sink_enabled set to true. application +changefeed.progress.frontier_persistence.interval duration 30s minimum amount of time that must elapse before a changefeed will persist its entire span frontier again application +changefeed.protect_timestamp.max_age duration 96h0m0s fail the changefeed if the protected timestamp age exceeds this threshold; 0 disables expiration application +changefeed.protect_timestamp_interval duration 10m0s controls how often the changefeed forwards its protected timestamp to the resolved timestamp application +changefeed.schema_feed.read_with_priority_after duration 1m0s retry with high priority if we were not able to read descriptors for too long; 0 disables application +changefeed.sink_io_workers integer 0 the number of workers used by changefeeds when sending requests to the sink (currently the batching versions of webhook, pubsub, and kafka sinks that are enabled by changefeed.new__sink_enabled only): <0 disables, 0 assigns a reasonable default, >0 assigns the setting value application +cloudstorage.azure.concurrent_upload_buffers integer 1 controls the number of concurrent buffers that will be used by the Azure client when uploading chunks.Each buffer can buffer up to cloudstorage.write_chunk.size of memory during an upload application +cloudstorage.azure.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.azure.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.azure.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.azure.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.gs.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.gs.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.gs.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.gs.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.http.custom_ca string custom root CA (appended to system's default CAs) for verifying certificates when interacting with HTTPS storage application +cloudstorage.http.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.http.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.http.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.http.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.nodelocal.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.nodelocal.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.nodelocal.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.nodelocal.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.nullsink.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.nullsink.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.nullsink.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.nullsink.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.s3.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.s3.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.s3.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.s3.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.timeout duration 10m0s the timeout for import/export storage operations application +cloudstorage.userfile.read.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.userfile.read.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.userfile.write.node_burst_limit byte size 0 B burst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cloudstorage.userfile.write.node_rate_limit byte size 0 B limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zero application +cluster.auto_upgrade.enabled boolean true when true, enables automatic finalization of major version upgrades once all cluster nodes are running an upgraded binary application +cluster.organization string organization name system-visible +cluster.preserve_downgrade_option string disable (automatic or manual) cluster version upgrade from the specified version until reset application +debug.zip.redact_addresses.enabled boolean false enables the redaction of hostnames and ip addresses in debug zip application +diagnostics.active_query_dumps.enabled boolean true experimental: enable dumping of anonymized active queries to disk when node is under memory pressure system-visible +diagnostics.forced_sql_stat_reset.interval duration 2h0m0s interval after which the reported SQL Stats are reset even if not collected by telemetry reporter. It has a max value of 24H. application 0s 24h0m0s +diagnostics.memory_monitoring_dumps.enabled boolean true enable dumping of memory monitoring state at the same time as heap profiles are taken system-visible +diagnostics.reporting.enabled boolean true enable reporting diagnostic metrics to cockroach labs, but is ignored for Trial or Free licenses application +diagnostics.reporting.interval duration 1h0m0s interval at which diagnostics data should be reported application +enterprise.license string the encoded cluster license system-visible +external.graphite.endpoint string if nonempty, push server metrics to the Graphite or Carbon server at the specified host:port application +external.graphite.interval duration 10s the interval at which metrics are pushed to Graphite (if enabled) application 0s 15m0s +feature.backup.enabled boolean true set to true to enable backups, false to disable; default is true application +feature.changefeed.enabled boolean true set to true to enable changefeeds, false to disable; default is true application +feature.export.enabled boolean true set to true to enable exports, false to disable; default is true application +feature.import.enabled boolean true set to true to enable imports, false to disable; default is true application +feature.infer_rbr_region_col_using_constraint.enabled boolean false set to true to enable looking up the region column via a foreign key constraint in a REGIONAL BY ROW table, false to disable; default is false application +feature.restore.enabled boolean true set to true to enable restore, false to disable; default is true application +feature.schema_change.enabled boolean true set to true to enable schema changes, false to disable; default is true application +feature.stats.enabled boolean true set to true to enable CREATE STATISTICS/ANALYZE, false to disable; default is true application +feature.vector_index.enabled boolean true set to true to enable vector indexes, false to disable; default is true application +jobs.retention_time duration 336h0m0s the amount of time for which records for completed jobs are retained application +kv.bulk_sst.target_size byte size 16 MiB target size for SSTs emitted from export requests; export requests (i.e. BACKUP) may buffer up to the sum of kv.bulk_sst.target_size and kv.bulk_sst.max_allowed_overage in memory system-visible +kv.closed_timestamp.follower_reads.enabled (alias: kv.closed_timestamp.follower_reads_enabled) boolean true allow (all) replicas to serve consistent historical reads based on closed timestamp information system-visible +kv.closed_timestamp.lead_for_global_reads_auto_tune.enabled boolean false if enabled, observed network latency between leaseholders and their furthest follower will be used to adjust closed timestamp policies for rangesranges configured to serve global reads. kv.closed_timestamp.lead_for_global_reads_override takes precedence if set. system-visible +kv.closed_timestamp.lead_for_global_reads_override duration 0s if nonzero, overrides the lead time that global_read ranges use to publish closed timestamps system-visible +kv.closed_timestamp.side_transport_interval duration 200ms the interval at which the closed timestamp side-transport attempts to advance each range's closed timestamp; set to 0 to disable the side-transport system-visible +kv.closed_timestamp.side_transport_pacing_refresh_interval duration 10ms the refresh interval for the task pacer that controls pacing of sending sidetransport updates to avoid overloading the system when many connections are waiting system-visible +kv.closed_timestamp.side_transport_pacing_smear_interval duration 1ms the smear interval for the task pacer that controls the amount of time each paced batch is going to take when broadcasting sidetransport updates system-visible +kv.closed_timestamp.target_duration duration 3s if nonzero, attempt to provide closed timestamp notifications for timestamps trailing cluster time by approximately this duration system-visible +kv.dist_sender.circuit_breaker.cancellation.enabled boolean true when enabled, in-flight requests will be cancelled when the circuit breaker trips application +kv.dist_sender.circuit_breaker.cancellation.write_grace_period duration 10s how long after the circuit breaker trips to cancel write requests (these can't retry internally, so should be long enough to allow quorum/lease recovery) application 0s 1m0s +kv.dist_sender.circuit_breaker.probe.interval duration 3s interval between replica probes application +kv.dist_sender.circuit_breaker.probe.threshold duration 3s duration of errors or stalls after which a replica will be probed application +kv.dist_sender.circuit_breaker.probe.timeout duration 3s timeout for replica probes application +kv.dist_sender.circuit_breakers.mode enumeration liveness range only set of ranges to trip circuit breakers for failing or stalled replicas [no ranges = 0, liveness range only = 1, all ranges = 2] application +kv.protectedts.reconciliation.interval duration 5m0s the frequency for reconciling jobs with protected timestamp records system-visible +kv.rangefeed.client.stream_startup_rate integer 100 controls the rate per second the client will initiate new rangefeed stream for a single range; 0 implies unlimited application +kv.rangefeed.closed_timestamp_refresh_interval duration 3s the interval at which closed-timestamp updatesare delivered to rangefeeds; set to 0 to use kv.closed_timestamp.side_transport_interval system-visible +kv.rangefeed.enabled boolean false if set, rangefeed registration is enabled system-visible +kv.transaction.max_intents_and_locks integer 0 maximum count of inserts or durable locks for a single transactions, 0 to disable application +kv.transaction.max_intents_bytes integer 4194304 maximum number of bytes used to track locks in transactions application +kv.transaction.max_refresh_spans_bytes integer 4194304 maximum number of bytes used to track refresh spans in serializable transactions application +kv.transaction.randomized_anchor_key.enabled boolean false dictates whether a transactions anchor key is randomized or not application +kv.transaction.reject_over_max_intents_budget.enabled boolean false if set, transactions that exceed their lock tracking budget (kv.transaction.max_intents_bytes) are rejected instead of having their lock spans imprecisely compressed application +kv.transaction.write_buffering.enabled boolean true if enabled, transactional writes are buffered on the client application +kv.transaction.write_buffering.max_buffer_size byte size 4.0 MiB if non-zero, defines that maximum size of the buffer that will be used to buffer transactional writes per-transaction application +kv.transaction.write_pipelining.locking_reads.enabled boolean true if enabled, transactional locking reads are pipelined through Raft consensus application +kv.transaction.write_pipelining.ranged_writes.enabled boolean true if enabled, transactional ranged writes are pipelined through Raft consensus application +kv.transaction.write_pipelining.enabled (alias: kv.transaction.write_pipelining_enabled) boolean true if enabled, transactional writes are pipelined through Raft consensus application +kv.transaction.write_pipelining.max_batch_size (alias: kv.transaction.write_pipelining_max_batch_size) integer 128 if non-zero, defines that maximum size batch that will be pipelined through Raft consensus application +obs.ash.buffer_size integer 1000000 number of ASH samples to retain in memory system-visible +obs.ash.enabled boolean false enable active session history sampling system-visible +obs.ash.log_interval duration 10m0s interval between periodic ASH top-N workload summary logs; also used as the lookback window for ASH reports written by the env sampler profiler system-visible +obs.ash.log_top_n integer 10 maximum number of entries in periodic ASH workload summary, ranked by sample count descending system-visible +obs.ash.response_limit integer 10000 maximum number of ASH samples returned per node in fan-out responses application +obs.ash.sample_interval duration 1s interval between ASH samples system-visible +obs.metrics_scrape.default_visibility enumeration all controls the default metric visibility level for the metrics scrape endpoints [internal = -1, all = 0, support = 1, essential = 2] application +obs.tablemetadata.automatic_updates.enabled boolean false enables automatic updates of the table metadata cache system.table_metadata application +obs.tablemetadata.data_valid_duration duration 20m0s the duration for which the data in system.table_metadata is considered valid application 1m0s +schedules.backup.gc_protection.enabled boolean true enable chaining of GC protection across backups run as part of a schedule application +security.client_cert.san_required.enabled boolean false mandates a requirement for client certs to contain SAN system-visible +security.client_cert.subject_required.enabled boolean false mandates a requirement for subject role to be set for db user system-visible +security.ocsp.mode enumeration off use OCSP to check whether TLS certificates are revoked. If the OCSP server is unreachable, in strict mode all certificates will be rejected and in lax mode all certificates will be accepted. [off = 0, lax = 1, strict = 2] application +security.ocsp.timeout duration 3s timeout before considering the OCSP server unreachable application +security.provisioning.ldap.enabled boolean false enables automatic creation of SQL users upon successful LDAP login application +server.auth_log.sql_connections.enabled boolean false if set, log SQL client connect and disconnect events to the SESSIONS log channel (note: may hinder performance on loaded nodes) application +server.auth_log.sql_sessions.enabled boolean false if set, log verbose SQL session authentication events to the SESSIONS log channel (note: may hinder performance on loaded nodes). Session start and end events are always logged regardless of this setting; disable the SESSIONS log channel to suppress them. application +server.authentication_cache.enabled boolean true enables a cache used during authentication to avoid lookups to system tables when retrieving per-user authentication-related information application +server.child_metrics.enabled boolean false enables the exporting of child metrics, additional prometheus time series with extra labels application +server.child_metrics.include_aggregate.enabled boolean true include the reporting of the aggregate time series when child metrics are enabled. This cluster setting has no effect if child metrics are disabled. application +server.clock.forward_jump_check.enabled (alias: server.clock.forward_jump_check_enabled) boolean false if enabled, forward clock jumps > max_offset/2 will cause a panic application +server.clock.persist_upper_bound_interval duration 0s the interval between persisting the wall time upper bound of the clock. The clock does not generate a wall time greater than the persisted timestamp and will panic if it sees a wall time greater than this value. When cockroach starts, it waits for the wall time to catch-up till this persisted timestamp. This guarantees monotonic wall time across server restarts. Not setting this or setting a value of 0 disables this feature. application +server.eventlog.enabled boolean true if set, logged notable events are also stored in the table system.eventlog application +server.eventlog.ttl duration 2160h0m0s if nonzero, entries in system.eventlog older than this duration are periodically purged application +server.host_based_authentication.configuration string host-based authentication configuration to use during connection authentication application +server.hot_ranges_request.node.timeout duration 5m0s the duration allowed for a single node to return hot range data before the request is cancelled; if set to 0, there is no timeout application +server.hsts.enabled boolean false if true, HSTS headers will be sent along with all HTTP requests. The headers will contain a max-age setting of one year. Browsers honoring the header will always use HTTPS to access the DB Console. Ensure that TLS is correctly configured prior to enabling. application +server.http.base_path string / path to redirect the user to upon succcessful login application +server.identity_map.configuration string system-identity to database-username mappings application +server.jwt_authentication.audience string sets accepted audience values for JWT logins over the SQL interface application +server.jwt_authentication.claim string sets the JWT claim that is parsed to get the username; may be a simple claim name (e.g. email) or a JSON Pointer per RFC 6901 (e.g. /kubernetes.io/serviceaccount/uid) application +server.jwt_authentication.client.timeout duration 15s sets the client timeout for external calls made during JWT authentication (e.g. fetching JWKS, etc.) application +server.jwt_authentication.enabled boolean false enables or disables JWT login for the SQL interface application +server.jwt_authentication.issuers.configuration (alias: server.jwt_authentication.issuers) string sets accepted issuer values for JWT logins over the SQL interface which can be a single issuer URL string or a JSON string containing an array of issuer URLs or a JSON object containing map of issuer URLS to JWKS URIs application +server.jwt_authentication.issuers.custom_ca string sets the PEM encoded custom root CA for verifying certificates while fetching JWKS application +server.jwt_authentication.jwks string "{""keys"":[]}" sets the public key set for JWT logins over the SQL interface (JWKS format) application +server.jwt_authentication.jwks_auto_fetch.enabled boolean false enables or disables automatic fetching of JWKS from the issuer's well-known endpoint or JWKS URI set in JWTAuthIssuersConfig. If this is enabled, the server.jwt_authentication.jwks will be ignored. application +server.ldap_authentication.client.tls_certificate string sets the client certificate PEM for establishing mTLS connection with LDAP server application +server.ldap_authentication.client.tls_key string sets the client key PEM for establishing mTLS connection with LDAP server application +server.ldap_authentication.domain.custom_ca string sets the PEM encoded custom root CA for verifying domain certificates when establishing connection with LDAP server application +server.log_gc.max_deletions_per_cycle integer 1000 the maximum number of entries to delete on each purge of log-like system tables application +server.log_gc.period duration 1h0m0s the period at which log-like system tables are checked for old entries application +server.max_connections_per_gateway integer -1 the maximum number of SQL connections per gateway allowed at a given time (note: this will only limit future connection attempts and will not affect already established connections). Negative values result in unlimited number of connections. Superusers are not affected by this limit. application +server.max_open_transactions_per_gateway integer -1 the maximum number of open SQL transactions per gateway allowed at a given time. Negative values result in unlimited number of connections. Superusers are not affected by this limit. application +server.oidc_authentication.autologin.enabled (alias: server.oidc_authentication.autologin) boolean false if true, logged-out visitors to the DB Console will be automatically redirected to the OIDC login endpoint application +server.oidc_authentication.button_text string Log in with your OIDC provider text to show on button on DB Console login page to login with your OIDC provider (only shown if OIDC is enabled) application +server.oidc_authentication.claim_json_key string sets JSON key of principal to extract from payload after OIDC authentication completes (usually email or sid) application +server.oidc_authentication.client.timeout duration 15s sets the client timeout for external calls made during OIDC authentication (e.g. authorization code flow, etc.) application +server.oidc_authentication.client_id string sets OIDC client id application +server.oidc_authentication.client_secret string sets OIDC client secret application +server.oidc_authentication.enabled boolean false enables or disabled OIDC login for the DB Console application +server.oidc_authentication.principal_regex string (.+) regular expression to apply to extracted principal (see claim_json_key setting) to translate to SQL user (golang regex format, must include 1 grouping to extract) application +server.oidc_authentication.provider.custom_ca string sets the PEM encoded custom root CA for verifying certificates while authenticating through the OIDC provider application +server.oidc_authentication.provider_url string sets OIDC provider URL ({provider_url}/.well-known/openid-configuration must resolve) application +server.oidc_authentication.redirect_url string https://localhost:8080/oidc/v1/callback sets OIDC redirect URL via a URL string or a JSON string containing a required `redirect_urls` key with an object that maps from region keys to URL strings (URLs should point to your load balancer and must route to the path /oidc/v1/callback) application +server.oidc_authentication.scopes string openid sets OIDC scopes to include with authentication request (space delimited list of strings, required to start with `openid`) application +server.oidc_authentication.tls_insecure_skip_verify.enabled boolean false if true, TLS certificate verification is skipped for connections to the OIDC provider (insecure) application +server.redact_sensitive_settings.enabled boolean false enables or disables the redaction of sensitive settings in the output of SHOW CLUSTER SETTINGS and SHOW ALL CLUSTER SETTINGS for users without the MODIFYCLUSTERSETTING privilege application +server.shutdown.connections.timeout (alias: server.shutdown.connection_wait) duration 0s the maximum amount of time a server waits for all SQL connections to be closed before proceeding with a drain. (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting) application 0s 10h0m0s +server.shutdown.initial_wait (alias: server.shutdown.drain_wait) duration 0s the amount of time a server waits in an unready state before proceeding with a drain (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting. --drain-wait is to specify the duration of the whole draining process, while server.shutdown.initial_wait is to set the wait time for health probes to notice that the node is not ready.) application 0s 10h0m0s +server.shutdown.transactions.timeout (alias: server.shutdown.query_wait) duration 10s the timeout for waiting for active transactions to finish during a drain (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting) application 0s 10h0m0s +server.sql_tcp_keep_alive.count integer 3 maximum number of probes that will be sent out before a connection is dropped because it's unresponsive (Linux and Darwin only). The value 0 is the operating system default. application +server.sql_tcp_keep_alive.idle duration 0s time with no network activity before sending a TCP keepalive probe (Linux and Darwin only). If 0, the value of server.sql_tcp_keep_alive.interval is used. The value 0 is the operating system default. application 0s +server.sql_tcp_keep_alive.interval duration 10s time between keep alive probes and idle time before probes are sent out. The value 0 is the operating system default. application 0s +server.sql_tcp_user.timeout duration 0s specifies the maximum amount of time that transmitted data can remain unacknowledged before the underlying TCP connection is forcefully closed. (Linux and Darwin only). The value 0 is the operating system default. application 0s +server.time_until_store_dead duration 5m0s the time after which if there is no new gossiped information about a store, it is considered dead application 25s +server.user_login.cert_password_method.auto_scram_promotion.enabled boolean true whether to automatically promote cert-password authentication to use SCRAM application +server.user_login.downgrade_scram_stored_passwords_to_bcrypt.enabled boolean true if server.user_login.password_encryption=crdb-bcrypt, this controls whether to automatically re-encode stored passwords using scram-sha-256 to crdb-bcrypt application +server.user_login.min_password_length integer 1 the minimum length accepted for passwords set in cleartext via SQL. Note that a value lower than 1 is ignored: passwords cannot be empty in any case. This setting only applies when adding new users or altering an existing user's password; it will not affect existing logins. application +server.user_login.password_encryption enumeration scram-sha-256 which hash method to use to encode cleartext passwords passed via ALTER/CREATE USER/ROLE WITH PASSWORD [crdb-bcrypt = 2, scram-sha-256 = 3] application +server.user_login.password_hashes.default_cost.crdb_bcrypt integer 10 the hashing cost to use when storing passwords supplied as cleartext by SQL clients with the hashing method crdb-bcrypt (allowed range: 4-31) application +server.user_login.password_hashes.default_cost.scram_sha_256 integer 10610 the hashing cost to use when storing passwords supplied as cleartext by SQL clients with the hashing method scram-sha-256 (allowed range: 4096-240000000000) application 4096 240000000000 +server.user_login.rehash_scram_stored_passwords_on_cost_change.enabled boolean true if server.user_login.password_hashes.default_cost.scram_sha_256 differs from, the cost in a stored hash, this controls whether to automatically re-encode stored passwords using scram-sha-256 with the new default cost application +server.user_login.timeout duration 10s timeout after which client authentication times out if some system range is unavailable (0 = no timeout) application +server.user_login.upgrade_bcrypt_stored_passwords_to_scram.enabled boolean true if server.user_login.password_encryption=scram-sha-256, this controls whether to automatically re-encode stored passwords using crdb-bcrypt to scram-sha-256 application +server.web_session.purge.ttl duration 1h0m0s if nonzero, entries in system.web_sessions older than this duration are periodically purged application +server.web_session.timeout (alias: server.web_session_timeout) duration 168h0m0s the duration that a newly created web session will be valid application +sql.auth.change_own_password.enabled boolean false controls whether a user is allowed to change their own password, even if they have no other privileges application +sql.auth.grant_option_for_owner.enabled boolean true determines whether the GRANT OPTION for privileges is implicitly given to the owner of an object application +sql.auth.grant_option_inheritance.enabled boolean true determines whether the GRANT OPTION for privileges is inherited through role membership application +sql.auth.public_schema_create_privilege.enabled boolean true determines whether to grant all users the CREATE privileges on the public schema when it is created application +sql.auth.skip_underlying_view_privilege_checks.enabled boolean false determines whether to skip privilege checks on tables underlying views. When enabled, users with SELECT privileges on a view can query it regardless of their privileges on the underlying tables, and row-level security policies are evaluated as the invoking user rather than the view owner. This restores pre-v26.2 behavior. application +sql.catalog.allow_leased_descriptors.enabled boolean true if true, catalog views (crdb_internal, information_schema, pg_catalog) can use leased descriptors for improved performance application +sql.closed_session_cache.capacity integer 1000 the maximum number of sessions in the cache application +sql.closed_session_cache.time_to_live integer 3600 the maximum time to live, in seconds application +sql.contention.event_store.capacity byte size 64 MiB the in-memory storage capacity per-node of contention event store application +sql.contention.event_store.duration_threshold duration 0s minimum contention duration to cause the contention events to be collected into crdb_internal.transaction_contention_events application +sql.contention.record_serialization_conflicts.enabled boolean true enables recording 40001 errors with conflicting txn meta as SERIALIZATION_CONFLICTcontention events into crdb_internal.transaction_contention_events application +sql.contention.txn_id_cache.max_size byte size 64 MiB the maximum byte size TxnID cache will use (set to 0 to disable) application +sql.crdb_internal.tsdb_query.max_rows integer 500000 maximum number of rows a single crdb_internal.tsdb_query call may return; queries that would return more error before any rows are surfaced. Set to 0 to disable the cap. application 0 5000000 +sql.crdb_internal.tsdb_query.max_time_range duration 168h0m0s maximum effective time range that a single crdb_internal.tsdb_query call may cover; the requested end_time is first clamped to the current wall-clock time before this cap is checked application 0s 720h0m0s +sql.cross_db_fks.enabled boolean false if true, creating foreign key references across databases is allowed application +sql.cross_db_sequence_owners.enabled boolean false if true, creating sequences owned by tables from other databases is allowed application +sql.cross_db_sequence_references.enabled boolean false if true, sequences referenced by tables from other databases are allowed application +sql.cross_db_views.enabled boolean false if true, creating views that refer to other databases is allowed application sql.defaults.cost_scans_with_default_col_size.enabled boolean false "setting to true uses the same size for all columns to compute scan cost This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.datestyle enumeration iso, mdy "default value for DateStyle session setting [iso, mdy = 0, iso, dmy = 1, iso, ymd = 2] This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.default_hash_sharded_index_bucket_count integer 16 "used as bucket count if bucket count is not specified in hash sharded index definition This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.default_int_size integer 8 "the size, in bytes, of an INT type This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.disallow_full_table_scans.enabled boolean false "setting to true rejects queries that have planned a full table scan; set large_full_scan_rows > 0 to allow small full table scans estimated to read fewer than large_full_scan_rows This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.distsql enumeration auto "default distributed SQL execution mode [off = 0, auto = 1, on = 2, always = 3] This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.experimental_alter_column_type.enabled boolean false "default value for experimental_alter_column_type session setting; enables the use of ALTER COLUMN TYPE for general conversions This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.experimental_distsql_planning enumeration off "default experimental_distsql_planning mode; enables experimental opt-driven DistSQL planning [off = 0, on = 1] This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.experimental_enable_unique_without_index_constraints.enabled boolean false "default value for experimental_enable_unique_without_index_constraints session setting;disables unique without index constraints by default This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.experimental_implicit_column_partitioning.enabled boolean false "default value for experimental_enable_temp_tables; allows for the use of implicit column partitioning This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.experimental_temporary_tables.enabled boolean false "default value for experimental_enable_temp_tables; allows for use of temporary tables by default This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.foreign_key_cascades_limit integer 10000 "default value for foreign_key_cascades_limit session setting; limits the number of cascading operations that run as part of a single query This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.idle_in_session_timeout duration 0s "default value for the idle_in_session_timeout; default value for the idle_in_session_timeout session setting; controls the duration a session is permitted to idle before the session is terminated; if set to 0, there is no timeout This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.idle_in_transaction_session_timeout duration 0s "default value for the idle_in_transaction_session_timeout; controls the duration a session is permitted to idle in a transaction before the session is terminated; if set to 0, there is no timeout This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.implicit_select_for_update.enabled boolean true "default value for enable_implicit_select_for_update session setting; enables FOR UPDATE locking during the row-fetch phase of mutation statements This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.insert_fast_path.enabled boolean true "default value for enable_insert_fast_path session setting; enables a specialized insert path This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.intervalstyle enumeration postgres "default value for IntervalStyle session setting [postgres = 0, iso_8601 = 1, sql_standard = 2] This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.large_full_scan_rows float 0 "default value for large_full_scan_rows session variable which determines the table size at which full scans are considered large and disallowed when disallow_full_table_scans is set to true; set to 0 to reject all full table or full index scans when disallow_full_table_scans is true This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.locality_optimized_partitioned_index_scan.enabled boolean true "default value for locality_optimized_partitioned_index_scan session setting; enables searching for rows in the current region before searching remote regions This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.lock_timeout duration 0s "default value for the lock_timeout; default value for the lock_timeout session setting; controls the duration a query is permitted to wait while attempting to acquire a lock on a key or while blocking on an existing lock in order to perform a non-locking read on a key; if set to 0, there is no timeout This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.on_update_rehome_row.enabled boolean true "default value for on_update_rehome_row; enables ON UPDATE rehome_row() expressions to trigger on updates This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.optimizer_use_histograms.enabled boolean true "default value for optimizer_use_histograms session setting; enables usage of histograms in the optimizer by default This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.optimizer_use_multicol_stats.enabled boolean true "default value for optimizer_use_multicol_stats session setting; enables usage of multi-column stats in the optimizer by default This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.override_alter_primary_region_in_super_region.enabled boolean false "default value for override_alter_primary_region_in_super_region; allows for altering the primary region even if the primary region is a member of a super region This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.override_multi_region_zone_config.enabled boolean false "default value for override_multi_region_zone_config; allows for overriding the zone configs of a multi-region table or database This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.prefer_lookup_joins_for_fks.enabled boolean false "default value for prefer_lookup_joins_for_fks session setting; causes foreign key operations to use lookup joins when possible This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.primary_region string "if not empty, all databases created without a PRIMARY REGION will implicitly have the given PRIMARY REGION This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.reorder_joins_limit integer 8 "default number of joins to reorder This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application 0 63 sql.defaults.require_explicit_primary_keys.enabled boolean false "default value for requiring explicit primary keys in CREATE TABLE statements This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.results_buffer.size byte size 512 KiB "default size of the buffer that accumulates results for a statement or a batch of statements before they are sent to the client. This can be overridden on an individual connection with the 'results_buffer_size' parameter. Note that auto-retries generally only happen while no results have been delivered to the client, so reducing this size can increase the number of retriable errors a client receives. On the other hand, increasing the buffer size can increase the delay until the client receives the first result row. Updating the setting only affects new connections. Setting to 0 disables any buffering. This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.serial_normalization enumeration rowid "default handling of SERIAL in table definitions [rowid = 0, virtual_sequence = 1, sql_sequence = 2, sql_sequence_cached = 3, unordered_rowid = 4, sql_sequence_cached_node = 5] This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.statement_timeout duration 0s "default value for the statement_timeout; default value for the statement_timeout session setting; controls the duration a query is permitted to run before it is canceled; if set to 0, there is no timeout This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.stub_catalog_tables.enabled boolean true "default value for stub_catalog_tables session setting This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.transaction_rows_read_err integer 0 "the limit for the number of rows read by a SQL transaction which - once exceeded - will fail the transaction (or will trigger a logging event to SQL_INTERNAL_PERF for internal transactions); use 0 to disable This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.transaction_rows_read_log integer 0 "the threshold for the number of rows read by a SQL transaction which - once exceeded - will trigger a logging event to SQL_PERF (or SQL_INTERNAL_PERF for internal transactions); use 0 to disable This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.transaction_rows_written_err integer 0 "the limit for the number of rows written by a SQL transaction which - once exceeded - will fail the transaction (or will trigger a logging event to SQL_INTERNAL_PERF for internal transactions); use 0 to disable This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.transaction_rows_written_log integer 0 "the threshold for the number of rows written by a SQL transaction which - once exceeded - will trigger a logging event to SQL_PERF (or SQL_INTERNAL_PERF for internal transactions); use 0 to disable This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.use_declarative_schema_changer enumeration on "default value for use_declarative_schema_changer session setting;disables new schema changer by default [off = 0, on = 1, unsafe = 2, unsafe_always = 3] This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.vectorize enumeration on "default vectorize mode [on = 0, on = 1, on = 2, experimental_always = 3, off = 4] This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application sql.defaults.zigzag_join.enabled boolean false "default value for enable_zigzag_join session setting; disallows use of zig-zag join by default This cluster setting is being kept to preserve backwards-compatibility. -This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application -sql.distsql.temp_storage.workmem byte size 64 MiB maximum amount of memory in bytes a processor can use before falling back to temp storage application -sql.guardrails.max_row_size_err byte size 80 MiB maximum size of row (or column family if multiple column families are in use) that SQL can write to the database, above which an error is returned; use 0 to disable application -sql.guardrails.max_row_size_log byte size 16 MiB maximum size of row (or column family if multiple column families are in use) that SQL can write to the database, above which an event is logged to SQL_PERF (or SQL_INTERNAL_PERF if the mutating statement was internal); use 0 to disable application -sql.hash_sharded_range_pre_split.max integer 16 max pre-split ranges to have when adding hash sharded index to an existing table application -sql.index_recommendation.drop_unused_duration duration 168h0m0s the index unused duration at which we begin to recommend dropping the index application -sql.insights.anomaly_detection.enabled boolean true enable per-fingerprint latency recording and anomaly detection application -sql.insights.anomaly_detection.latency_threshold duration 50ms statements must surpass this threshold to trigger anomaly detection and identification application -sql.insights.anomaly_detection.memory_limit byte size 1.0 MiB the maximum amount of memory allowed for tracking statement latencies application -sql.insights.execution_insights_capacity integer 1000 the size of the per-node store of execution insights application -sql.insights.high_retry_count.threshold integer 10 the number of retries a slow statement must have undergone for its high retry count to be highlighted as a potential problem application -sql.insights.latency_threshold duration 100ms amount of time after which an executing statement is considered slow. Use 0 to disable. application -sql.log.failed_query.enabled boolean false when set to true, every SQL statement that ends in an error is logged to a secondary logger on each node as a `failed_query` event application -sql.log.failed_query.internal_queries.enabled boolean false when set to true, internal queries that end in an error are logged to a separate `failed_query_internal` event. Must have `sql.log.failed_query.enabled` set for this setting to have any effect. application -sql.log.redact_names.enabled boolean false if set, schema object identifers are redacted in SQL statements that appear in event logs application -sql.log.scan_row_count_misestimate.enabled boolean false when set to true, log a warning when a scan's actual row count differs significantly from the optimizer's estimate application -sql.log.slow_query.experimental_full_table_scans.enabled boolean false when set to true, statements that perform a full table/index scan will be logged to the slow query log even if they do not meet the latency threshold. Must have the slow query log enabled for this setting to have any effect. application -sql.log.slow_query.internal_queries.enabled boolean false when set to true, internal queries which exceed the slow query log threshold are logged to a separate log. Must have the slow query log enabled for this setting to have any effect. application -sql.log.slow_query.latency_threshold duration 0s when set to non-zero, log statements whose service latency exceeds the threshold to a secondary logger on each node application -sql.log.user_audit string user/role-based audit logging configuration application -sql.log.user_audit.reduced_config.enabled boolean false enables logic to compute a reduced audit configuration, computing the audit configuration only once at session start instead of at each SQL event. The tradeoff with the increase in performance (~5%), is that changes to the audit configuration (user role memberships/cluster setting) are not reflected within session. Users will need to start a new session to see these changes in their auditing behaviour. application -sql.metrics.application_name.enabled boolean false when enabled, SQL metrics would export application name as and additional label as part of child metrics. The number of unique label combinations is limited to 5000 by default. application -sql.metrics.database_name.enabled boolean false when enabled, SQL metrics would export database name as and additional label as part of child metrics. The number of unique label combinations is limited to 5000 by default. application -sql.metrics.index_usage_stats.enabled boolean true collect per index usage statistics application -sql.metrics.max_mem_reported_stmt_fingerprints integer 100000 the maximum number of reported statement fingerprints stored in memory application -sql.metrics.max_mem_reported_txn_fingerprints integer 100000 the maximum number of reported transaction fingerprints stored in memory application -sql.metrics.max_mem_stmt_fingerprints integer 7500 the maximum number of statement fingerprints stored in memory application -sql.metrics.max_mem_txn_fingerprints integer 7500 the maximum number of transaction fingerprints stored in memory application -sql.metrics.statement_details.dump_to_logs.enabled (alias: sql.metrics.statement_details.dump_to_logs) boolean false dump collected statement statistics to node logs when periodically cleared application -sql.metrics.statement_details.enabled boolean true collect per-statement query statistics application -sql.metrics.statement_details.gateway_node.enabled boolean false save the gateway node for each statement fingerprint. If false, the value will be stored as 0. application -sql.metrics.statement_details.index_recommendation_collection.enabled boolean true generate an index recommendation for each fingerprint ID application -sql.metrics.statement_details.max_mem_reported_idx_recommendations integer 5000 the maximum number of reported index recommendation info stored in memory application -sql.metrics.statement_details.threshold duration 0s minimum execution time to cause statement statistics to be collected. If configured, no transaction stats are collected. application -sql.metrics.transaction_details.enabled boolean true collect per-application transaction statistics application -sql.multiple_modifications_of_table.enabled boolean false if true, allow statements containing multiple INSERT ON CONFLICT, UPSERT, UPDATE, or DELETE subqueries modifying the same table, at the risk of data corruption if the same row is modified multiple times by a single statement (multiple INSERT subqueries without ON CONFLICT cannot cause corruption and are always allowed) application -sql.multiregion.drop_primary_region.enabled boolean true allows dropping the PRIMARY REGION of a database if it is the last region application -sql.notices.enabled boolean true enable notices in the server/client protocol being sent application -sql.optimizer.uniqueness_checks_for_gen_random_uuid.enabled boolean false if enabled, uniqueness checks may be planned for mutations of UUID columns updated with gen_random_uuid(); otherwise, uniqueness is assumed due to near-zero collision probability application -sql.procedures.plpgsql.late_binding.enabled boolean false when true, PL/pgSQL procedure bodies are not resolved at creation time; references are resolved at CALL time instead, matching PostgreSQL PL/pgSQL semantics. Does not affect LANGUAGE SQL procedures or functions application -sql.schema.approx_max_object_count integer 20000 approximate maximum number of schema objects allowed in the cluster; the check uses cached statistics, so the actual count may slightly exceed this limit; set to 0 to disable application -sql.schema.auto_unlock.enabled boolean true controls whether DDL operations will attempt to automatically unlock and re-lock schema_locked tables. When this setting is false, DDL on schema_locked tables is blocked unless the user manually unlocks the table first. The schema_locked storage parameter improves changefeed performance by locking the table's schema from the perspective of the changefeed. application -sql.schema.telemetry.recurrence string @weekly cron-tab recurrence for SQL schema telemetry job system-visible -sql.spatial.experimental_box2d_comparison_operators.enabled boolean false enables the use of certain experimental box2d comparison operators application -sql.sqlcommenter.enabled boolean false enables support for sqlcommenter. Key value parsed from sqlcommenter comments will be included in sql insights and sql logs. See https://google.github.io/sqlcommenter/ for more details. application -sql.stats.activity.persisted_rows.max integer 200000 maximum number of rows of statement and transaction activity that will be persisted in the system tables application -sql.stats.automatic_collection.enabled boolean true automatic statistics collection mode application -sql.stats.automatic_collection.fraction_stale_rows float 0.2 target fraction of stale rows per table that will trigger a statistics refresh application -sql.stats.automatic_collection.min_stale_rows integer 500 target minimum number of stale rows per table that will trigger a statistics refresh application -sql.stats.automatic_extremes_concurrency_limit integer 128 determines the maximum number of concurrent automatic partial USING EXTREMES table statistics collection jobs application -sql.stats.automatic_full_collection.enabled boolean true automatic full statistics collection mode application -sql.stats.automatic_full_concurrency_limit integer See description. determines the maximum number of concurrent automatic full table statistics collection jobs. The default value is computed as the number of vCPUs in a node divided by 2. application -sql.stats.automatic_partial_collection.enabled boolean true automatic partial statistics collection mode application -sql.stats.automatic_partial_collection.fraction_stale_rows float 0.05 target fraction of stale rows per table that will trigger a partial statistics refresh application -sql.stats.automatic_partial_collection.min_stale_rows integer 100 target minimum number of stale rows per table that will trigger a partial statistics refresh application -sql.stats.canary_fraction float 0 probability that table statistics will use canary mode instead of stable mode for query planning [0.0-1.0] application -sql.stats.cleanup.recurrence string @hourly cron-tab recurrence for SQL Stats cleanup job application -sql.stats.detailed_latency_metrics.enabled boolean false label latency metrics with the statement fingerprint. Workloads with tens of thousands of distinct query fingerprints should leave this setting false. (experimental, affects performance for workloads with high fingerprint cardinality) application -sql.stats.error_on_concurrent_create_stats.enabled boolean false set to true to error on concurrent CREATE STATISTICS jobs, instead of skipping them application -sql.stats.flush.enabled boolean true if set, SQL execution statistics are periodically flushed to disk application -sql.stats.flush.interval duration 10m0s the interval at which SQL execution statistics are flushed to disk, this value must be less than or equal to 1 hour application -sql.stats.forecasts.enabled boolean true when true, enables generation of statistics forecasts by default for all tables application -sql.stats.forecasts.max_decrease float 0.3333333333333333 the most a prediction is allowed to decrease, expressed as the minimum ratio of the prediction to the lowest prior observation application -sql.stats.forecasts.min_goodness_of_fit float 0.95 the minimum R² (goodness of fit) measurement required from all predictive models to use a forecast application -sql.stats.forecasts.min_observations integer 3 the mimimum number of observed statistics required to produce a statistics forecast application -sql.stats.histogram_buckets.count integer 200 maximum number of histogram buckets to build during table statistics collection application -sql.stats.histogram_buckets.include_most_common_values.enabled boolean true whether to include most common values as histogram buckets application -sql.stats.histogram_buckets.max_fraction_most_common_values float 0.1 maximum fraction of histogram buckets to use for most common values application -sql.stats.histogram_collection.enabled boolean true histogram collection mode application -sql.stats.histogram_samples.count integer 0 number of rows sampled for histogram construction during table statistics collection. Not setting this or setting a value of 0 means that a reasonable sample size will be automatically picked based on the table size. application -sql.stats.multi_column_collection.enabled boolean true multi-column statistics collection mode application -sql.stats.non_default_columns.min_retention_period duration 24h0m0s minimum retention period for table statistics collected on non-default columns application -sql.stats.non_indexed_json_histograms.enabled boolean false set to true to collect table statistics histograms on non-indexed JSON columns application -sql.stats.persisted_rows.max integer 1000000 maximum number of rows of statement and transaction statistics that will be persisted in the system tables before compaction begins application -sql.stats.post_events.enabled boolean false if set, an event is logged for every successful CREATE STATISTICS job application -sql.stats.response.max integer 20000 the maximum number of statements and transaction stats returned in a CombinedStatements request application -sql.stats.response.show_internal.enabled boolean false controls if statistics for internal executions should be returned by the CombinedStatements and if internal sessions should be returned by the ListSessions endpoints. These endpoints are used to display statistics on the SQL Activity pages application -sql.stats.system_tables.enabled boolean true when true, enables use of statistics on system tables by the query optimizer application -sql.stats.system_tables_autostats.enabled boolean true when true, enables automatic collection of statistics on system tables application -sql.stats.table_statistics_cache.capacity integer 256 the maximum number of table statistics entries stored in the LRU cache. Each cache entry corresponds to a single table. application -sql.stats.virtual_computed_columns.enabled boolean true set to true to collect table statistics on virtual computed columns application -sql.subset_unique_fks.enabled boolean true if true, foreign keys may be backed by a unique constraint that covers only a strict subset of the foreign key's referenced columns (e.g. a parent with UNIQUE(a) can back an FK that references (a, b)); set to false to require strict matching, as required by the SQL standard and PostgreSQL application -sql.telemetry.query_sampling.enabled boolean false when set to true, executed queries will emit an event on the telemetry logging channel application -sql.telemetry.query_sampling.internal.enabled boolean false when set to true, internal queries will be sampled in telemetry logging application -sql.telemetry.query_sampling.max_event_frequency integer 8 the max event frequency (events per second) at which we sample executions for telemetry, note that it is recommended that this value shares a log-line limit of 10 logs per second on the telemetry pipeline with all other telemetry events. If sampling mode is set to 'transaction', this value is ignored. application -sql.telemetry.query_sampling.mode enumeration statement the execution level used for telemetry sampling. If set to 'statement', events are sampled at the statement execution level. If set to 'transaction', events are sampled at the transaction execution level, i.e. all statements for a transaction will be logged and are counted together as one sampled event (events are still emitted one per statement). [statement = 0, transaction = 1] application -sql.telemetry.transaction_sampling.max_event_frequency integer 8 the max event frequency (events per second) at which we sample transactions for telemetry. If sampling mode is set to 'statement', this setting is ignored. In practice, this means that we only sample a transaction if 1/max_event_frequency seconds have elapsed since the last transaction was sampled. application -sql.telemetry.transaction_sampling.statement_events_per_transaction.max integer 50 the maximum number of statement events to log for every sampled transaction. Note that statements that are logged by force do not adhere to this limit. application -sql.temp_object_cleaner.batch_size integer 1000 number of temporary objects to drop per transaction during cleanup application -sql.temp_object_cleaner.cleanup_interval duration 30m0s how often to clean up orphaned temporary objects application -sql.temp_object_cleaner.wait_interval duration 30m0s how long after creation a temporary object will be cleaned up application -sql.log.all_statements.enabled (alias: sql.trace.log_statement_execute) boolean false set to true to enable logging of all executed statements application -sql.trace.stmt.enable_threshold duration 0s enables tracing on all statements; statements executing for longer than this duration will have their trace logged (set to 0 to disable); note that enabling this may have a negative performance impact; this setting applies to individual statements within a transaction and is therefore finer-grained than sql.trace.txn.enable_threshold application -sql.trace.txn.enable_threshold duration 0s enables transaction traces for transactions exceeding this duration, used with `sql.trace.txn.sample_rate` application -sql.trace.txn.include_internal.enabled boolean true enables tracing internal transactions as well as external workload using sample rate and threshold settings application -sql.trace.txn.jaeger_json_output.enabled boolean false enables Jaeger JSON output for transaction traces in logs application -sql.trace.txn.sample_rate float 1 enables probabilistic transaction tracing. It should be used in conjunction with `sql.trace.txn.enable_threshold`. A percentage of transactions between 0 and 1.0 will have tracing enabled, and only those which exceed the configured threshold will be logged. application -sql.ttl.changefeed_replication.disabled boolean false if true, deletes issued by TTL will not be replicated via changefeeds (this setting will be ignored by changefeeds that have the ignore_disable_changefeed_replication option set; such changefeeds will continue to replicate all TTL deletes) application -sql.ttl.default_delete_batch_size integer 100 default amount of rows to delete in a single query during a TTL job application -sql.ttl.default_delete_rate_limit integer 100 default delete rate limit (rows per second) per node for each TTL job. Use 0 to signify no rate limit. application -sql.ttl.default_select_batch_size integer 500 default amount of rows to select in a single query during a TTL job application -sql.ttl.default_select_rate_limit integer 0 default select rate limit (rows per second) per node for each TTL job. Use 0 to signify no rate limit. application -sql.ttl.job.enabled boolean true whether the TTL job is enabled application -sql.txn.read_committed_isolation.enabled boolean true set to true to allow transactions to use the READ COMMITTED isolation level if specified by BEGIN/SET commands application -sql.txn.repeatable_read_isolation.enabled (alias: sql.txn.snapshot_isolation.enabled) boolean false set to true to allow transactions to use the REPEATABLE READ isolation level if specified by BEGIN/SET commands application -sql.txn_fingerprint_id_cache.capacity integer 100 the maximum number of txn fingerprint IDs stored application -sql.vecindex.stalled_op.timeout duration 100ms amount of time before other vector index workers will assist with a stalled background fixup application -storage.delete_compaction_excise.enabled boolean true set to false to direct Pebble to not partially excise sstables in delete-only compactions system-visible -storage.ingestion.value_blocks.enabled boolean true set to true to enable writing of value blocks in ingestion sstables application -storage.max_sync_duration duration 20s maximum duration for disk operations; any operations that take longer than this setting trigger a warning log entry or process crash system-visible -storage.max_sync_duration.fatal.enabled boolean true if true, fatal the process when a disk operation exceeds storage.max_sync_duration application -storage.sstable.compression_algorithm enumeration fastest determines the compression algorithm to use for Pebble stores [snappy = 1, zstd = 2, none = 3, minlz = 4, fastest = 5, balanced = 6, good = 7, fast = 8] system-visible -timeseries.storage.resolution_10s.ttl duration 240h0m0s the maximum age of time series data stored at the 10 second resolution. Data older than this is subject to rollup and deletion. system-visible -timeseries.storage.resolution_1m.ttl duration 240h0m0s the maximum age of time series data stored at the 1 minute resolution. Data older than this is subject to rollup and deletion. system-visible -timeseries.storage.resolution_30m.ttl duration 2160h0m0s the maximum age of time series data stored at the 30 minute resolution. Data older than this is subject to deletion. system-visible -trace.debug_http_endpoint.enabled (alias: trace.debug.enable) boolean false if set, traces for recent requests can be seen at https:///debug/requests application -trace.opentelemetry.collector string address of an OpenTelemetry trace collector to receive traces using the otel gRPC protocol, as :. If no port is specified, 4317 will be used. application -trace.snapshot.rate duration 0s if non-zero, interval at which background trace snapshots are captured application -trace.span_registry.enabled boolean false if set, ongoing traces can be seen at https:///#/debug/tracez application -trace.zipkin.collector string the address of a Zipkin instance to receive traces, as :. If no port is specified, 9411 will be used. application -ui.database_locality_metadata.enabled boolean true if enabled shows extended locality data about databases and tables in DB Console which can be expensive to compute application -ui.default_timezone string the default timezone used to format timestamps in the ui application -ui.display_timezone enumeration etc/utc the timezone used to format timestamps in the ui. This setting is deprecatedand will be removed in a future version. Use the 'ui.default_timezone' setting instead. 'ui.default_timezone' takes precedence over this setting. [etc/utc = 0, america/new_york = 1] application -version version 1000026.2-upgrading-to-1000026.3-step-016 set the active cluster version in the format '.' application +This session variable default should now be configured using ALTER ROLE... SET: https://www.cockroachlabs.com/docs/stable/alter-role.html" application +sql.distsql.temp_storage.workmem byte size 64 MiB maximum amount of memory in bytes a processor can use before falling back to temp storage application +sql.guardrails.max_row_size_err byte size 80 MiB maximum size of row (or column family if multiple column families are in use) that SQL can write to the database, above which an error is returned; use 0 to disable application 1024 1073741824 +sql.guardrails.max_row_size_log byte size 16 MiB maximum size of row (or column family if multiple column families are in use) that SQL can write to the database, above which an event is logged to SQL_PERF (or SQL_INTERNAL_PERF if the mutating statement was internal); use 0 to disable application 1024 1073741824 +sql.hash_sharded_range_pre_split.max integer 16 max pre-split ranges to have when adding hash sharded index to an existing table application +sql.index_recommendation.drop_unused_duration duration 168h0m0s the index unused duration at which we begin to recommend dropping the index application +sql.insights.anomaly_detection.enabled boolean true enable per-fingerprint latency recording and anomaly detection application +sql.insights.anomaly_detection.latency_threshold duration 50ms statements must surpass this threshold to trigger anomaly detection and identification application +sql.insights.anomaly_detection.memory_limit byte size 1.0 MiB the maximum amount of memory allowed for tracking statement latencies application +sql.insights.execution_insights_capacity integer 1000 the size of the per-node store of execution insights application +sql.insights.high_retry_count.threshold integer 10 the number of retries a slow statement must have undergone for its high retry count to be highlighted as a potential problem application +sql.insights.latency_threshold duration 100ms amount of time after which an executing statement is considered slow. Use 0 to disable. application +sql.log.failed_query.enabled boolean false when set to true, every SQL statement that ends in an error is logged to a secondary logger on each node as a `failed_query` event application +sql.log.failed_query.internal_queries.enabled boolean false when set to true, internal queries that end in an error are logged to a separate `failed_query_internal` event. Must have `sql.log.failed_query.enabled` set for this setting to have any effect. application +sql.log.redact_names.enabled boolean false if set, schema object identifers are redacted in SQL statements that appear in event logs application +sql.log.scan_row_count_misestimate.enabled boolean false when set to true, log a warning when a scan's actual row count differs significantly from the optimizer's estimate application +sql.log.slow_query.experimental_full_table_scans.enabled boolean false when set to true, statements that perform a full table/index scan will be logged to the slow query log even if they do not meet the latency threshold. Must have the slow query log enabled for this setting to have any effect. application +sql.log.slow_query.internal_queries.enabled boolean false when set to true, internal queries which exceed the slow query log threshold are logged to a separate log. Must have the slow query log enabled for this setting to have any effect. application +sql.log.slow_query.latency_threshold duration 0s when set to non-zero, log statements whose service latency exceeds the threshold to a secondary logger on each node application +sql.log.user_audit string user/role-based audit logging configuration application +sql.log.user_audit.reduced_config.enabled boolean false enables logic to compute a reduced audit configuration, computing the audit configuration only once at session start instead of at each SQL event. The tradeoff with the increase in performance (~5%), is that changes to the audit configuration (user role memberships/cluster setting) are not reflected within session. Users will need to start a new session to see these changes in their auditing behaviour. application +sql.metrics.application_name.enabled boolean false when enabled, SQL metrics would export application name as and additional label as part of child metrics. The number of unique label combinations is limited to 5000 by default. application +sql.metrics.database_name.enabled boolean false when enabled, SQL metrics would export database name as and additional label as part of child metrics. The number of unique label combinations is limited to 5000 by default. application +sql.metrics.index_usage_stats.enabled boolean true collect per index usage statistics application +sql.metrics.max_mem_reported_stmt_fingerprints integer 100000 the maximum number of reported statement fingerprints stored in memory application +sql.metrics.max_mem_reported_txn_fingerprints integer 100000 the maximum number of reported transaction fingerprints stored in memory application +sql.metrics.max_mem_stmt_fingerprints integer 7500 the maximum number of statement fingerprints stored in memory application +sql.metrics.max_mem_txn_fingerprints integer 7500 the maximum number of transaction fingerprints stored in memory application +sql.metrics.statement_details.dump_to_logs.enabled (alias: sql.metrics.statement_details.dump_to_logs) boolean false dump collected statement statistics to node logs when periodically cleared application +sql.metrics.statement_details.enabled boolean true collect per-statement query statistics application +sql.metrics.statement_details.gateway_node.enabled boolean false save the gateway node for each statement fingerprint. If false, the value will be stored as 0. application +sql.metrics.statement_details.index_recommendation_collection.enabled boolean true generate an index recommendation for each fingerprint ID application +sql.metrics.statement_details.max_mem_reported_idx_recommendations integer 5000 the maximum number of reported index recommendation info stored in memory application +sql.metrics.statement_details.threshold duration 0s minimum execution time to cause statement statistics to be collected. If configured, no transaction stats are collected. application +sql.metrics.transaction_details.enabled boolean true collect per-application transaction statistics application +sql.multiple_modifications_of_table.enabled boolean false if true, allow statements containing multiple INSERT ON CONFLICT, UPSERT, UPDATE, or DELETE subqueries modifying the same table, at the risk of data corruption if the same row is modified multiple times by a single statement (multiple INSERT subqueries without ON CONFLICT cannot cause corruption and are always allowed) application +sql.multiregion.drop_primary_region.enabled boolean true allows dropping the PRIMARY REGION of a database if it is the last region application +sql.notices.enabled boolean true enable notices in the server/client protocol being sent application +sql.optimizer.uniqueness_checks_for_gen_random_uuid.enabled boolean false if enabled, uniqueness checks may be planned for mutations of UUID columns updated with gen_random_uuid(); otherwise, uniqueness is assumed due to near-zero collision probability application +sql.procedures.plpgsql.late_binding.enabled boolean false when true, PL/pgSQL procedure bodies are not resolved at creation time; references are resolved at CALL time instead, matching PostgreSQL PL/pgSQL semantics. Does not affect LANGUAGE SQL procedures or functions application +sql.schema.approx_max_object_count integer 20000 approximate maximum number of schema objects allowed in the cluster; the check uses cached statistics, so the actual count may slightly exceed this limit; set to 0 to disable application +sql.schema.auto_unlock.enabled boolean true controls whether DDL operations will attempt to automatically unlock and re-lock schema_locked tables. When this setting is false, DDL on schema_locked tables is blocked unless the user manually unlocks the table first. The schema_locked storage parameter improves changefeed performance by locking the table's schema from the perspective of the changefeed. application +sql.schema.telemetry.recurrence string @weekly cron-tab recurrence for SQL schema telemetry job system-visible +sql.spatial.experimental_box2d_comparison_operators.enabled boolean false enables the use of certain experimental box2d comparison operators application +sql.sqlcommenter.enabled boolean false enables support for sqlcommenter. Key value parsed from sqlcommenter comments will be included in sql insights and sql logs. See https://google.github.io/sqlcommenter/ for more details. application +sql.stats.activity.persisted_rows.max integer 200000 maximum number of rows of statement and transaction activity that will be persisted in the system tables application +sql.stats.automatic_collection.enabled boolean true automatic statistics collection mode application +sql.stats.automatic_collection.fraction_stale_rows float 0.2 target fraction of stale rows per table that will trigger a statistics refresh application 0 +sql.stats.automatic_collection.min_stale_rows integer 500 target minimum number of stale rows per table that will trigger a statistics refresh application +sql.stats.automatic_extremes_concurrency_limit integer 128 determines the maximum number of concurrent automatic partial USING EXTREMES table statistics collection jobs application 1 +sql.stats.automatic_full_collection.enabled boolean true automatic full statistics collection mode application +sql.stats.automatic_full_concurrency_limit integer See description. determines the maximum number of concurrent automatic full table statistics collection jobs. The default value is computed as the number of vCPUs in a node divided by 2. application 1 +sql.stats.automatic_partial_collection.enabled boolean true automatic partial statistics collection mode application +sql.stats.automatic_partial_collection.fraction_stale_rows float 0.05 target fraction of stale rows per table that will trigger a partial statistics refresh application 0 +sql.stats.automatic_partial_collection.min_stale_rows integer 100 target minimum number of stale rows per table that will trigger a partial statistics refresh application +sql.stats.canary_fraction float 0 probability that table statistics will use canary mode instead of stable mode for query planning [0.0-1.0] application 0 1 +sql.stats.cleanup.recurrence string @hourly cron-tab recurrence for SQL Stats cleanup job application +sql.stats.detailed_latency_metrics.enabled boolean false label latency metrics with the statement fingerprint. Workloads with tens of thousands of distinct query fingerprints should leave this setting false. (experimental, affects performance for workloads with high fingerprint cardinality) application +sql.stats.error_on_concurrent_create_stats.enabled boolean false set to true to error on concurrent CREATE STATISTICS jobs, instead of skipping them application +sql.stats.flush.enabled boolean true if set, SQL execution statistics are periodically flushed to disk application +sql.stats.flush.interval duration 10m0s the interval at which SQL execution statistics are flushed to disk, this value must be less than or equal to 1 hour application 0s 24h0m0s +sql.stats.forecasts.enabled boolean true when true, enables generation of statistics forecasts by default for all tables application +sql.stats.forecasts.max_decrease float 0.3333333333333333 the most a prediction is allowed to decrease, expressed as the minimum ratio of the prediction to the lowest prior observation application 0 1 +sql.stats.forecasts.min_goodness_of_fit float 0.95 the minimum R² (goodness of fit) measurement required from all predictive models to use a forecast application 0 1 +sql.stats.forecasts.min_observations integer 3 the mimimum number of observed statistics required to produce a statistics forecast application 1 9223372036854775807 +sql.stats.histogram_buckets.count integer 200 maximum number of histogram buckets to build during table statistics collection application 0 4294967295 +sql.stats.histogram_buckets.include_most_common_values.enabled boolean true whether to include most common values as histogram buckets application +sql.stats.histogram_buckets.max_fraction_most_common_values float 0.1 maximum fraction of histogram buckets to use for most common values application 0 1 +sql.stats.histogram_collection.enabled boolean true histogram collection mode application +sql.stats.histogram_samples.count integer 0 number of rows sampled for histogram construction during table statistics collection. Not setting this or setting a value of 0 means that a reasonable sample size will be automatically picked based on the table size. application 0 4294967295 +sql.stats.multi_column_collection.enabled boolean true multi-column statistics collection mode application +sql.stats.non_default_columns.min_retention_period duration 24h0m0s minimum retention period for table statistics collected on non-default columns application +sql.stats.non_indexed_json_histograms.enabled boolean false set to true to collect table statistics histograms on non-indexed JSON columns application +sql.stats.persisted_rows.max integer 1000000 maximum number of rows of statement and transaction statistics that will be persisted in the system tables before compaction begins application +sql.stats.post_events.enabled boolean false if set, an event is logged for every successful CREATE STATISTICS job application +sql.stats.response.max integer 20000 the maximum number of statements and transaction stats returned in a CombinedStatements request application +sql.stats.response.show_internal.enabled boolean false controls if statistics for internal executions should be returned by the CombinedStatements and if internal sessions should be returned by the ListSessions endpoints. These endpoints are used to display statistics on the SQL Activity pages application +sql.stats.system_tables.enabled boolean true when true, enables use of statistics on system tables by the query optimizer application +sql.stats.system_tables_autostats.enabled boolean true when true, enables automatic collection of statistics on system tables application +sql.stats.table_statistics_cache.capacity integer 256 the maximum number of table statistics entries stored in the LRU cache. Each cache entry corresponds to a single table. application +sql.stats.virtual_computed_columns.enabled boolean true set to true to collect table statistics on virtual computed columns application +sql.subset_unique_fks.enabled boolean true if true, foreign keys may be backed by a unique constraint that covers only a strict subset of the foreign key's referenced columns (e.g. a parent with UNIQUE(a) can back an FK that references (a, b)); set to false to require strict matching, as required by the SQL standard and PostgreSQL application +sql.telemetry.query_sampling.enabled boolean false when set to true, executed queries will emit an event on the telemetry logging channel application +sql.telemetry.query_sampling.internal.enabled boolean false when set to true, internal queries will be sampled in telemetry logging application +sql.telemetry.query_sampling.max_event_frequency integer 8 the max event frequency (events per second) at which we sample executions for telemetry, note that it is recommended that this value shares a log-line limit of 10 logs per second on the telemetry pipeline with all other telemetry events. If sampling mode is set to 'transaction', this value is ignored. application +sql.telemetry.query_sampling.mode enumeration statement the execution level used for telemetry sampling. If set to 'statement', events are sampled at the statement execution level. If set to 'transaction', events are sampled at the transaction execution level, i.e. all statements for a transaction will be logged and are counted together as one sampled event (events are still emitted one per statement). [statement = 0, transaction = 1] application +sql.telemetry.transaction_sampling.max_event_frequency integer 8 the max event frequency (events per second) at which we sample transactions for telemetry. If sampling mode is set to 'statement', this setting is ignored. In practice, this means that we only sample a transaction if 1/max_event_frequency seconds have elapsed since the last transaction was sampled. application +sql.telemetry.transaction_sampling.statement_events_per_transaction.max integer 50 the maximum number of statement events to log for every sampled transaction. Note that statements that are logged by force do not adhere to this limit. application +sql.temp_object_cleaner.batch_size integer 1000 number of temporary objects to drop per transaction during cleanup application 1 10000 +sql.temp_object_cleaner.cleanup_interval duration 30m0s how often to clean up orphaned temporary objects application +sql.temp_object_cleaner.wait_interval duration 30m0s how long after creation a temporary object will be cleaned up application +sql.log.all_statements.enabled (alias: sql.trace.log_statement_execute) boolean false set to true to enable logging of all executed statements application +sql.trace.stmt.enable_threshold duration 0s enables tracing on all statements; statements executing for longer than this duration will have their trace logged (set to 0 to disable); note that enabling this may have a negative performance impact; this setting applies to individual statements within a transaction and is therefore finer-grained than sql.trace.txn.enable_threshold application +sql.trace.txn.enable_threshold duration 0s enables transaction traces for transactions exceeding this duration, used with `sql.trace.txn.sample_rate` application +sql.trace.txn.include_internal.enabled boolean true enables tracing internal transactions as well as external workload using sample rate and threshold settings application +sql.trace.txn.jaeger_json_output.enabled boolean false enables Jaeger JSON output for transaction traces in logs application +sql.trace.txn.sample_rate float 1 enables probabilistic transaction tracing. It should be used in conjunction with `sql.trace.txn.enable_threshold`. A percentage of transactions between 0 and 1.0 will have tracing enabled, and only those which exceed the configured threshold will be logged. application 0 1 +sql.ttl.changefeed_replication.disabled boolean false if true, deletes issued by TTL will not be replicated via changefeeds (this setting will be ignored by changefeeds that have the ignore_disable_changefeed_replication option set; such changefeeds will continue to replicate all TTL deletes) application +sql.ttl.default_delete_batch_size integer 100 default amount of rows to delete in a single query during a TTL job application +sql.ttl.default_delete_rate_limit integer 100 default delete rate limit (rows per second) per node for each TTL job. Use 0 to signify no rate limit. application +sql.ttl.default_select_batch_size integer 500 default amount of rows to select in a single query during a TTL job application +sql.ttl.default_select_rate_limit integer 0 default select rate limit (rows per second) per node for each TTL job. Use 0 to signify no rate limit. application +sql.ttl.job.enabled boolean true whether the TTL job is enabled application +sql.txn.read_committed_isolation.enabled boolean true set to true to allow transactions to use the READ COMMITTED isolation level if specified by BEGIN/SET commands application +sql.txn.repeatable_read_isolation.enabled (alias: sql.txn.snapshot_isolation.enabled) boolean false set to true to allow transactions to use the REPEATABLE READ isolation level if specified by BEGIN/SET commands application +sql.txn_fingerprint_id_cache.capacity integer 100 the maximum number of txn fingerprint IDs stored application +sql.vecindex.stalled_op.timeout duration 100ms amount of time before other vector index workers will assist with a stalled background fixup application +storage.delete_compaction_excise.enabled boolean true set to false to direct Pebble to not partially excise sstables in delete-only compactions system-visible +storage.ingestion.value_blocks.enabled boolean true set to true to enable writing of value blocks in ingestion sstables application +storage.max_sync_duration duration 20s maximum duration for disk operations; any operations that take longer than this setting trigger a warning log entry or process crash system-visible +storage.max_sync_duration.fatal.enabled boolean true if true, fatal the process when a disk operation exceeds storage.max_sync_duration application +storage.sstable.compression_algorithm enumeration fastest determines the compression algorithm to use for Pebble stores [snappy = 1, zstd = 2, none = 3, minlz = 4, fastest = 5, balanced = 6, good = 7, fast = 8] system-visible +timeseries.storage.resolution_10s.ttl duration 240h0m0s the maximum age of time series data stored at the 10 second resolution. Data older than this is subject to rollup and deletion. system-visible +timeseries.storage.resolution_1m.ttl duration 240h0m0s the maximum age of time series data stored at the 1 minute resolution. Data older than this is subject to rollup and deletion. system-visible +timeseries.storage.resolution_30m.ttl duration 2160h0m0s the maximum age of time series data stored at the 30 minute resolution. Data older than this is subject to deletion. system-visible +trace.debug_http_endpoint.enabled (alias: trace.debug.enable) boolean false if set, traces for recent requests can be seen at https:///debug/requests application +trace.opentelemetry.collector string address of an OpenTelemetry trace collector to receive traces using the otel gRPC protocol, as :. If no port is specified, 4317 will be used. application +trace.snapshot.rate duration 0s if non-zero, interval at which background trace snapshots are captured application +trace.span_registry.enabled boolean false if set, ongoing traces can be seen at https:///#/debug/tracez application +trace.zipkin.collector string the address of a Zipkin instance to receive traces, as :. If no port is specified, 9411 will be used. application +ui.database_locality_metadata.enabled boolean true if enabled shows extended locality data about databases and tables in DB Console which can be expensive to compute application +ui.default_timezone string the default timezone used to format timestamps in the ui application +ui.display_timezone enumeration etc/utc the timezone used to format timestamps in the ui. This setting is deprecatedand will be removed in a future version. Use the 'ui.default_timezone' setting instead. 'ui.default_timezone' takes precedence over this setting. [etc/utc = 0, america/new_york = 1] application +version version 1000026.2-upgrading-to-1000026.3-step-016 set the active cluster version in the format '.' application diff --git a/docs/generated/settings/settings.html b/docs/generated/settings/settings.html index 923bc300e3dc..9099091bf8d5 100644 --- a/docs/generated/settings/settings.html +++ b/docs/generated/settings/settings.html @@ -1,415 +1,415 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SettingTypeDefaultDescriptionSupported Deployments
SettingTypeDefaultDescriptionSupported DeploymentsMinMax
admission.disk_bandwidth_tokens.elastic.enabled
booleantruewhen true, and provisioned bandwidth for the disk corresponding to a store is configured, tokens for elastic work will be limited if disk bandwidth becomes a bottleneckAdvanced/Self-Hosted
admission.epoch_lifo.enabled
booleanfalsewhen true, epoch-LIFO behavior is enabled when there is significant delay in admissionBasic/Standard/Advanced/Self-Hosted
admission.epoch_lifo.epoch_closing_delta_duration
duration5msthe delta duration before closing an epoch, for epoch-LIFO admission control orderingBasic/Standard/Advanced/Self-Hosted
admission.epoch_lifo.epoch_duration
duration100msthe duration of an epoch, for epoch-LIFO admission control orderingBasic/Standard/Advanced/Self-Hosted
admission.epoch_lifo.queue_delay_threshold_to_switch_to_lifo
duration105msthe queue delay encountered by a (tenant,priority) for switching to epoch-LIFO orderingBasic/Standard/Advanced/Self-Hosted
admission.kv.enabled
booleantruewhen true, work performed by the KV layer is subject to admission controlAdvanced/Self-Hosted
admission.sql_kv_response.enabled
booleantruewhen true, work performed by the SQL layer when receiving a KV response is subject to admission controlBasic/Standard/Advanced/Self-Hosted
admission.sql_sql_response.enabled
booleantruewhen true, work performed by the SQL layer when receiving a DistSQL response is subject to admission controlBasic/Standard/Advanced/Self-Hosted
bulkio.backup.file_size
byte size128 MiBtarget size for individual data files produced during BACKUPBasic/Standard/Advanced/Self-Hosted
bulkio.backup.read_timeout
duration5m0samount of time after which a read attempt is considered timed out, which causes the backup to failBasic/Standard/Advanced/Self-Hosted
bulkio.backup.read_with_priority_after
duration1m0samount of time since the read-as-of time above which a BACKUP should use priority when retrying readsBasic/Standard/Advanced/Self-Hosted
bulkio.import.row_count_validation.mode
(alias: bulkio.import.row_count_validation.unsafe.mode)
enumerationasynccontrols validation of imported data via INSPECT jobs. Options: 'off' (no validation), 'async' (background validation), 'sync' (blocking validation). If disabled, IMPORT will not perform a post-import row count check. [off = 0, async = 1, sync = 2]Basic/Standard/Advanced/Self-Hosted
bulkio.merge.file_size
byte size1.0 GiBtarget size for individual data files produced during local only merge phasesBasic/Standard/Advanced/Self-Hosted
physical_replication.consumer.minimum_flush_interval
(alias: bulkio.stream_ingestion.minimum_flush_interval)
duration5sthe minimum timestamp between flushes; flushes may still occur if internal buffers fill upAdvanced/Self-Hosted
changefeed.aggregator.flush_jitter
float0.1jitter aggregator flushes as a fraction of min_checkpoint_frequency. This setting has no effect if min_checkpoint_frequency is set to 0.Basic/Standard/Advanced/Self-Hosted
changefeed.backfill.concurrent_scan_requests
integer0number of concurrent scan requests per node issued during a backfillBasic/Standard/Advanced/Self-Hosted
changefeed.backfill.scan_request_size
integer524288the maximum number of bytes returned by each scan requestBasic/Standard/Advanced/Self-Hosted
changefeed.batch_reduction_retry.enabled
(alias: changefeed.batch_reduction_retry_enabled)
booleanfalseif true, kafka changefeeds upon erroring on an oversized batch will attempt to resend the messages with progressively lower batch sizesBasic/Standard/Advanced/Self-Hosted
changefeed.default_range_distribution_strategy
enumerationdefaultcontrols how changefeed work is distributed across nodes. 'default' defers to DistSQL for node selection and work distribution. 'balanced_simple' uses DistSQL for node selection but then attempts to evenly distribute ranges across those selected nodes for better load balancing. this setting does not override locality restrictions and can be overridden per-changefeed using the 'range_distribution_strategy' option. [default = 0, balanced_simple = 1]Basic/Standard/Advanced/Self-Hosted
changefeed.event_consumer_worker_queue_size
integer16if changefeed.event_consumer_workers is enabled, this setting sets the maxmimum number of events which a worker can bufferBasic/Standard/Advanced/Self-Hosted
changefeed.event_consumer_workers
integer0the number of workers to use when processing events: <0 disables, 0 assigns a reasonable default, >0 assigns the setting value. for experimental/core changefeeds and changefeeds using parquet format, this is disabledBasic/Standard/Advanced/Self-Hosted
changefeed.fast_gzip.enabled
booleantrueuse fast gzip implementationBasic/Standard/Advanced/Self-Hosted
changefeed.span_checkpoint.lag_threshold
(alias: changefeed.frontier_highwater_lag_checkpoint_threshold)
duration10m0sthe amount of time a changefeed's lagging (slowest) spans must lag behind its leading (fastest) spans before a span-level checkpoint to save leading span progress is written; if 0, span-level checkpoints due to lagging spans is disabledBasic/Standard/Advanced/Self-Hosted
changefeed.kafka.max_request_size
byte size256 MiBthe maximum number of uncompressed bytes sent in a single request to a Kafka broker; lowering this value helps avoid spurious "message too large" errors that can occur when multiple messages are combined into a single batch; this setting is overridden by the per-changefeed Flush { MaxBytes: <int> } optionBasic/Standard/Advanced/Self-Hosted
changefeed.kafka_v2_error_details.enabled
booleantrueif enabled, Kafka v2 sinks will include the message key, size, and MVCC timestamp in message too large errorsBasic/Standard/Advanced/Self-Hosted
changefeed.memory.per_changefeed_limit
byte size512 MiBcontrols amount of data that can be buffered per changefeedBasic/Standard/Advanced/Self-Hosted
changefeed.resolved_timestamp.min_update_interval
(alias: changefeed.min_highwater_advance)
duration0sminimum amount of time that must have elapsed since the last time a changefeed's resolved timestamp was updated before it is eligible to be updated again; default of 0 means no minimum interval is enforced but updating will still be limited by the average time it takes to checkpoint progressBasic/Standard/Advanced/Self-Hosted
changefeed.node_throttle_config
stringspecifies node level throttling configuration for all changefeeedsBasic/Standard/Advanced/Self-Hosted
changefeed.partition_alg.enabled
booleanfalseif enabled, allows specifying the partition_alg changefeed option to choose between fnv-1a (default) and murmur2 hash functions for Kafka partitioning. Only affects changefeeds using a kafka sink with changefeed.new_kafka_sink_enabled set to true.Basic/Standard/Advanced/Self-Hosted
changefeed.progress.frontier_persistence.interval
duration30sminimum amount of time that must elapse before a changefeed will persist its entire span frontier againBasic/Standard/Advanced/Self-Hosted
changefeed.protect_timestamp.max_age
duration96h0m0sfail the changefeed if the protected timestamp age exceeds this threshold; 0 disables expirationBasic/Standard/Advanced/Self-Hosted
changefeed.protect_timestamp_interval
duration10m0scontrols how often the changefeed forwards its protected timestamp to the resolved timestampBasic/Standard/Advanced/Self-Hosted
changefeed.schema_feed.read_with_priority_after
duration1m0sretry with high priority if we were not able to read descriptors for too long; 0 disablesBasic/Standard/Advanced/Self-Hosted
changefeed.sink_io_workers
integer0the number of workers used by changefeeds when sending requests to the sink (currently the batching versions of webhook, pubsub, and kafka sinks that are enabled by changefeed.new_<sink type>_sink_enabled only): <0 disables, 0 assigns a reasonable default, >0 assigns the setting valueBasic/Standard/Advanced/Self-Hosted
cloudstorage.azure.concurrent_upload_buffers
integer1controls the number of concurrent buffers that will be used by the Azure client when uploading chunks.Each buffer can buffer up to cloudstorage.write_chunk.size of memory during an uploadBasic/Standard/Advanced/Self-Hosted
cloudstorage.azure.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.azure.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.azure.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.azure.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.gs.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.gs.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.gs.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.gs.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.http.custom_ca
stringcustom root CA (appended to system's default CAs) for verifying certificates when interacting with HTTPS storageBasic/Standard/Advanced/Self-Hosted
cloudstorage.http.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.http.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.http.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.http.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nodelocal.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nodelocal.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nodelocal.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nodelocal.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nullsink.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nullsink.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nullsink.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nullsink.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.s3.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.s3.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.s3.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.s3.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.timeout
duration10m0sthe timeout for import/export storage operationsBasic/Standard/Advanced/Self-Hosted
cloudstorage.userfile.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.userfile.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.userfile.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.userfile.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cluster.auto_upgrade.enabled
booleantruewhen true, enables automatic finalization of major version upgrades once all cluster nodes are running an upgraded binaryBasic/Standard/Advanced/Self-Hosted
cluster.organization
stringorganization nameAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
cluster.preserve_downgrade_option
stringdisable (automatic or manual) cluster version upgrade from the specified version until resetBasic/Standard/Advanced/Self-Hosted
debug.zip.redact_addresses.enabled
booleanfalseenables the redaction of hostnames and ip addresses in debug zipBasic/Standard/Advanced/Self-Hosted
diagnostics.active_query_dumps.enabled
booleantrueexperimental: enable dumping of anonymized active queries to disk when node is under memory pressureAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
diagnostics.forced_sql_stat_reset.interval
duration2h0m0sinterval after which the reported SQL Stats are reset even if not collected by telemetry reporter. It has a max value of 24H.Basic/Standard/Advanced/Self-Hosted
diagnostics.memory_monitoring_dumps.enabled
booleantrueenable dumping of memory monitoring state at the same time as heap profiles are takenAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
diagnostics.reporting.enabled
booleantrueenable reporting diagnostic metrics to cockroach labs, but is ignored for Trial or Free licensesBasic/Standard/Advanced/Self-Hosted
diagnostics.reporting.interval
duration1h0m0sinterval at which diagnostics data should be reportedBasic/Standard/Advanced/Self-Hosted
enterprise.license
stringthe encoded cluster licenseAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
external.graphite.endpoint
stringif nonempty, push server metrics to the Graphite or Carbon server at the specified host:portBasic/Standard/Advanced/Self-Hosted
external.graphite.interval
duration10sthe interval at which metrics are pushed to Graphite (if enabled)Basic/Standard/Advanced/Self-Hosted
feature.backup.enabled
booleantrueset to true to enable backups, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.changefeed.enabled
booleantrueset to true to enable changefeeds, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.export.enabled
booleantrueset to true to enable exports, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.import.enabled
booleantrueset to true to enable imports, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.infer_rbr_region_col_using_constraint.enabled
booleanfalseset to true to enable looking up the region column via a foreign key constraint in a REGIONAL BY ROW table, false to disable; default is falseBasic/Standard/Advanced/Self-Hosted
feature.restore.enabled
booleantrueset to true to enable restore, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.schema_change.enabled
booleantrueset to true to enable schema changes, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.stats.enabled
booleantrueset to true to enable CREATE STATISTICS/ANALYZE, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.vector_index.enabled
booleantrueset to true to enable vector indexes, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
jobs.retention_time
duration336h0m0sthe amount of time for which records for completed jobs are retainedBasic/Standard/Advanced/Self-Hosted
kv.allocator.lease_rebalance_threshold
float0.05minimum fraction away from the mean a store's lease count can be before it is considered for lease-transfersAdvanced/Self-Hosted
kv.allocator.load_based_rebalancing
enumerationautowhether to rebalance based on the distribution of load across stores [off = 0, leases = 1, leases and replicas = 2, multi-metric only = 3, multi-metric and count = 4, auto = 5]Advanced/Self-Hosted
kv.allocator.load_based_rebalancing.objective
enumerationcpuwhat objective does the cluster use to rebalance; if set to `qps` the cluster will attempt to balance qps among stores, if set to `cpu` the cluster will attempt to balance cpu usage among stores [qps = 0, cpu = 1]Advanced/Self-Hosted
kv.allocator.load_based_rebalancing_interval
duration1m0sthe rough interval at which each store will check for load-based lease / replica rebalancing opportunitiesAdvanced/Self-Hosted
kv.allocator.qps_rebalance_threshold
float0.1minimum fraction away from the mean a store's QPS (such as queries per second) can be before it is considered overfull or underfullAdvanced/Self-Hosted
kv.allocator.range_rebalance_threshold
float0.05minimum fraction away from the mean a store's range count can be before it is considered overfull or underfullAdvanced/Self-Hosted
kv.allocator.store_cpu_rebalance_threshold
float0.1minimum fraction away from the mean a store's cpu usage can be before it is considered overfull or underfullAdvanced/Self-Hosted
kv.bulk_io_write.max_rate
byte size1.0 TiBthe rate limit (bytes/sec) to use for writes to disk on behalf of bulk io opsAdvanced/Self-Hosted
kv.bulk_io_write.min_capacity_remaining_fraction
float0.05remaining store capacity fraction below which bulk ingestion requests are rejectedAdvanced/Self-Hosted
kv.bulk_sst.max_allowed_overage
byte size64 MiBif positive, allowed size in excess of target size for SSTs from export requests; export requests (i.e. BACKUP) may buffer up to the sum of kv.bulk_sst.target_size and kv.bulk_sst.max_allowed_overage in memoryAdvanced/Self-Hosted
kv.bulk_sst.target_size
byte size16 MiBtarget size for SSTs emitted from export requests; export requests (i.e. BACKUP) may buffer up to the sum of kv.bulk_sst.target_size and kv.bulk_sst.max_allowed_overage in memoryAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.follower_reads.enabled
(alias: kv.closed_timestamp.follower_reads_enabled)
booleantrueallow (all) replicas to serve consistent historical reads based on closed timestamp informationAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.lead_for_global_reads_auto_tune.enabled
booleanfalseif enabled, observed network latency between leaseholders and their furthest follower will be used to adjust closed timestamp policies for rangesranges configured to serve global reads. kv.closed_timestamp.lead_for_global_reads_override takes precedence if set.Advanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.lead_for_global_reads_override
duration0sif nonzero, overrides the lead time that global_read ranges use to publish closed timestampsAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.side_transport_interval
duration200msthe interval at which the closed timestamp side-transport attempts to advance each range's closed timestamp; set to 0 to disable the side-transportAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.side_transport_pacing_refresh_interval
duration10msthe refresh interval for the task pacer that controls pacing of sending sidetransport updates to avoid overloading the system when many connections are waitingAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.side_transport_pacing_smear_interval
duration1msthe smear interval for the task pacer that controls the amount of time each paced batch is going to take when broadcasting sidetransport updatesAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.target_duration
duration3sif nonzero, attempt to provide closed timestamp notifications for timestamps trailing cluster time by approximately this durationAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.dist_sender.circuit_breaker.cancellation.enabled
booleantruewhen enabled, in-flight requests will be cancelled when the circuit breaker tripsBasic/Standard/Advanced/Self-Hosted
kv.dist_sender.circuit_breaker.cancellation.write_grace_period
duration10show long after the circuit breaker trips to cancel write requests (these can't retry internally, so should be long enough to allow quorum/lease recovery)Basic/Standard/Advanced/Self-Hosted
kv.dist_sender.circuit_breaker.probe.interval
duration3sinterval between replica probesBasic/Standard/Advanced/Self-Hosted
kv.dist_sender.circuit_breaker.probe.threshold
duration3sduration of errors or stalls after which a replica will be probedBasic/Standard/Advanced/Self-Hosted
kv.dist_sender.circuit_breaker.probe.timeout
duration3stimeout for replica probesBasic/Standard/Advanced/Self-Hosted
kv.dist_sender.circuit_breakers.mode
enumerationliveness range onlyset of ranges to trip circuit breakers for failing or stalled replicas [no ranges = 0, liveness range only = 1, all ranges = 2]Basic/Standard/Advanced/Self-Hosted
kv.lease_transfer_read_summary.global_budget
byte size0 Bcontrols the maximum number of bytes that will be used to summarize the global segment of the timestamp cache during lease transfers and range merges. A smaller budget will result in loss of precision.Advanced/Self-Hosted
kv.lease_transfer_read_summary.local_budget
byte size4.0 MiBcontrols the maximum number of bytes that will be used to summarize the local segment of the timestamp cache during lease transfers and range merges. A smaller budget will result in loss of precision.Advanced/Self-Hosted
kv.log_range_and_node_events.enabled
booleantrueset to true to transactionally log range events (e.g., split, merge, add/remove voter/non-voter) into system.rangelogand node join and restart events into system.eventologAdvanced/Self-Hosted
kv.protectedts.reconciliation.interval
duration5m0sthe frequency for reconciling jobs with protected timestamp recordsAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.raft.leader_fortification.fraction_enabled
float1controls the fraction of ranges for which the raft leader fortification protocol is enabled. Leader fortification is needed for a range to use a Leader lease. Set to 0.0 to disable leader fortification and, by extension, Leader leases. Set to 1.0 to enable leader fortification for all ranges and, by extension, use Leader leases for all ranges which do not require expiration-based leases. Set to a value between 0.0 and 1.0 to gradually roll out Leader leases across the ranges in a cluster.Advanced/Self-Hosted
kv.range.range_size_hard_cap
byte size8.0 GiBhard cap on the maximum size a range is allowed to grow to withoutsplitting before writes to the range are blocked. Takes precedence over all other configurationsAdvanced/Self-Hosted
kv.range_split.by_load.enabled
(alias: kv.range_split.by_load_enabled)
booleantrueallow automatic splits of ranges based on where load is concentratedAdvanced/Self-Hosted
kv.range_split.load_cpu_threshold
duration500msthe CPU use per second over which, the range becomes a candidate for load based splittingAdvanced/Self-Hosted
kv.range_split.load_qps_threshold
integer2500the QPS over which, the range becomes a candidate for load based splittingAdvanced/Self-Hosted
kv.rangefeed.client.stream_startup_rate
integer100controls the rate per second the client will initiate new rangefeed stream for a single range; 0 implies unlimitedBasic/Standard/Advanced/Self-Hosted
kv.rangefeed.closed_timestamp_refresh_interval
duration3sthe interval at which closed-timestamp updatesare delivered to rangefeeds; set to 0 to use kv.closed_timestamp.side_transport_intervalAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.rangefeed.enabled
booleanfalseif set, rangefeed registration is enabledAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.replica_circuit_breaker.slow_replication_threshold
duration1m0sduration after which slow proposals trip the per-Replica circuit breaker (zero duration disables breakers)Advanced/Self-Hosted
kv.replica_raft.leaderless_unavailable_threshold
duration1m0sduration after which leaderless replicas is considered unavailable. Set to 0 to disable leaderless replica availability checksAdvanced/Self-Hosted
kv.replica_stats.addsst_request_size_factor
integer50000the divisor that is applied to addsstable request sizes, then recorded in a leaseholders QPS; 0 means all requests are treated as cost 1Advanced/Self-Hosted
kv.replication_reports.interval
duration1m0sthe frequency for generating the replication_constraint_stats, replication_stats_report and replication_critical_localities reports (set to 0 to disable)Advanced/Self-Hosted
kv.snapshot_rebalance.max_rate
byte size32 MiBthe rate limit (bytes/sec) to use for rebalance and upreplication snapshotsAdvanced/Self-Hosted
kv.transaction.max_intents_and_locks
integer0maximum count of inserts or durable locks for a single transactions, 0 to disableBasic/Standard/Advanced/Self-Hosted
kv.transaction.max_intents_bytes
integer4194304maximum number of bytes used to track locks in transactionsBasic/Standard/Advanced/Self-Hosted
kv.transaction.max_refresh_spans_bytes
integer4194304maximum number of bytes used to track refresh spans in serializable transactionsBasic/Standard/Advanced/Self-Hosted
kv.transaction.randomized_anchor_key.enabled
booleanfalsedictates whether a transactions anchor key is randomized or notBasic/Standard/Advanced/Self-Hosted
kv.transaction.reject_over_max_intents_budget.enabled
booleanfalseif set, transactions that exceed their lock tracking budget (kv.transaction.max_intents_bytes) are rejected instead of having their lock spans imprecisely compressedBasic/Standard/Advanced/Self-Hosted
kv.transaction.write_buffering.enabled
booleantrueif enabled, transactional writes are buffered on the clientBasic/Standard/Advanced/Self-Hosted
kv.transaction.write_buffering.max_buffer_size
byte size4.0 MiBif non-zero, defines that maximum size of the buffer that will be used to buffer transactional writes per-transactionBasic/Standard/Advanced/Self-Hosted
kv.transaction.write_pipelining.locking_reads.enabled
booleantrueif enabled, transactional locking reads are pipelined through Raft consensusBasic/Standard/Advanced/Self-Hosted
kv.transaction.write_pipelining.ranged_writes.enabled
booleantrueif enabled, transactional ranged writes are pipelined through Raft consensusBasic/Standard/Advanced/Self-Hosted
kv.transaction.write_pipelining.enabled
(alias: kv.transaction.write_pipelining_enabled)
booleantrueif enabled, transactional writes are pipelined through Raft consensusBasic/Standard/Advanced/Self-Hosted
kv.transaction.write_pipelining.max_batch_size
(alias: kv.transaction.write_pipelining_max_batch_size)
integer128if non-zero, defines that maximum size batch that will be pipelined through Raft consensusBasic/Standard/Advanced/Self-Hosted
kvadmission.store.provisioned_bandwidth
byte size0 Bif set to a non-zero value, this is used as the provisioned bandwidth (in bytes/s), for each store. It can be overridden on a per-store basis using the --store flag. Note that setting the provisioned bandwidth to a positive value may enable disk bandwidth based admission control, since admission.disk_bandwidth_tokens.elastic.enabled defaults to trueAdvanced/Self-Hosted
kvadmission.store.snapshot_ingest_bandwidth_control.enabled
booleantrueif set to true, snapshot ingests will be subject to disk write control in ACAdvanced/Self-Hosted
kvadmission.store.snapshot_ingest_bandwidth_control.min_rate.enabled
booleantrueif set to true, snapshot ingests will be admitted at a minimum rate when kvadmission.store.provisioned_bandwidth is set to a non-zero value. Disabling this setting can lead to snapshots being starved out by foreground traffic.Advanced/Self-Hosted
obs.ash.buffer_size
integer1000000number of ASH samples to retain in memoryAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
obs.ash.enabled
booleanfalseenable active session history samplingAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
obs.ash.log_interval
duration10m0sinterval between periodic ASH top-N workload summary logs; also used as the lookback window for ASH reports written by the env sampler profilerAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
obs.ash.log_top_n
integer10maximum number of entries in periodic ASH workload summary, ranked by sample count descendingAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
obs.ash.response_limit
integer10000maximum number of ASH samples returned per node in fan-out responsesBasic/Standard/Advanced/Self-Hosted
obs.ash.sample_interval
duration1sinterval between ASH samplesAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
obs.metrics_scrape.default_visibility
enumerationallcontrols the default metric visibility level for the metrics scrape endpoints [internal = -1, all = 0, support = 1, essential = 2]Basic/Standard/Advanced/Self-Hosted
obs.tablemetadata.automatic_updates.enabled
booleanfalseenables automatic updates of the table metadata cache system.table_metadataBasic/Standard/Advanced/Self-Hosted
obs.tablemetadata.data_valid_duration
duration20m0sthe duration for which the data in system.table_metadata is considered validBasic/Standard/Advanced/Self-Hosted
schedules.backup.gc_protection.enabled
booleantrueenable chaining of GC protection across backups run as part of a scheduleBasic/Standard/Advanced/Self-Hosted
security.client_cert.san_required.enabled
booleanfalsemandates a requirement for client certs to contain SANAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
security.client_cert.subject_required.enabled
booleanfalsemandates a requirement for subject role to be set for db userAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
security.ocsp.mode
enumerationoffuse OCSP to check whether TLS certificates are revoked. If the OCSP server is unreachable, in strict mode all certificates will be rejected and in lax mode all certificates will be accepted. [off = 0, lax = 1, strict = 2]Basic/Standard/Advanced/Self-Hosted
security.ocsp.timeout
duration3stimeout before considering the OCSP server unreachableBasic/Standard/Advanced/Self-Hosted
security.provisioning.ldap.enabled
booleanfalseenables automatic creation of SQL users upon successful LDAP loginBasic/Standard/Advanced/Self-Hosted
server.auth_log.sql_connections.enabled
booleanfalseif set, log SQL client connect and disconnect events to the SESSIONS log channel (note: may hinder performance on loaded nodes)Basic/Standard/Advanced/Self-Hosted
server.auth_log.sql_sessions.enabled
booleanfalseif set, log verbose SQL session authentication events to the SESSIONS log channel (note: may hinder performance on loaded nodes). Session start and end events are always logged regardless of this setting; disable the SESSIONS log channel to suppress them.Basic/Standard/Advanced/Self-Hosted
server.authentication_cache.enabled
booleantrueenables a cache used during authentication to avoid lookups to system tables when retrieving per-user authentication-related informationBasic/Standard/Advanced/Self-Hosted
server.child_metrics.enabled
booleanfalseenables the exporting of child metrics, additional prometheus time series with extra labelsBasic/Standard/Advanced/Self-Hosted
server.child_metrics.include_aggregate.enabled
booleantrueinclude the reporting of the aggregate time series when child metrics are enabled. This cluster setting has no effect if child metrics are disabled.Basic/Standard/Advanced/Self-Hosted
server.clock.forward_jump_check.enabled
(alias: server.clock.forward_jump_check_enabled)
booleanfalseif enabled, forward clock jumps > max_offset/2 will cause a panicBasic/Standard/Advanced/Self-Hosted
server.clock.persist_upper_bound_interval
duration0sthe interval between persisting the wall time upper bound of the clock. The clock does not generate a wall time greater than the persisted timestamp and will panic if it sees a wall time greater than this value. When cockroach starts, it waits for the wall time to catch-up till this persisted timestamp. This guarantees monotonic wall time across server restarts. Not setting this or setting a value of 0 disables this feature.Basic/Standard/Advanced/Self-Hosted
server.consistency_check.max_rate
byte size8.0 MiBthe rate limit (bytes/sec) to use for consistency checks; used in conjunction with server.consistency_check.interval to control the frequency of consistency checks. Note that setting this too high can negatively impact performance.Advanced/Self-Hosted
server.eventlog.enabled
booleantrueif set, logged notable events are also stored in the table system.eventlogBasic/Standard/Advanced/Self-Hosted
server.eventlog.ttl
duration2160h0m0sif nonzero, entries in system.eventlog older than this duration are periodically purgedBasic/Standard/Advanced/Self-Hosted
server.host_based_authentication.configuration
stringhost-based authentication configuration to use during connection authenticationBasic/Standard/Advanced/Self-Hosted
server.hot_ranges_request.node.timeout
duration5m0sthe duration allowed for a single node to return hot range data before the request is cancelled; if set to 0, there is no timeoutBasic/Standard/Advanced/Self-Hosted
server.hsts.enabled
booleanfalseif true, HSTS headers will be sent along with all HTTP requests. The headers will contain a max-age setting of one year. Browsers honoring the header will always use HTTPS to access the DB Console. Ensure that TLS is correctly configured prior to enabling.Basic/Standard/Advanced/Self-Hosted
server.http.base_path
string/path to redirect the user to upon succcessful loginBasic/Standard/Advanced/Self-Hosted
server.identity_map.configuration
stringsystem-identity to database-username mappingsBasic/Standard/Advanced/Self-Hosted
server.jwt_authentication.audience
stringsets accepted audience values for JWT logins over the SQL interfaceBasic/Standard/Advanced/Self-Hosted
server.jwt_authentication.claim
stringsets the JWT claim that is parsed to get the username; may be a simple claim name (e.g. email) or a JSON Pointer per RFC 6901 (e.g. /kubernetes.io/serviceaccount/uid)Basic/Standard/Advanced/Self-Hosted
server.jwt_authentication.client.timeout
duration15ssets the client timeout for external calls made during JWT authentication (e.g. fetching JWKS, etc.)Basic/Standard/Advanced/Self-Hosted
server.jwt_authentication.enabled
booleanfalseenables or disables JWT login for the SQL interfaceBasic/Standard/Advanced/Self-Hosted
server.jwt_authentication.issuers.configuration
(alias: server.jwt_authentication.issuers)
stringsets accepted issuer values for JWT logins over the SQL interface which can be a single issuer URL string or a JSON string containing an array of issuer URLs or a JSON object containing map of issuer URLS to JWKS URIsBasic/Standard/Advanced/Self-Hosted
server.jwt_authentication.issuers.custom_ca
stringsets the PEM encoded custom root CA for verifying certificates while fetching JWKSBasic/Standard/Advanced/Self-Hosted
server.jwt_authentication.jwks
string{"keys":[]}sets the public key set for JWT logins over the SQL interface (JWKS format)Basic/Standard/Advanced/Self-Hosted
server.jwt_authentication.jwks_auto_fetch.enabled
booleanfalseenables or disables automatic fetching of JWKS from the issuer's well-known endpoint or JWKS URI set in JWTAuthIssuersConfig. If this is enabled, the server.jwt_authentication.jwks will be ignored.Basic/Standard/Advanced/Self-Hosted
server.ldap_authentication.client.tls_certificate
stringsets the client certificate PEM for establishing mTLS connection with LDAP serverBasic/Standard/Advanced/Self-Hosted
server.ldap_authentication.client.tls_key
stringsets the client key PEM for establishing mTLS connection with LDAP serverBasic/Standard/Advanced/Self-Hosted
server.ldap_authentication.domain.custom_ca
stringsets the PEM encoded custom root CA for verifying domain certificates when establishing connection with LDAP serverBasic/Standard/Advanced/Self-Hosted
server.log_gc.max_deletions_per_cycle
integer1000the maximum number of entries to delete on each purge of log-like system tablesBasic/Standard/Advanced/Self-Hosted
server.log_gc.period
duration1h0m0sthe period at which log-like system tables are checked for old entriesBasic/Standard/Advanced/Self-Hosted
server.max_connections_per_gateway
integer-1the maximum number of SQL connections per gateway allowed at a given time (note: this will only limit future connection attempts and will not affect already established connections). Negative values result in unlimited number of connections. Superusers are not affected by this limit.Basic/Standard/Advanced/Self-Hosted
server.max_open_transactions_per_gateway
integer-1the maximum number of open SQL transactions per gateway allowed at a given time. Negative values result in unlimited number of connections. Superusers are not affected by this limit.Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.autologin.enabled
(alias: server.oidc_authentication.autologin)
booleanfalseif true, logged-out visitors to the DB Console will be automatically redirected to the OIDC login endpointBasic/Standard/Advanced/Self-Hosted
server.oidc_authentication.button_text
stringLog in with your OIDC providertext to show on button on DB Console login page to login with your OIDC provider (only shown if OIDC is enabled)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.claim_json_key
stringsets JSON key of principal to extract from payload after OIDC authentication completes (usually email or sid)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.client.timeout
duration15ssets the client timeout for external calls made during OIDC authentication (e.g. authorization code flow, etc.)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.client_id
stringsets OIDC client idBasic/Standard/Advanced/Self-Hosted
server.oidc_authentication.client_secret
stringsets OIDC client secretBasic/Standard/Advanced/Self-Hosted
server.oidc_authentication.enabled
booleanfalseenables or disabled OIDC login for the DB ConsoleBasic/Standard/Advanced/Self-Hosted
server.oidc_authentication.principal_regex
string(.+)regular expression to apply to extracted principal (see claim_json_key setting) to translate to SQL user (golang regex format, must include 1 grouping to extract)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.provider.custom_ca
stringsets the PEM encoded custom root CA for verifying certificates while authenticating through the OIDC providerBasic/Standard/Advanced/Self-Hosted
server.oidc_authentication.provider_url
stringsets OIDC provider URL ({provider_url}/.well-known/openid-configuration must resolve)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.redirect_url
stringhttps://localhost:8080/oidc/v1/callbacksets OIDC redirect URL via a URL string or a JSON string containing a required `redirect_urls` key with an object that maps from region keys to URL strings (URLs should point to your load balancer and must route to the path /oidc/v1/callback)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.scopes
stringopenidsets OIDC scopes to include with authentication request (space delimited list of strings, required to start with `openid`)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.tls_insecure_skip_verify.enabled
booleanfalseif true, TLS certificate verification is skipped for connections to the OIDC provider (insecure)Basic/Standard/Advanced/Self-Hosted
server.rangelog.ttl
duration720h0m0sif nonzero, entries in system.rangelog older than this duration are periodically purgedAdvanced/Self-Hosted
server.redact_sensitive_settings.enabled
booleanfalseenables or disables the redaction of sensitive settings in the output of SHOW CLUSTER SETTINGS and SHOW ALL CLUSTER SETTINGS for users without the MODIFYCLUSTERSETTING privilegeBasic/Standard/Advanced/Self-Hosted
server.shutdown.connections.timeout
(alias: server.shutdown.connection_wait)
duration0sthe maximum amount of time a server waits for all SQL connections to be closed before proceeding with a drain. (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting)Basic/Standard/Advanced/Self-Hosted
server.shutdown.initial_wait
(alias: server.shutdown.drain_wait)
duration0sthe amount of time a server waits in an unready state before proceeding with a drain (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting. --drain-wait is to specify the duration of the whole draining process, while server.shutdown.initial_wait is to set the wait time for health probes to notice that the node is not ready.)Basic/Standard/Advanced/Self-Hosted
server.shutdown.lease_transfer_iteration.timeout
(alias: server.shutdown.lease_transfer_wait)
duration5sthe timeout for a single iteration of the range lease transfer phase of draining (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting)Advanced/Self-Hosted
server.shutdown.transactions.timeout
(alias: server.shutdown.query_wait)
duration10sthe timeout for waiting for active transactions to finish during a drain (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting)Basic/Standard/Advanced/Self-Hosted
server.sql_tcp_keep_alive.count
integer3maximum number of probes that will be sent out before a connection is dropped because it's unresponsive (Linux and Darwin only). The value 0 is the operating system default.Basic/Standard/Advanced/Self-Hosted
server.sql_tcp_keep_alive.idle
duration0stime with no network activity before sending a TCP keepalive probe (Linux and Darwin only). If 0, the value of server.sql_tcp_keep_alive.interval is used. The value 0 is the operating system default.Basic/Standard/Advanced/Self-Hosted
server.sql_tcp_keep_alive.interval
duration10stime between keep alive probes and idle time before probes are sent out. The value 0 is the operating system default.Basic/Standard/Advanced/Self-Hosted
server.sql_tcp_user.timeout
duration0sspecifies the maximum amount of time that transmitted data can remain unacknowledged before the underlying TCP connection is forcefully closed. (Linux and Darwin only). The value 0 is the operating system default.Basic/Standard/Advanced/Self-Hosted
server.time_until_store_dead
duration5m0sthe time after which if there is no new gossiped information about a store, it is considered deadBasic/Standard/Advanced/Self-Hosted
server.user_login.cert_password_method.auto_scram_promotion.enabled
booleantruewhether to automatically promote cert-password authentication to use SCRAMBasic/Standard/Advanced/Self-Hosted
server.user_login.downgrade_scram_stored_passwords_to_bcrypt.enabled
booleantrueif server.user_login.password_encryption=crdb-bcrypt, this controls whether to automatically re-encode stored passwords using scram-sha-256 to crdb-bcryptBasic/Standard/Advanced/Self-Hosted
server.user_login.min_password_length
integer1the minimum length accepted for passwords set in cleartext via SQL. Note that a value lower than 1 is ignored: passwords cannot be empty in any case. This setting only applies when adding new users or altering an existing user's password; it will not affect existing logins.Basic/Standard/Advanced/Self-Hosted
server.user_login.password_encryption
enumerationscram-sha-256which hash method to use to encode cleartext passwords passed via ALTER/CREATE USER/ROLE WITH PASSWORD [crdb-bcrypt = 2, scram-sha-256 = 3]Basic/Standard/Advanced/Self-Hosted
server.user_login.password_hashes.default_cost.crdb_bcrypt
integer10the hashing cost to use when storing passwords supplied as cleartext by SQL clients with the hashing method crdb-bcrypt (allowed range: 4-31)Basic/Standard/Advanced/Self-Hosted
server.user_login.password_hashes.default_cost.scram_sha_256
integer10610the hashing cost to use when storing passwords supplied as cleartext by SQL clients with the hashing method scram-sha-256 (allowed range: 4096-240000000000)Basic/Standard/Advanced/Self-Hosted
server.user_login.rehash_scram_stored_passwords_on_cost_change.enabled
booleantrueif server.user_login.password_hashes.default_cost.scram_sha_256 differs from, the cost in a stored hash, this controls whether to automatically re-encode stored passwords using scram-sha-256 with the new default costBasic/Standard/Advanced/Self-Hosted
server.user_login.timeout
duration10stimeout after which client authentication times out if some system range is unavailable (0 = no timeout)Basic/Standard/Advanced/Self-Hosted
server.user_login.upgrade_bcrypt_stored_passwords_to_scram.enabled
booleantrueif server.user_login.password_encryption=scram-sha-256, this controls whether to automatically re-encode stored passwords using crdb-bcrypt to scram-sha-256Basic/Standard/Advanced/Self-Hosted
server.web_session.purge.ttl
duration1h0m0sif nonzero, entries in system.web_sessions older than this duration are periodically purgedBasic/Standard/Advanced/Self-Hosted
server.web_session.timeout
(alias: server.web_session_timeout)
duration168h0m0sthe duration that a newly created web session will be validBasic/Standard/Advanced/Self-Hosted
spanconfig.bounds.enabled
booleantruedictates whether span config bounds are consulted when serving span configs for secondary tenantsAdvanced/Self-Hosted
spanconfig.range_coalescing.system.enabled
(alias: spanconfig.storage_coalesce_adjacent.enabled)
booleantruecollapse adjacent ranges with the same span configs, for the ranges specific to the system tenantAdvanced/Self-Hosted
spanconfig.range_coalescing.application.enabled
(alias: spanconfig.tenant_coalesce_adjacent.enabled)
booleantruecollapse adjacent ranges with the same span configs across all secondary tenant keyspacesAdvanced/Self-Hosted
sql.auth.change_own_password.enabled
booleanfalsecontrols whether a user is allowed to change their own password, even if they have no other privilegesBasic/Standard/Advanced/Self-Hosted
sql.auth.grant_option_for_owner.enabled
booleantruedetermines whether the GRANT OPTION for privileges is implicitly given to the owner of an objectBasic/Standard/Advanced/Self-Hosted
sql.auth.grant_option_inheritance.enabled
booleantruedetermines whether the GRANT OPTION for privileges is inherited through role membershipBasic/Standard/Advanced/Self-Hosted
sql.auth.public_schema_create_privilege.enabled
booleantruedetermines whether to grant all users the CREATE privileges on the public schema when it is createdBasic/Standard/Advanced/Self-Hosted
sql.auth.skip_underlying_view_privilege_checks.enabled
booleanfalsedetermines whether to skip privilege checks on tables underlying views. When enabled, users with SELECT privileges on a view can query it regardless of their privileges on the underlying tables, and row-level security policies are evaluated as the invoking user rather than the view owner. This restores pre-v26.2 behavior.Basic/Standard/Advanced/Self-Hosted
sql.catalog.allow_leased_descriptors.enabled
booleantrueif true, catalog views (crdb_internal, information_schema, pg_catalog) can use leased descriptors for improved performanceBasic/Standard/Advanced/Self-Hosted
sql.closed_session_cache.capacity
integer1000the maximum number of sessions in the cacheBasic/Standard/Advanced/Self-Hosted
sql.closed_session_cache.time_to_live
integer3600the maximum time to live, in secondsBasic/Standard/Advanced/Self-Hosted
sql.contention.event_store.capacity
byte size64 MiBthe in-memory storage capacity per-node of contention event storeBasic/Standard/Advanced/Self-Hosted
sql.contention.event_store.duration_threshold
duration0sminimum contention duration to cause the contention events to be collected into crdb_internal.transaction_contention_eventsBasic/Standard/Advanced/Self-Hosted
sql.contention.record_serialization_conflicts.enabled
booleantrueenables recording 40001 errors with conflicting txn meta as SERIALIZATION_CONFLICTcontention events into crdb_internal.transaction_contention_eventsBasic/Standard/Advanced/Self-Hosted
sql.contention.txn_id_cache.max_size
byte size64 MiBthe maximum byte size TxnID cache will use (set to 0 to disable)Basic/Standard/Advanced/Self-Hosted
sql.crdb_internal.tsdb_query.max_rows
integer500000maximum number of rows a single crdb_internal.tsdb_query call may return; queries that would return more error before any rows are surfaced. Set to 0 to disable the cap.Basic/Standard/Advanced/Self-Hosted
sql.crdb_internal.tsdb_query.max_time_range
duration168h0m0smaximum effective time range that a single crdb_internal.tsdb_query call may cover; the requested end_time is first clamped to the current wall-clock time before this cap is checkedBasic/Standard/Advanced/Self-Hosted
sql.cross_db_fks.enabled
booleanfalseif true, creating foreign key references across databases is allowedBasic/Standard/Advanced/Self-Hosted
sql.cross_db_sequence_owners.enabled
booleanfalseif true, creating sequences owned by tables from other databases is allowedBasic/Standard/Advanced/Self-Hosted
sql.cross_db_sequence_references.enabled
booleanfalseif true, sequences referenced by tables from other databases are allowedBasic/Standard/Advanced/Self-Hosted
sql.cross_db_views.enabled
booleanfalseif true, creating views that refer to other databases is allowedBasic/Standard/Advanced/Self-Hosted
sql.defaults.cost_scans_with_default_col_size.enabled
booleanfalsesetting to true uses the same size for all columns to compute scan cost
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.datestyle
enumerationiso, mdydefault value for DateStyle session setting [iso, mdy = 0, iso, dmy = 1, iso, ymd = 2]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.default_hash_sharded_index_bucket_count
integer16used as bucket count if bucket count is not specified in hash sharded index definition
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.default_int_size
integer8the size, in bytes, of an INT type
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.disallow_full_table_scans.enabled
booleanfalsesetting to true rejects queries that have planned a full table scan; set large_full_scan_rows > 0 to allow small full table scans estimated to read fewer than large_full_scan_rows
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.distsql
enumerationautodefault distributed SQL execution mode [off = 0, auto = 1, on = 2, always = 3]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.experimental_alter_column_type.enabled
booleanfalsedefault value for experimental_alter_column_type session setting; enables the use of ALTER COLUMN TYPE for general conversions
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.experimental_distsql_planning
enumerationoffdefault experimental_distsql_planning mode; enables experimental opt-driven DistSQL planning [off = 0, on = 1]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.experimental_enable_unique_without_index_constraints.enabled
booleanfalsedefault value for experimental_enable_unique_without_index_constraints session setting;disables unique without index constraints by default
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.experimental_implicit_column_partitioning.enabled
booleanfalsedefault value for experimental_enable_temp_tables; allows for the use of implicit column partitioning
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.experimental_temporary_tables.enabled
booleanfalsedefault value for experimental_enable_temp_tables; allows for use of temporary tables by default
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.foreign_key_cascades_limit
integer10000default value for foreign_key_cascades_limit session setting; limits the number of cascading operations that run as part of a single query
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.idle_in_session_timeout
duration0sdefault value for the idle_in_session_timeout; default value for the idle_in_session_timeout session setting; controls the duration a session is permitted to idle before the session is terminated; if set to 0, there is no timeout
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.idle_in_transaction_session_timeout
duration0sdefault value for the idle_in_transaction_session_timeout; controls the duration a session is permitted to idle in a transaction before the session is terminated; if set to 0, there is no timeout
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.implicit_select_for_update.enabled
booleantruedefault value for enable_implicit_select_for_update session setting; enables FOR UPDATE locking during the row-fetch phase of mutation statements
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.insert_fast_path.enabled
booleantruedefault value for enable_insert_fast_path session setting; enables a specialized insert path
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.intervalstyle
enumerationpostgresdefault value for IntervalStyle session setting [postgres = 0, iso_8601 = 1, sql_standard = 2]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.large_full_scan_rows
float0default value for large_full_scan_rows session variable which determines the table size at which full scans are considered large and disallowed when disallow_full_table_scans is set to true; set to 0 to reject all full table or full index scans when disallow_full_table_scans is true
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.locality_optimized_partitioned_index_scan.enabled
booleantruedefault value for locality_optimized_partitioned_index_scan session setting; enables searching for rows in the current region before searching remote regions
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.lock_timeout
duration0sdefault value for the lock_timeout; default value for the lock_timeout session setting; controls the duration a query is permitted to wait while attempting to acquire a lock on a key or while blocking on an existing lock in order to perform a non-locking read on a key; if set to 0, there is no timeout
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.on_update_rehome_row.enabled
booleantruedefault value for on_update_rehome_row; enables ON UPDATE rehome_row() expressions to trigger on updates
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.optimizer_use_histograms.enabled
booleantruedefault value for optimizer_use_histograms session setting; enables usage of histograms in the optimizer by default
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.optimizer_use_multicol_stats.enabled
booleantruedefault value for optimizer_use_multicol_stats session setting; enables usage of multi-column stats in the optimizer by default
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.override_alter_primary_region_in_super_region.enabled
booleanfalsedefault value for override_alter_primary_region_in_super_region; allows for altering the primary region even if the primary region is a member of a super region
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.override_multi_region_zone_config.enabled
booleanfalsedefault value for override_multi_region_zone_config; allows for overriding the zone configs of a multi-region table or database
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.prefer_lookup_joins_for_fks.enabled
booleanfalsedefault value for prefer_lookup_joins_for_fks session setting; causes foreign key operations to use lookup joins when possible
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.primary_region
stringif not empty, all databases created without a PRIMARY REGION will implicitly have the given PRIMARY REGION
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.reorder_joins_limit
integer8default number of joins to reorder
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.require_explicit_primary_keys.enabled
booleanfalsedefault value for requiring explicit primary keys in CREATE TABLE statements
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.results_buffer.size
byte size512 KiBdefault size of the buffer that accumulates results for a statement or a batch of statements before they are sent to the client. This can be overridden on an individual connection with the 'results_buffer_size' parameter. Note that auto-retries generally only happen while no results have been delivered to the client, so reducing this size can increase the number of retriable errors a client receives. On the other hand, increasing the buffer size can increase the delay until the client receives the first result row. Updating the setting only affects new connections. Setting to 0 disables any buffering.
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.serial_normalization
enumerationrowiddefault handling of SERIAL in table definitions [rowid = 0, virtual_sequence = 1, sql_sequence = 2, sql_sequence_cached = 3, unordered_rowid = 4, sql_sequence_cached_node = 5]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.statement_timeout
duration0sdefault value for the statement_timeout; default value for the statement_timeout session setting; controls the duration a query is permitted to run before it is canceled; if set to 0, there is no timeout
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.stub_catalog_tables.enabled
booleantruedefault value for stub_catalog_tables session setting
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.transaction_rows_read_err
integer0the limit for the number of rows read by a SQL transaction which - once exceeded - will fail the transaction (or will trigger a logging event to SQL_INTERNAL_PERF for internal transactions); use 0 to disable
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.transaction_rows_read_log
integer0the threshold for the number of rows read by a SQL transaction which - once exceeded - will trigger a logging event to SQL_PERF (or SQL_INTERNAL_PERF for internal transactions); use 0 to disable
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.transaction_rows_written_err
integer0the limit for the number of rows written by a SQL transaction which - once exceeded - will fail the transaction (or will trigger a logging event to SQL_INTERNAL_PERF for internal transactions); use 0 to disable
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.transaction_rows_written_log
integer0the threshold for the number of rows written by a SQL transaction which - once exceeded - will trigger a logging event to SQL_PERF (or SQL_INTERNAL_PERF for internal transactions); use 0 to disable
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.use_declarative_schema_changer
enumerationondefault value for use_declarative_schema_changer session setting;disables new schema changer by default [off = 0, on = 1, unsafe = 2, unsafe_always = 3]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.vectorize
enumerationondefault vectorize mode [on = 0, on = 1, on = 2, experimental_always = 3, off = 4]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.zigzag_join.enabled
booleanfalsedefault value for enable_zigzag_join session setting; disallows use of zig-zag join by default
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.distsql.temp_storage.workmem
byte size64 MiBmaximum amount of memory in bytes a processor can use before falling back to temp storageBasic/Standard/Advanced/Self-Hosted
sql.guardrails.max_row_size_err
byte size80 MiBmaximum size of row (or column family if multiple column families are in use) that SQL can write to the database, above which an error is returned; use 0 to disableBasic/Standard/Advanced/Self-Hosted
sql.guardrails.max_row_size_log
byte size16 MiBmaximum size of row (or column family if multiple column families are in use) that SQL can write to the database, above which an event is logged to SQL_PERF (or SQL_INTERNAL_PERF if the mutating statement was internal); use 0 to disableBasic/Standard/Advanced/Self-Hosted
sql.hash_sharded_range_pre_split.max
integer16max pre-split ranges to have when adding hash sharded index to an existing tableBasic/Standard/Advanced/Self-Hosted
sql.index_recommendation.drop_unused_duration
duration168h0m0sthe index unused duration at which we begin to recommend dropping the indexBasic/Standard/Advanced/Self-Hosted
sql.insights.anomaly_detection.enabled
booleantrueenable per-fingerprint latency recording and anomaly detectionBasic/Standard/Advanced/Self-Hosted
sql.insights.anomaly_detection.latency_threshold
duration50msstatements must surpass this threshold to trigger anomaly detection and identificationBasic/Standard/Advanced/Self-Hosted
sql.insights.anomaly_detection.memory_limit
byte size1.0 MiBthe maximum amount of memory allowed for tracking statement latenciesBasic/Standard/Advanced/Self-Hosted
sql.insights.execution_insights_capacity
integer1000the size of the per-node store of execution insightsBasic/Standard/Advanced/Self-Hosted
sql.insights.high_retry_count.threshold
integer10the number of retries a slow statement must have undergone for its high retry count to be highlighted as a potential problemBasic/Standard/Advanced/Self-Hosted
sql.insights.latency_threshold
duration100msamount of time after which an executing statement is considered slow. Use 0 to disable.Basic/Standard/Advanced/Self-Hosted
sql.log.failed_query.enabled
booleanfalsewhen set to true, every SQL statement that ends in an error is logged to a secondary logger on each node as a `failed_query` eventBasic/Standard/Advanced/Self-Hosted
sql.log.failed_query.internal_queries.enabled
booleanfalsewhen set to true, internal queries that end in an error are logged to a separate `failed_query_internal` event. Must have `sql.log.failed_query.enabled` set for this setting to have any effect.Basic/Standard/Advanced/Self-Hosted
sql.log.redact_names.enabled
booleanfalseif set, schema object identifers are redacted in SQL statements that appear in event logsBasic/Standard/Advanced/Self-Hosted
sql.log.scan_row_count_misestimate.enabled
booleanfalsewhen set to true, log a warning when a scan's actual row count differs significantly from the optimizer's estimateBasic/Standard/Advanced/Self-Hosted
sql.log.slow_query.experimental_full_table_scans.enabled
booleanfalsewhen set to true, statements that perform a full table/index scan will be logged to the slow query log even if they do not meet the latency threshold. Must have the slow query log enabled for this setting to have any effect.Basic/Standard/Advanced/Self-Hosted
sql.log.slow_query.internal_queries.enabled
booleanfalsewhen set to true, internal queries which exceed the slow query log threshold are logged to a separate log. Must have the slow query log enabled for this setting to have any effect.Basic/Standard/Advanced/Self-Hosted
sql.log.slow_query.latency_threshold
duration0swhen set to non-zero, log statements whose service latency exceeds the threshold to a secondary logger on each nodeBasic/Standard/Advanced/Self-Hosted
sql.log.user_audit
stringuser/role-based audit logging configurationBasic/Standard/Advanced/Self-Hosted
sql.log.user_audit.reduced_config.enabled
booleanfalseenables logic to compute a reduced audit configuration, computing the audit configuration only once at session start instead of at each SQL event. The tradeoff with the increase in performance (~5%), is that changes to the audit configuration (user role memberships/cluster setting) are not reflected within session. Users will need to start a new session to see these changes in their auditing behaviour.Basic/Standard/Advanced/Self-Hosted
sql.metrics.application_name.enabled
booleanfalsewhen enabled, SQL metrics would export application name as and additional label as part of child metrics. The number of unique label combinations is limited to 5000 by default.Basic/Standard/Advanced/Self-Hosted
sql.metrics.database_name.enabled
booleanfalsewhen enabled, SQL metrics would export database name as and additional label as part of child metrics. The number of unique label combinations is limited to 5000 by default.Basic/Standard/Advanced/Self-Hosted
sql.metrics.index_usage_stats.enabled
booleantruecollect per index usage statisticsBasic/Standard/Advanced/Self-Hosted
sql.metrics.max_mem_reported_stmt_fingerprints
integer100000the maximum number of reported statement fingerprints stored in memoryBasic/Standard/Advanced/Self-Hosted
sql.metrics.max_mem_reported_txn_fingerprints
integer100000the maximum number of reported transaction fingerprints stored in memoryBasic/Standard/Advanced/Self-Hosted
sql.metrics.max_mem_stmt_fingerprints
integer7500the maximum number of statement fingerprints stored in memoryBasic/Standard/Advanced/Self-Hosted
sql.metrics.max_mem_txn_fingerprints
integer7500the maximum number of transaction fingerprints stored in memoryBasic/Standard/Advanced/Self-Hosted
sql.metrics.statement_details.dump_to_logs.enabled
(alias: sql.metrics.statement_details.dump_to_logs)
booleanfalsedump collected statement statistics to node logs when periodically clearedBasic/Standard/Advanced/Self-Hosted
sql.metrics.statement_details.enabled
booleantruecollect per-statement query statisticsBasic/Standard/Advanced/Self-Hosted
sql.metrics.statement_details.gateway_node.enabled
booleanfalsesave the gateway node for each statement fingerprint. If false, the value will be stored as 0.Basic/Standard/Advanced/Self-Hosted
sql.metrics.statement_details.index_recommendation_collection.enabled
booleantruegenerate an index recommendation for each fingerprint IDBasic/Standard/Advanced/Self-Hosted
sql.metrics.statement_details.max_mem_reported_idx_recommendations
integer5000the maximum number of reported index recommendation info stored in memoryBasic/Standard/Advanced/Self-Hosted
sql.metrics.statement_details.threshold
duration0sminimum execution time to cause statement statistics to be collected. If configured, no transaction stats are collected.Basic/Standard/Advanced/Self-Hosted
sql.metrics.transaction_details.enabled
booleantruecollect per-application transaction statisticsBasic/Standard/Advanced/Self-Hosted
sql.multiple_modifications_of_table.enabled
booleanfalseif true, allow statements containing multiple INSERT ON CONFLICT, UPSERT, UPDATE, or DELETE subqueries modifying the same table, at the risk of data corruption if the same row is modified multiple times by a single statement (multiple INSERT subqueries without ON CONFLICT cannot cause corruption and are always allowed)Basic/Standard/Advanced/Self-Hosted
sql.multiregion.drop_primary_region.enabled
booleantrueallows dropping the PRIMARY REGION of a database if it is the last regionBasic/Standard/Advanced/Self-Hosted
sql.notices.enabled
booleantrueenable notices in the server/client protocol being sentBasic/Standard/Advanced/Self-Hosted
sql.optimizer.uniqueness_checks_for_gen_random_uuid.enabled
booleanfalseif enabled, uniqueness checks may be planned for mutations of UUID columns updated with gen_random_uuid(); otherwise, uniqueness is assumed due to near-zero collision probabilityBasic/Standard/Advanced/Self-Hosted
sql.procedures.plpgsql.late_binding.enabled
booleanfalsewhen true, PL/pgSQL procedure bodies are not resolved at creation time; references are resolved at CALL time instead, matching PostgreSQL PL/pgSQL semantics. Does not affect LANGUAGE SQL procedures or functionsBasic/Standard/Advanced/Self-Hosted
sql.schema.approx_max_object_count
integer20000approximate maximum number of schema objects allowed in the cluster; the check uses cached statistics, so the actual count may slightly exceed this limit; set to 0 to disableBasic/Standard/Advanced/Self-Hosted
sql.schema.auto_unlock.enabled
booleantruecontrols whether DDL operations will attempt to automatically unlock and re-lock schema_locked tables. When this setting is false, DDL on schema_locked tables is blocked unless the user manually unlocks the table first. The schema_locked storage parameter improves changefeed performance by locking the table's schema from the perspective of the changefeed.Basic/Standard/Advanced/Self-Hosted
sql.schema.telemetry.recurrence
string@weeklycron-tab recurrence for SQL schema telemetry jobAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
sql.spatial.experimental_box2d_comparison_operators.enabled
booleanfalseenables the use of certain experimental box2d comparison operatorsBasic/Standard/Advanced/Self-Hosted
sql.sqlcommenter.enabled
booleanfalseenables support for sqlcommenter. Key value parsed from sqlcommenter comments will be included in sql insights and sql logs. See https://google.github.io/sqlcommenter/ for more details.Basic/Standard/Advanced/Self-Hosted
sql.stats.activity.persisted_rows.max
integer200000maximum number of rows of statement and transaction activity that will be persisted in the system tablesBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_collection.enabled
booleantrueautomatic statistics collection modeBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_collection.fraction_stale_rows
float0.2target fraction of stale rows per table that will trigger a statistics refreshBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_collection.min_stale_rows
integer500target minimum number of stale rows per table that will trigger a statistics refreshBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_extremes_concurrency_limit
integer128determines the maximum number of concurrent automatic partial USING EXTREMES table statistics collection jobsBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_full_collection.enabled
booleantrueautomatic full statistics collection modeBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_full_concurrency_limit
integerSee description.determines the maximum number of concurrent automatic full table statistics collection jobs. The default value is computed as the number of vCPUs in a node divided by 2.Basic/Standard/Advanced/Self-Hosted
sql.stats.automatic_partial_collection.enabled
booleantrueautomatic partial statistics collection modeBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_partial_collection.fraction_stale_rows
float0.05target fraction of stale rows per table that will trigger a partial statistics refreshBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_partial_collection.min_stale_rows
integer100target minimum number of stale rows per table that will trigger a partial statistics refreshBasic/Standard/Advanced/Self-Hosted
sql.stats.canary_fraction
float0probability that table statistics will use canary mode instead of stable mode for query planning [0.0-1.0]Basic/Standard/Advanced/Self-Hosted
sql.stats.cleanup.recurrence
string@hourlycron-tab recurrence for SQL Stats cleanup jobBasic/Standard/Advanced/Self-Hosted
sql.stats.detailed_latency_metrics.enabled
booleanfalselabel latency metrics with the statement fingerprint. Workloads with tens of thousands of distinct query fingerprints should leave this setting false. (experimental, affects performance for workloads with high fingerprint cardinality)Basic/Standard/Advanced/Self-Hosted
sql.stats.error_on_concurrent_create_stats.enabled
booleanfalseset to true to error on concurrent CREATE STATISTICS jobs, instead of skipping themBasic/Standard/Advanced/Self-Hosted
sql.stats.flush.enabled
booleantrueif set, SQL execution statistics are periodically flushed to diskBasic/Standard/Advanced/Self-Hosted
sql.stats.flush.interval
duration10m0sthe interval at which SQL execution statistics are flushed to disk, this value must be less than or equal to 1 hourBasic/Standard/Advanced/Self-Hosted
sql.stats.forecasts.enabled
booleantruewhen true, enables generation of statistics forecasts by default for all tablesBasic/Standard/Advanced/Self-Hosted
sql.stats.forecasts.max_decrease
float0.3333333333333333the most a prediction is allowed to decrease, expressed as the minimum ratio of the prediction to the lowest prior observationBasic/Standard/Advanced/Self-Hosted
sql.stats.forecasts.min_goodness_of_fit
float0.95the minimum R² (goodness of fit) measurement required from all predictive models to use a forecastBasic/Standard/Advanced/Self-Hosted
sql.stats.forecasts.min_observations
integer3the mimimum number of observed statistics required to produce a statistics forecastBasic/Standard/Advanced/Self-Hosted
sql.stats.histogram_buckets.count
integer200maximum number of histogram buckets to build during table statistics collectionBasic/Standard/Advanced/Self-Hosted
sql.stats.histogram_buckets.include_most_common_values.enabled
booleantruewhether to include most common values as histogram bucketsBasic/Standard/Advanced/Self-Hosted
sql.stats.histogram_buckets.max_fraction_most_common_values
float0.1maximum fraction of histogram buckets to use for most common valuesBasic/Standard/Advanced/Self-Hosted
sql.stats.histogram_collection.enabled
booleantruehistogram collection modeBasic/Standard/Advanced/Self-Hosted
sql.stats.histogram_samples.count
integer0number of rows sampled for histogram construction during table statistics collection. Not setting this or setting a value of 0 means that a reasonable sample size will be automatically picked based on the table size.Basic/Standard/Advanced/Self-Hosted
sql.stats.multi_column_collection.enabled
booleantruemulti-column statistics collection modeBasic/Standard/Advanced/Self-Hosted
sql.stats.non_default_columns.min_retention_period
duration24h0m0sminimum retention period for table statistics collected on non-default columnsBasic/Standard/Advanced/Self-Hosted
sql.stats.non_indexed_json_histograms.enabled
booleanfalseset to true to collect table statistics histograms on non-indexed JSON columnsBasic/Standard/Advanced/Self-Hosted
sql.stats.persisted_rows.max
integer1000000maximum number of rows of statement and transaction statistics that will be persisted in the system tables before compaction beginsBasic/Standard/Advanced/Self-Hosted
sql.stats.post_events.enabled
booleanfalseif set, an event is logged for every successful CREATE STATISTICS jobBasic/Standard/Advanced/Self-Hosted
sql.stats.response.max
integer20000the maximum number of statements and transaction stats returned in a CombinedStatements requestBasic/Standard/Advanced/Self-Hosted
sql.stats.response.show_internal.enabled
booleanfalsecontrols if statistics for internal executions should be returned by the CombinedStatements and if internal sessions should be returned by the ListSessions endpoints. These endpoints are used to display statistics on the SQL Activity pagesBasic/Standard/Advanced/Self-Hosted
sql.stats.system_tables.enabled
booleantruewhen true, enables use of statistics on system tables by the query optimizerBasic/Standard/Advanced/Self-Hosted
sql.stats.system_tables_autostats.enabled
booleantruewhen true, enables automatic collection of statistics on system tablesBasic/Standard/Advanced/Self-Hosted
sql.stats.table_statistics_cache.capacity
integer256the maximum number of table statistics entries stored in the LRU cache. Each cache entry corresponds to a single table.Basic/Standard/Advanced/Self-Hosted
sql.stats.virtual_computed_columns.enabled
booleantrueset to true to collect table statistics on virtual computed columnsBasic/Standard/Advanced/Self-Hosted
sql.subset_unique_fks.enabled
booleantrueif true, foreign keys may be backed by a unique constraint that covers only a strict subset of the foreign key's referenced columns (e.g. a parent with UNIQUE(a) can back an FK that references (a, b)); set to false to require strict matching, as required by the SQL standard and PostgreSQLBasic/Standard/Advanced/Self-Hosted
sql.telemetry.query_sampling.enabled
booleanfalsewhen set to true, executed queries will emit an event on the telemetry logging channelBasic/Standard/Advanced/Self-Hosted
sql.telemetry.query_sampling.internal.enabled
booleanfalsewhen set to true, internal queries will be sampled in telemetry loggingBasic/Standard/Advanced/Self-Hosted
sql.telemetry.query_sampling.max_event_frequency
integer8the max event frequency (events per second) at which we sample executions for telemetry, note that it is recommended that this value shares a log-line limit of 10 logs per second on the telemetry pipeline with all other telemetry events. If sampling mode is set to 'transaction', this value is ignored.Basic/Standard/Advanced/Self-Hosted
sql.telemetry.query_sampling.mode
enumerationstatementthe execution level used for telemetry sampling. If set to 'statement', events are sampled at the statement execution level. If set to 'transaction', events are sampled at the transaction execution level, i.e. all statements for a transaction will be logged and are counted together as one sampled event (events are still emitted one per statement). [statement = 0, transaction = 1]Basic/Standard/Advanced/Self-Hosted
sql.telemetry.transaction_sampling.max_event_frequency
integer8the max event frequency (events per second) at which we sample transactions for telemetry. If sampling mode is set to 'statement', this setting is ignored. In practice, this means that we only sample a transaction if 1/max_event_frequency seconds have elapsed since the last transaction was sampled.Basic/Standard/Advanced/Self-Hosted
sql.telemetry.transaction_sampling.statement_events_per_transaction.max
integer50the maximum number of statement events to log for every sampled transaction. Note that statements that are logged by force do not adhere to this limit.Basic/Standard/Advanced/Self-Hosted
sql.temp_object_cleaner.batch_size
integer1000number of temporary objects to drop per transaction during cleanupBasic/Standard/Advanced/Self-Hosted
sql.temp_object_cleaner.cleanup_interval
duration30m0show often to clean up orphaned temporary objectsBasic/Standard/Advanced/Self-Hosted
sql.temp_object_cleaner.wait_interval
duration30m0show long after creation a temporary object will be cleaned upBasic/Standard/Advanced/Self-Hosted
sql.log.all_statements.enabled
(alias: sql.trace.log_statement_execute)
booleanfalseset to true to enable logging of all executed statementsBasic/Standard/Advanced/Self-Hosted
sql.trace.stmt.enable_threshold
duration0senables tracing on all statements; statements executing for longer than this duration will have their trace logged (set to 0 to disable); note that enabling this may have a negative performance impact; this setting applies to individual statements within a transaction and is therefore finer-grained than sql.trace.txn.enable_thresholdBasic/Standard/Advanced/Self-Hosted
sql.trace.txn.enable_threshold
duration0senables transaction traces for transactions exceeding this duration, used with `sql.trace.txn.sample_rate`Basic/Standard/Advanced/Self-Hosted
sql.trace.txn.include_internal.enabled
booleantrueenables tracing internal transactions as well as external workload using sample rate and threshold settingsBasic/Standard/Advanced/Self-Hosted
sql.trace.txn.jaeger_json_output.enabled
booleanfalseenables Jaeger JSON output for transaction traces in logsBasic/Standard/Advanced/Self-Hosted
sql.trace.txn.sample_rate
float1enables probabilistic transaction tracing. It should be used in conjunction with `sql.trace.txn.enable_threshold`. A percentage of transactions between 0 and 1.0 will have tracing enabled, and only those which exceed the configured threshold will be logged.Basic/Standard/Advanced/Self-Hosted
sql.ttl.changefeed_replication.disabled
booleanfalseif true, deletes issued by TTL will not be replicated via changefeeds (this setting will be ignored by changefeeds that have the ignore_disable_changefeed_replication option set; such changefeeds will continue to replicate all TTL deletes)Basic/Standard/Advanced/Self-Hosted
sql.ttl.default_delete_batch_size
integer100default amount of rows to delete in a single query during a TTL jobBasic/Standard/Advanced/Self-Hosted
sql.ttl.default_delete_rate_limit
integer100default delete rate limit (rows per second) per node for each TTL job. Use 0 to signify no rate limit.Basic/Standard/Advanced/Self-Hosted
sql.ttl.default_select_batch_size
integer500default amount of rows to select in a single query during a TTL jobBasic/Standard/Advanced/Self-Hosted
sql.ttl.default_select_rate_limit
integer0default select rate limit (rows per second) per node for each TTL job. Use 0 to signify no rate limit.Basic/Standard/Advanced/Self-Hosted
sql.ttl.job.enabled
booleantruewhether the TTL job is enabledBasic/Standard/Advanced/Self-Hosted
sql.txn.read_committed_isolation.enabled
booleantrueset to true to allow transactions to use the READ COMMITTED isolation level if specified by BEGIN/SET commandsBasic/Standard/Advanced/Self-Hosted
sql.txn.repeatable_read_isolation.enabled
(alias: sql.txn.snapshot_isolation.enabled)
booleanfalseset to true to allow transactions to use the REPEATABLE READ isolation level if specified by BEGIN/SET commandsBasic/Standard/Advanced/Self-Hosted
sql.txn_fingerprint_id_cache.capacity
integer100the maximum number of txn fingerprint IDs storedBasic/Standard/Advanced/Self-Hosted
sql.vecindex.stalled_op.timeout
duration100msamount of time before other vector index workers will assist with a stalled background fixupBasic/Standard/Advanced/Self-Hosted
storage.delete_compaction_excise.enabled
booleantrueset to false to direct Pebble to not partially excise sstables in delete-only compactionsAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
storage.ingest_split.enabled
booleantrueset to false to disable ingest-time splitting that lowers write-amplificationAdvanced/Self-Hosted
storage.ingestion.value_blocks.enabled
booleantrueset to true to enable writing of value blocks in ingestion sstablesBasic/Standard/Advanced/Self-Hosted
storage.max_sync_duration
duration20smaximum duration for disk operations; any operations that take longer than this setting trigger a warning log entry or process crashAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
storage.max_sync_duration.fatal.enabled
booleantrueif true, fatal the process when a disk operation exceeds storage.max_sync_durationBasic/Standard/Advanced/Self-Hosted
storage.sstable.compression_algorithm
enumerationfastestdetermines the compression algorithm to use for Pebble stores [snappy = 1, zstd = 2, none = 3, minlz = 4, fastest = 5, balanced = 6, good = 7, fast = 8]Advanced/Self-hosted (read-write); Basic/Standard (read-only)
storage.unhealthy_write_duration
duration20sduration for disk write operations, beyond which the disk will be reported as unhealthy for higher layer actionsAdvanced/Self-Hosted
storage.wal_failover.unhealthy_op_threshold
duration100msthe latency of a WAL write considered unhealthy and triggers a failover to a secondary WAL locationAdvanced/Self-Hosted
timeseries.storage.enabled
booleantrueif set, periodic timeseries data is stored within the cluster; disabling is not recommended unless you are storing the data elsewhereAdvanced/Self-Hosted
timeseries.storage.resolution_10s.ttl
duration240h0m0sthe maximum age of time series data stored at the 10 second resolution. Data older than this is subject to rollup and deletion.Advanced/Self-hosted (read-write); Basic/Standard (read-only)
timeseries.storage.resolution_1m.ttl
duration240h0m0sthe maximum age of time series data stored at the 1 minute resolution. Data older than this is subject to rollup and deletion.Advanced/Self-hosted (read-write); Basic/Standard (read-only)
timeseries.storage.resolution_30m.ttl
duration2160h0m0sthe maximum age of time series data stored at the 30 minute resolution. Data older than this is subject to deletion.Advanced/Self-hosted (read-write); Basic/Standard (read-only)
trace.debug_http_endpoint.enabled
(alias: trace.debug.enable)
booleanfalseif set, traces for recent requests can be seen at https://<ui>/debug/requestsBasic/Standard/Advanced/Self-Hosted
trace.opentelemetry.collector
stringaddress of an OpenTelemetry trace collector to receive traces using the otel gRPC protocol, as <host>:<port>. If no port is specified, 4317 will be used.Basic/Standard/Advanced/Self-Hosted
trace.snapshot.rate
duration0sif non-zero, interval at which background trace snapshots are capturedBasic/Standard/Advanced/Self-Hosted
trace.span_registry.enabled
booleanfalseif set, ongoing traces can be seen at https://<ui>/#/debug/tracezBasic/Standard/Advanced/Self-Hosted
trace.zipkin.collector
stringthe address of a Zipkin instance to receive traces, as <host>:<port>. If no port is specified, 9411 will be used.Basic/Standard/Advanced/Self-Hosted
ui.database_locality_metadata.enabled
booleantrueif enabled shows extended locality data about databases and tables in DB Console which can be expensive to computeBasic/Standard/Advanced/Self-Hosted
ui.default_timezone
stringthe default timezone used to format timestamps in the uiBasic/Standard/Advanced/Self-Hosted
ui.display_timezone
enumerationetc/utcthe timezone used to format timestamps in the ui. This setting is deprecatedand will be removed in a future version. Use the 'ui.default_timezone' setting instead. 'ui.default_timezone' takes precedence over this setting. [etc/utc = 0, america/new_york = 1]Basic/Standard/Advanced/Self-Hosted
version
version1000026.2-upgrading-to-1000026.3-step-016set the active cluster version in the format '<major>.<minor>'Basic/Standard/Advanced/Self-Hosted
admission.disk_bandwidth_tokens.elastic.enabled
booleantruewhen true, and provisioned bandwidth for the disk corresponding to a store is configured, tokens for elastic work will be limited if disk bandwidth becomes a bottleneckAdvanced/Self-Hosted
admission.epoch_lifo.enabled
booleanfalsewhen true, epoch-LIFO behavior is enabled when there is significant delay in admissionBasic/Standard/Advanced/Self-Hosted
admission.epoch_lifo.epoch_closing_delta_duration
duration5msthe delta duration before closing an epoch, for epoch-LIFO admission control orderingBasic/Standard/Advanced/Self-Hosted1ms
admission.epoch_lifo.epoch_duration
duration100msthe duration of an epoch, for epoch-LIFO admission control orderingBasic/Standard/Advanced/Self-Hosted1ms
admission.epoch_lifo.queue_delay_threshold_to_switch_to_lifo
duration105msthe queue delay encountered by a (tenant,priority) for switching to epoch-LIFO orderingBasic/Standard/Advanced/Self-Hosted1ms
admission.kv.enabled
booleantruewhen true, work performed by the KV layer is subject to admission controlAdvanced/Self-Hosted
admission.sql_kv_response.enabled
booleantruewhen true, work performed by the SQL layer when receiving a KV response is subject to admission controlBasic/Standard/Advanced/Self-Hosted
admission.sql_sql_response.enabled
booleantruewhen true, work performed by the SQL layer when receiving a DistSQL response is subject to admission controlBasic/Standard/Advanced/Self-Hosted
bulkio.backup.file_size
byte size128 MiBtarget size for individual data files produced during BACKUPBasic/Standard/Advanced/Self-Hosted
bulkio.backup.read_timeout
duration5m0samount of time after which a read attempt is considered timed out, which causes the backup to failBasic/Standard/Advanced/Self-Hosted
bulkio.backup.read_with_priority_after
duration1m0samount of time since the read-as-of time above which a BACKUP should use priority when retrying readsBasic/Standard/Advanced/Self-Hosted
bulkio.import.row_count_validation.mode
(alias: bulkio.import.row_count_validation.unsafe.mode)
enumerationasynccontrols validation of imported data via INSPECT jobs. Options: 'off' (no validation), 'async' (background validation), 'sync' (blocking validation). If disabled, IMPORT will not perform a post-import row count check. [off = 0, async = 1, sync = 2]Basic/Standard/Advanced/Self-Hosted
bulkio.merge.file_size
byte size1.0 GiBtarget size for individual data files produced during local only merge phasesBasic/Standard/Advanced/Self-Hosted
physical_replication.consumer.minimum_flush_interval
(alias: bulkio.stream_ingestion.minimum_flush_interval)
duration5sthe minimum timestamp between flushes; flushes may still occur if internal buffers fill upAdvanced/Self-Hosted
changefeed.aggregator.flush_jitter
float0.1jitter aggregator flushes as a fraction of min_checkpoint_frequency. This setting has no effect if min_checkpoint_frequency is set to 0.Basic/Standard/Advanced/Self-Hosted0
changefeed.backfill.concurrent_scan_requests
integer0number of concurrent scan requests per node issued during a backfillBasic/Standard/Advanced/Self-Hosted
changefeed.backfill.scan_request_size
integer524288the maximum number of bytes returned by each scan requestBasic/Standard/Advanced/Self-Hosted
changefeed.batch_reduction_retry.enabled
(alias: changefeed.batch_reduction_retry_enabled)
booleanfalseif true, kafka changefeeds upon erroring on an oversized batch will attempt to resend the messages with progressively lower batch sizesBasic/Standard/Advanced/Self-Hosted
changefeed.default_range_distribution_strategy
enumerationdefaultcontrols how changefeed work is distributed across nodes. 'default' defers to DistSQL for node selection and work distribution. 'balanced_simple' uses DistSQL for node selection but then attempts to evenly distribute ranges across those selected nodes for better load balancing. this setting does not override locality restrictions and can be overridden per-changefeed using the 'range_distribution_strategy' option. [default = 0, balanced_simple = 1]Basic/Standard/Advanced/Self-Hosted
changefeed.event_consumer_worker_queue_size
integer16if changefeed.event_consumer_workers is enabled, this setting sets the maxmimum number of events which a worker can bufferBasic/Standard/Advanced/Self-Hosted
changefeed.event_consumer_workers
integer0the number of workers to use when processing events: <0 disables, 0 assigns a reasonable default, >0 assigns the setting value. for experimental/core changefeeds and changefeeds using parquet format, this is disabledBasic/Standard/Advanced/Self-Hosted
changefeed.fast_gzip.enabled
booleantrueuse fast gzip implementationBasic/Standard/Advanced/Self-Hosted
changefeed.span_checkpoint.lag_threshold
(alias: changefeed.frontier_highwater_lag_checkpoint_threshold)
duration10m0sthe amount of time a changefeed's lagging (slowest) spans must lag behind its leading (fastest) spans before a span-level checkpoint to save leading span progress is written; if 0, span-level checkpoints due to lagging spans is disabledBasic/Standard/Advanced/Self-Hosted
changefeed.kafka.max_request_size
byte size256 MiBthe maximum number of uncompressed bytes sent in a single request to a Kafka broker; lowering this value helps avoid spurious "message too large" errors that can occur when multiple messages are combined into a single batch; this setting is overridden by the per-changefeed Flush { MaxBytes: <int> } optionBasic/Standard/Advanced/Self-Hosted268435456
changefeed.kafka_v2_error_details.enabled
booleantrueif enabled, Kafka v2 sinks will include the message key, size, and MVCC timestamp in message too large errorsBasic/Standard/Advanced/Self-Hosted
changefeed.memory.per_changefeed_limit
byte size512 MiBcontrols amount of data that can be buffered per changefeedBasic/Standard/Advanced/Self-Hosted
changefeed.resolved_timestamp.min_update_interval
(alias: changefeed.min_highwater_advance)
duration0sminimum amount of time that must have elapsed since the last time a changefeed's resolved timestamp was updated before it is eligible to be updated again; default of 0 means no minimum interval is enforced but updating will still be limited by the average time it takes to checkpoint progressBasic/Standard/Advanced/Self-Hosted
changefeed.node_throttle_config
stringspecifies node level throttling configuration for all changefeeedsBasic/Standard/Advanced/Self-Hosted
changefeed.partition_alg.enabled
booleanfalseif enabled, allows specifying the partition_alg changefeed option to choose between fnv-1a (default) and murmur2 hash functions for Kafka partitioning. Only affects changefeeds using a kafka sink with changefeed.new_kafka_sink_enabled set to true.Basic/Standard/Advanced/Self-Hosted
changefeed.progress.frontier_persistence.interval
duration30sminimum amount of time that must elapse before a changefeed will persist its entire span frontier againBasic/Standard/Advanced/Self-Hosted
changefeed.protect_timestamp.max_age
duration96h0m0sfail the changefeed if the protected timestamp age exceeds this threshold; 0 disables expirationBasic/Standard/Advanced/Self-Hosted
changefeed.protect_timestamp_interval
duration10m0scontrols how often the changefeed forwards its protected timestamp to the resolved timestampBasic/Standard/Advanced/Self-Hosted
changefeed.schema_feed.read_with_priority_after
duration1m0sretry with high priority if we were not able to read descriptors for too long; 0 disablesBasic/Standard/Advanced/Self-Hosted
changefeed.sink_io_workers
integer0the number of workers used by changefeeds when sending requests to the sink (currently the batching versions of webhook, pubsub, and kafka sinks that are enabled by changefeed.new_<sink type>_sink_enabled only): <0 disables, 0 assigns a reasonable default, >0 assigns the setting valueBasic/Standard/Advanced/Self-Hosted
cloudstorage.azure.concurrent_upload_buffers
integer1controls the number of concurrent buffers that will be used by the Azure client when uploading chunks.Each buffer can buffer up to cloudstorage.write_chunk.size of memory during an uploadBasic/Standard/Advanced/Self-Hosted
cloudstorage.azure.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.azure.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.azure.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.azure.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.gs.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.gs.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.gs.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.gs.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.http.custom_ca
stringcustom root CA (appended to system's default CAs) for verifying certificates when interacting with HTTPS storageBasic/Standard/Advanced/Self-Hosted
cloudstorage.http.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.http.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.http.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.http.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nodelocal.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nodelocal.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nodelocal.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nodelocal.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nullsink.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nullsink.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nullsink.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.nullsink.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.s3.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.s3.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.s3.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.s3.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.timeout
duration10m0sthe timeout for import/export storage operationsBasic/Standard/Advanced/Self-Hosted
cloudstorage.userfile.read.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.userfile.read.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.userfile.write.node_burst_limit
byte size0 Bburst limit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cloudstorage.userfile.write.node_rate_limit
byte size0 Blimit on number of bytes per second per node across operations writing to the designated cloud storage provider if non-zeroBasic/Standard/Advanced/Self-Hosted
cluster.auto_upgrade.enabled
booleantruewhen true, enables automatic finalization of major version upgrades once all cluster nodes are running an upgraded binaryBasic/Standard/Advanced/Self-Hosted
cluster.organization
stringorganization nameAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
cluster.preserve_downgrade_option
stringdisable (automatic or manual) cluster version upgrade from the specified version until resetBasic/Standard/Advanced/Self-Hosted
debug.zip.redact_addresses.enabled
booleanfalseenables the redaction of hostnames and ip addresses in debug zipBasic/Standard/Advanced/Self-Hosted
diagnostics.active_query_dumps.enabled
booleantrueexperimental: enable dumping of anonymized active queries to disk when node is under memory pressureAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
diagnostics.forced_sql_stat_reset.interval
duration2h0m0sinterval after which the reported SQL Stats are reset even if not collected by telemetry reporter. It has a max value of 24H.Basic/Standard/Advanced/Self-Hosted0s24h0m0s
diagnostics.memory_monitoring_dumps.enabled
booleantrueenable dumping of memory monitoring state at the same time as heap profiles are takenAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
diagnostics.reporting.enabled
booleantrueenable reporting diagnostic metrics to cockroach labs, but is ignored for Trial or Free licensesBasic/Standard/Advanced/Self-Hosted
diagnostics.reporting.interval
duration1h0m0sinterval at which diagnostics data should be reportedBasic/Standard/Advanced/Self-Hosted
enterprise.license
stringthe encoded cluster licenseAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
external.graphite.endpoint
stringif nonempty, push server metrics to the Graphite or Carbon server at the specified host:portBasic/Standard/Advanced/Self-Hosted
external.graphite.interval
duration10sthe interval at which metrics are pushed to Graphite (if enabled)Basic/Standard/Advanced/Self-Hosted0s15m0s
feature.backup.enabled
booleantrueset to true to enable backups, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.changefeed.enabled
booleantrueset to true to enable changefeeds, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.export.enabled
booleantrueset to true to enable exports, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.import.enabled
booleantrueset to true to enable imports, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.infer_rbr_region_col_using_constraint.enabled
booleanfalseset to true to enable looking up the region column via a foreign key constraint in a REGIONAL BY ROW table, false to disable; default is falseBasic/Standard/Advanced/Self-Hosted
feature.restore.enabled
booleantrueset to true to enable restore, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.schema_change.enabled
booleantrueset to true to enable schema changes, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.stats.enabled
booleantrueset to true to enable CREATE STATISTICS/ANALYZE, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
feature.vector_index.enabled
booleantrueset to true to enable vector indexes, false to disable; default is trueBasic/Standard/Advanced/Self-Hosted
jobs.retention_time
duration336h0m0sthe amount of time for which records for completed jobs are retainedBasic/Standard/Advanced/Self-Hosted
kv.allocator.lease_rebalance_threshold
float0.05minimum fraction away from the mean a store's lease count can be before it is considered for lease-transfersAdvanced/Self-Hosted
kv.allocator.load_based_rebalancing
enumerationautowhether to rebalance based on the distribution of load across stores [off = 0, leases = 1, leases and replicas = 2, multi-metric only = 3, multi-metric and count = 4, auto = 5]Advanced/Self-Hosted
kv.allocator.load_based_rebalancing.objective
enumerationcpuwhat objective does the cluster use to rebalance; if set to `qps` the cluster will attempt to balance qps among stores, if set to `cpu` the cluster will attempt to balance cpu usage among stores [qps = 0, cpu = 1]Advanced/Self-Hosted
kv.allocator.load_based_rebalancing_interval
duration1m0sthe rough interval at which each store will check for load-based lease / replica rebalancing opportunitiesAdvanced/Self-Hosted
kv.allocator.qps_rebalance_threshold
float0.1minimum fraction away from the mean a store's QPS (such as queries per second) can be before it is considered overfull or underfullAdvanced/Self-Hosted0.01
kv.allocator.range_rebalance_threshold
float0.05minimum fraction away from the mean a store's range count can be before it is considered overfull or underfullAdvanced/Self-Hosted0
kv.allocator.store_cpu_rebalance_threshold
float0.1minimum fraction away from the mean a store's cpu usage can be before it is considered overfull or underfullAdvanced/Self-Hosted0.01
kv.bulk_io_write.max_rate
byte size1.0 TiBthe rate limit (bytes/sec) to use for writes to disk on behalf of bulk io opsAdvanced/Self-Hosted
kv.bulk_io_write.min_capacity_remaining_fraction
float0.05remaining store capacity fraction below which bulk ingestion requests are rejectedAdvanced/Self-Hosted0.040.3
kv.bulk_sst.max_allowed_overage
byte size64 MiBif positive, allowed size in excess of target size for SSTs from export requests; export requests (i.e. BACKUP) may buffer up to the sum of kv.bulk_sst.target_size and kv.bulk_sst.max_allowed_overage in memoryAdvanced/Self-Hosted
kv.bulk_sst.target_size
byte size16 MiBtarget size for SSTs emitted from export requests; export requests (i.e. BACKUP) may buffer up to the sum of kv.bulk_sst.target_size and kv.bulk_sst.max_allowed_overage in memoryAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.follower_reads.enabled
(alias: kv.closed_timestamp.follower_reads_enabled)
booleantrueallow (all) replicas to serve consistent historical reads based on closed timestamp informationAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.lead_for_global_reads_auto_tune.enabled
booleanfalseif enabled, observed network latency between leaseholders and their furthest follower will be used to adjust closed timestamp policies for rangesranges configured to serve global reads. kv.closed_timestamp.lead_for_global_reads_override takes precedence if set.Advanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.lead_for_global_reads_override
duration0sif nonzero, overrides the lead time that global_read ranges use to publish closed timestampsAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.side_transport_interval
duration200msthe interval at which the closed timestamp side-transport attempts to advance each range's closed timestamp; set to 0 to disable the side-transportAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.side_transport_pacing_refresh_interval
duration10msthe refresh interval for the task pacer that controls pacing of sending sidetransport updates to avoid overloading the system when many connections are waitingAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.side_transport_pacing_smear_interval
duration1msthe smear interval for the task pacer that controls the amount of time each paced batch is going to take when broadcasting sidetransport updatesAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.closed_timestamp.target_duration
duration3sif nonzero, attempt to provide closed timestamp notifications for timestamps trailing cluster time by approximately this durationAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.dist_sender.circuit_breaker.cancellation.enabled
booleantruewhen enabled, in-flight requests will be cancelled when the circuit breaker tripsBasic/Standard/Advanced/Self-Hosted
kv.dist_sender.circuit_breaker.cancellation.write_grace_period
duration10show long after the circuit breaker trips to cancel write requests (these can't retry internally, so should be long enough to allow quorum/lease recovery)Basic/Standard/Advanced/Self-Hosted0s1m0s
kv.dist_sender.circuit_breaker.probe.interval
duration3sinterval between replica probesBasic/Standard/Advanced/Self-Hosted
kv.dist_sender.circuit_breaker.probe.threshold
duration3sduration of errors or stalls after which a replica will be probedBasic/Standard/Advanced/Self-Hosted
kv.dist_sender.circuit_breaker.probe.timeout
duration3stimeout for replica probesBasic/Standard/Advanced/Self-Hosted
kv.dist_sender.circuit_breakers.mode
enumerationliveness range onlyset of ranges to trip circuit breakers for failing or stalled replicas [no ranges = 0, liveness range only = 1, all ranges = 2]Basic/Standard/Advanced/Self-Hosted
kv.lease_transfer_read_summary.global_budget
byte size0 Bcontrols the maximum number of bytes that will be used to summarize the global segment of the timestamp cache during lease transfers and range merges. A smaller budget will result in loss of precision.Advanced/Self-Hosted
kv.lease_transfer_read_summary.local_budget
byte size4.0 MiBcontrols the maximum number of bytes that will be used to summarize the local segment of the timestamp cache during lease transfers and range merges. A smaller budget will result in loss of precision.Advanced/Self-Hosted
kv.log_range_and_node_events.enabled
booleantrueset to true to transactionally log range events (e.g., split, merge, add/remove voter/non-voter) into system.rangelogand node join and restart events into system.eventologAdvanced/Self-Hosted
kv.protectedts.reconciliation.interval
duration5m0sthe frequency for reconciling jobs with protected timestamp recordsAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.raft.leader_fortification.fraction_enabled
float1controls the fraction of ranges for which the raft leader fortification protocol is enabled. Leader fortification is needed for a range to use a Leader lease. Set to 0.0 to disable leader fortification and, by extension, Leader leases. Set to 1.0 to enable leader fortification for all ranges and, by extension, use Leader leases for all ranges which do not require expiration-based leases. Set to a value between 0.0 and 1.0 to gradually roll out Leader leases across the ranges in a cluster.Advanced/Self-Hosted01
kv.range.range_size_hard_cap
byte size8.0 GiBhard cap on the maximum size a range is allowed to grow to withoutsplitting before writes to the range are blocked. Takes precedence over all other configurationsAdvanced/Self-Hosted67108864
kv.range_split.by_load.enabled
(alias: kv.range_split.by_load_enabled)
booleantrueallow automatic splits of ranges based on where load is concentratedAdvanced/Self-Hosted
kv.range_split.load_cpu_threshold
duration500msthe CPU use per second over which, the range becomes a candidate for load based splittingAdvanced/Self-Hosted10ms
kv.range_split.load_qps_threshold
integer2500the QPS over which, the range becomes a candidate for load based splittingAdvanced/Self-Hosted
kv.rangefeed.client.stream_startup_rate
integer100controls the rate per second the client will initiate new rangefeed stream for a single range; 0 implies unlimitedBasic/Standard/Advanced/Self-Hosted
kv.rangefeed.closed_timestamp_refresh_interval
duration3sthe interval at which closed-timestamp updatesare delivered to rangefeeds; set to 0 to use kv.closed_timestamp.side_transport_intervalAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.rangefeed.enabled
booleanfalseif set, rangefeed registration is enabledAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
kv.replica_circuit_breaker.slow_replication_threshold
duration1m0sduration after which slow proposals trip the per-Replica circuit breaker (zero duration disables breakers)Advanced/Self-Hosted
kv.replica_raft.leaderless_unavailable_threshold
duration1m0sduration after which leaderless replicas is considered unavailable. Set to 0 to disable leaderless replica availability checksAdvanced/Self-Hosted
kv.replica_stats.addsst_request_size_factor
integer50000the divisor that is applied to addsstable request sizes, then recorded in a leaseholders QPS; 0 means all requests are treated as cost 1Advanced/Self-Hosted
kv.replication_reports.interval
duration1m0sthe frequency for generating the replication_constraint_stats, replication_stats_report and replication_critical_localities reports (set to 0 to disable)Advanced/Self-Hosted
kv.snapshot_rebalance.max_rate
byte size32 MiBthe rate limit (bytes/sec) to use for rebalance and upreplication snapshotsAdvanced/Self-Hosted1048576
kv.transaction.max_intents_and_locks
integer0maximum count of inserts or durable locks for a single transactions, 0 to disableBasic/Standard/Advanced/Self-Hosted
kv.transaction.max_intents_bytes
integer4194304maximum number of bytes used to track locks in transactionsBasic/Standard/Advanced/Self-Hosted
kv.transaction.max_refresh_spans_bytes
integer4194304maximum number of bytes used to track refresh spans in serializable transactionsBasic/Standard/Advanced/Self-Hosted
kv.transaction.randomized_anchor_key.enabled
booleanfalsedictates whether a transactions anchor key is randomized or notBasic/Standard/Advanced/Self-Hosted
kv.transaction.reject_over_max_intents_budget.enabled
booleanfalseif set, transactions that exceed their lock tracking budget (kv.transaction.max_intents_bytes) are rejected instead of having their lock spans imprecisely compressedBasic/Standard/Advanced/Self-Hosted
kv.transaction.write_buffering.enabled
booleantrueif enabled, transactional writes are buffered on the clientBasic/Standard/Advanced/Self-Hosted
kv.transaction.write_buffering.max_buffer_size
byte size4.0 MiBif non-zero, defines that maximum size of the buffer that will be used to buffer transactional writes per-transactionBasic/Standard/Advanced/Self-Hosted
kv.transaction.write_pipelining.locking_reads.enabled
booleantrueif enabled, transactional locking reads are pipelined through Raft consensusBasic/Standard/Advanced/Self-Hosted
kv.transaction.write_pipelining.ranged_writes.enabled
booleantrueif enabled, transactional ranged writes are pipelined through Raft consensusBasic/Standard/Advanced/Self-Hosted
kv.transaction.write_pipelining.enabled
(alias: kv.transaction.write_pipelining_enabled)
booleantrueif enabled, transactional writes are pipelined through Raft consensusBasic/Standard/Advanced/Self-Hosted
kv.transaction.write_pipelining.max_batch_size
(alias: kv.transaction.write_pipelining_max_batch_size)
integer128if non-zero, defines that maximum size batch that will be pipelined through Raft consensusBasic/Standard/Advanced/Self-Hosted
kvadmission.store.provisioned_bandwidth
byte size0 Bif set to a non-zero value, this is used as the provisioned bandwidth (in bytes/s), for each store. It can be overridden on a per-store basis using the --store flag. Note that setting the provisioned bandwidth to a positive value may enable disk bandwidth based admission control, since admission.disk_bandwidth_tokens.elastic.enabled defaults to trueAdvanced/Self-Hosted
kvadmission.store.snapshot_ingest_bandwidth_control.enabled
booleantrueif set to true, snapshot ingests will be subject to disk write control in ACAdvanced/Self-Hosted
kvadmission.store.snapshot_ingest_bandwidth_control.min_rate.enabled
booleantrueif set to true, snapshot ingests will be admitted at a minimum rate when kvadmission.store.provisioned_bandwidth is set to a non-zero value. Disabling this setting can lead to snapshots being starved out by foreground traffic.Advanced/Self-Hosted
obs.ash.buffer_size
integer1000000number of ASH samples to retain in memoryAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
obs.ash.enabled
booleanfalseenable active session history samplingAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
obs.ash.log_interval
duration10m0sinterval between periodic ASH top-N workload summary logs; also used as the lookback window for ASH reports written by the env sampler profilerAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
obs.ash.log_top_n
integer10maximum number of entries in periodic ASH workload summary, ranked by sample count descendingAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
obs.ash.response_limit
integer10000maximum number of ASH samples returned per node in fan-out responsesBasic/Standard/Advanced/Self-Hosted
obs.ash.sample_interval
duration1sinterval between ASH samplesAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
obs.metrics_scrape.default_visibility
enumerationallcontrols the default metric visibility level for the metrics scrape endpoints [internal = -1, all = 0, support = 1, essential = 2]Basic/Standard/Advanced/Self-Hosted
obs.tablemetadata.automatic_updates.enabled
booleanfalseenables automatic updates of the table metadata cache system.table_metadataBasic/Standard/Advanced/Self-Hosted
obs.tablemetadata.data_valid_duration
duration20m0sthe duration for which the data in system.table_metadata is considered validBasic/Standard/Advanced/Self-Hosted1m0s
schedules.backup.gc_protection.enabled
booleantrueenable chaining of GC protection across backups run as part of a scheduleBasic/Standard/Advanced/Self-Hosted
security.client_cert.san_required.enabled
booleanfalsemandates a requirement for client certs to contain SANAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
security.client_cert.subject_required.enabled
booleanfalsemandates a requirement for subject role to be set for db userAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
security.ocsp.mode
enumerationoffuse OCSP to check whether TLS certificates are revoked. If the OCSP server is unreachable, in strict mode all certificates will be rejected and in lax mode all certificates will be accepted. [off = 0, lax = 1, strict = 2]Basic/Standard/Advanced/Self-Hosted
security.ocsp.timeout
duration3stimeout before considering the OCSP server unreachableBasic/Standard/Advanced/Self-Hosted
security.provisioning.ldap.enabled
booleanfalseenables automatic creation of SQL users upon successful LDAP loginBasic/Standard/Advanced/Self-Hosted
server.auth_log.sql_connections.enabled
booleanfalseif set, log SQL client connect and disconnect events to the SESSIONS log channel (note: may hinder performance on loaded nodes)Basic/Standard/Advanced/Self-Hosted
server.auth_log.sql_sessions.enabled
booleanfalseif set, log verbose SQL session authentication events to the SESSIONS log channel (note: may hinder performance on loaded nodes). Session start and end events are always logged regardless of this setting; disable the SESSIONS log channel to suppress them.Basic/Standard/Advanced/Self-Hosted
server.authentication_cache.enabled
booleantrueenables a cache used during authentication to avoid lookups to system tables when retrieving per-user authentication-related informationBasic/Standard/Advanced/Self-Hosted
server.child_metrics.enabled
booleanfalseenables the exporting of child metrics, additional prometheus time series with extra labelsBasic/Standard/Advanced/Self-Hosted
server.child_metrics.include_aggregate.enabled
booleantrueinclude the reporting of the aggregate time series when child metrics are enabled. This cluster setting has no effect if child metrics are disabled.Basic/Standard/Advanced/Self-Hosted
server.clock.forward_jump_check.enabled
(alias: server.clock.forward_jump_check_enabled)
booleanfalseif enabled, forward clock jumps > max_offset/2 will cause a panicBasic/Standard/Advanced/Self-Hosted
server.clock.persist_upper_bound_interval
duration0sthe interval between persisting the wall time upper bound of the clock. The clock does not generate a wall time greater than the persisted timestamp and will panic if it sees a wall time greater than this value. When cockroach starts, it waits for the wall time to catch-up till this persisted timestamp. This guarantees monotonic wall time across server restarts. Not setting this or setting a value of 0 disables this feature.Basic/Standard/Advanced/Self-Hosted
server.consistency_check.max_rate
byte size8.0 MiBthe rate limit (bytes/sec) to use for consistency checks; used in conjunction with server.consistency_check.interval to control the frequency of consistency checks. Note that setting this too high can negatively impact performance.Advanced/Self-Hosted
server.eventlog.enabled
booleantrueif set, logged notable events are also stored in the table system.eventlogBasic/Standard/Advanced/Self-Hosted
server.eventlog.ttl
duration2160h0m0sif nonzero, entries in system.eventlog older than this duration are periodically purgedBasic/Standard/Advanced/Self-Hosted
server.host_based_authentication.configuration
stringhost-based authentication configuration to use during connection authenticationBasic/Standard/Advanced/Self-Hosted
server.hot_ranges_request.node.timeout
duration5m0sthe duration allowed for a single node to return hot range data before the request is cancelled; if set to 0, there is no timeoutBasic/Standard/Advanced/Self-Hosted
server.hsts.enabled
booleanfalseif true, HSTS headers will be sent along with all HTTP requests. The headers will contain a max-age setting of one year. Browsers honoring the header will always use HTTPS to access the DB Console. Ensure that TLS is correctly configured prior to enabling.Basic/Standard/Advanced/Self-Hosted
server.http.base_path
string/path to redirect the user to upon succcessful loginBasic/Standard/Advanced/Self-Hosted
server.identity_map.configuration
stringsystem-identity to database-username mappingsBasic/Standard/Advanced/Self-Hosted
server.jwt_authentication.audience
stringsets accepted audience values for JWT logins over the SQL interfaceBasic/Standard/Advanced/Self-Hosted
server.jwt_authentication.claim
stringsets the JWT claim that is parsed to get the username; may be a simple claim name (e.g. email) or a JSON Pointer per RFC 6901 (e.g. /kubernetes.io/serviceaccount/uid)Basic/Standard/Advanced/Self-Hosted
server.jwt_authentication.client.timeout
duration15ssets the client timeout for external calls made during JWT authentication (e.g. fetching JWKS, etc.)Basic/Standard/Advanced/Self-Hosted
server.jwt_authentication.enabled
booleanfalseenables or disables JWT login for the SQL interfaceBasic/Standard/Advanced/Self-Hosted
server.jwt_authentication.issuers.configuration
(alias: server.jwt_authentication.issuers)
stringsets accepted issuer values for JWT logins over the SQL interface which can be a single issuer URL string or a JSON string containing an array of issuer URLs or a JSON object containing map of issuer URLS to JWKS URIsBasic/Standard/Advanced/Self-Hosted
server.jwt_authentication.issuers.custom_ca
stringsets the PEM encoded custom root CA for verifying certificates while fetching JWKSBasic/Standard/Advanced/Self-Hosted
server.jwt_authentication.jwks
string{"keys":[]}sets the public key set for JWT logins over the SQL interface (JWKS format)Basic/Standard/Advanced/Self-Hosted
server.jwt_authentication.jwks_auto_fetch.enabled
booleanfalseenables or disables automatic fetching of JWKS from the issuer's well-known endpoint or JWKS URI set in JWTAuthIssuersConfig. If this is enabled, the server.jwt_authentication.jwks will be ignored.Basic/Standard/Advanced/Self-Hosted
server.ldap_authentication.client.tls_certificate
stringsets the client certificate PEM for establishing mTLS connection with LDAP serverBasic/Standard/Advanced/Self-Hosted
server.ldap_authentication.client.tls_key
stringsets the client key PEM for establishing mTLS connection with LDAP serverBasic/Standard/Advanced/Self-Hosted
server.ldap_authentication.domain.custom_ca
stringsets the PEM encoded custom root CA for verifying domain certificates when establishing connection with LDAP serverBasic/Standard/Advanced/Self-Hosted
server.log_gc.max_deletions_per_cycle
integer1000the maximum number of entries to delete on each purge of log-like system tablesBasic/Standard/Advanced/Self-Hosted
server.log_gc.period
duration1h0m0sthe period at which log-like system tables are checked for old entriesBasic/Standard/Advanced/Self-Hosted
server.max_connections_per_gateway
integer-1the maximum number of SQL connections per gateway allowed at a given time (note: this will only limit future connection attempts and will not affect already established connections). Negative values result in unlimited number of connections. Superusers are not affected by this limit.Basic/Standard/Advanced/Self-Hosted
server.max_open_transactions_per_gateway
integer-1the maximum number of open SQL transactions per gateway allowed at a given time. Negative values result in unlimited number of connections. Superusers are not affected by this limit.Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.autologin.enabled
(alias: server.oidc_authentication.autologin)
booleanfalseif true, logged-out visitors to the DB Console will be automatically redirected to the OIDC login endpointBasic/Standard/Advanced/Self-Hosted
server.oidc_authentication.button_text
stringLog in with your OIDC providertext to show on button on DB Console login page to login with your OIDC provider (only shown if OIDC is enabled)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.claim_json_key
stringsets JSON key of principal to extract from payload after OIDC authentication completes (usually email or sid)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.client.timeout
duration15ssets the client timeout for external calls made during OIDC authentication (e.g. authorization code flow, etc.)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.client_id
stringsets OIDC client idBasic/Standard/Advanced/Self-Hosted
server.oidc_authentication.client_secret
stringsets OIDC client secretBasic/Standard/Advanced/Self-Hosted
server.oidc_authentication.enabled
booleanfalseenables or disabled OIDC login for the DB ConsoleBasic/Standard/Advanced/Self-Hosted
server.oidc_authentication.principal_regex
string(.+)regular expression to apply to extracted principal (see claim_json_key setting) to translate to SQL user (golang regex format, must include 1 grouping to extract)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.provider.custom_ca
stringsets the PEM encoded custom root CA for verifying certificates while authenticating through the OIDC providerBasic/Standard/Advanced/Self-Hosted
server.oidc_authentication.provider_url
stringsets OIDC provider URL ({provider_url}/.well-known/openid-configuration must resolve)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.redirect_url
stringhttps://localhost:8080/oidc/v1/callbacksets OIDC redirect URL via a URL string or a JSON string containing a required `redirect_urls` key with an object that maps from region keys to URL strings (URLs should point to your load balancer and must route to the path /oidc/v1/callback)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.scopes
stringopenidsets OIDC scopes to include with authentication request (space delimited list of strings, required to start with `openid`)Basic/Standard/Advanced/Self-Hosted
server.oidc_authentication.tls_insecure_skip_verify.enabled
booleanfalseif true, TLS certificate verification is skipped for connections to the OIDC provider (insecure)Basic/Standard/Advanced/Self-Hosted
server.rangelog.ttl
duration720h0m0sif nonzero, entries in system.rangelog older than this duration are periodically purgedAdvanced/Self-Hosted
server.redact_sensitive_settings.enabled
booleanfalseenables or disables the redaction of sensitive settings in the output of SHOW CLUSTER SETTINGS and SHOW ALL CLUSTER SETTINGS for users without the MODIFYCLUSTERSETTING privilegeBasic/Standard/Advanced/Self-Hosted
server.shutdown.connections.timeout
(alias: server.shutdown.connection_wait)
duration0sthe maximum amount of time a server waits for all SQL connections to be closed before proceeding with a drain. (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting)Basic/Standard/Advanced/Self-Hosted0s10h0m0s
server.shutdown.initial_wait
(alias: server.shutdown.drain_wait)
duration0sthe amount of time a server waits in an unready state before proceeding with a drain (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting. --drain-wait is to specify the duration of the whole draining process, while server.shutdown.initial_wait is to set the wait time for health probes to notice that the node is not ready.)Basic/Standard/Advanced/Self-Hosted0s10h0m0s
server.shutdown.lease_transfer_iteration.timeout
(alias: server.shutdown.lease_transfer_wait)
duration5sthe timeout for a single iteration of the range lease transfer phase of draining (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting)Advanced/Self-Hosted
server.shutdown.transactions.timeout
(alias: server.shutdown.query_wait)
duration10sthe timeout for waiting for active transactions to finish during a drain (note that the --drain-wait parameter for cockroach node drain may need adjustment after changing this setting)Basic/Standard/Advanced/Self-Hosted0s10h0m0s
server.sql_tcp_keep_alive.count
integer3maximum number of probes that will be sent out before a connection is dropped because it's unresponsive (Linux and Darwin only). The value 0 is the operating system default.Basic/Standard/Advanced/Self-Hosted
server.sql_tcp_keep_alive.idle
duration0stime with no network activity before sending a TCP keepalive probe (Linux and Darwin only). If 0, the value of server.sql_tcp_keep_alive.interval is used. The value 0 is the operating system default.Basic/Standard/Advanced/Self-Hosted0s
server.sql_tcp_keep_alive.interval
duration10stime between keep alive probes and idle time before probes are sent out. The value 0 is the operating system default.Basic/Standard/Advanced/Self-Hosted0s
server.sql_tcp_user.timeout
duration0sspecifies the maximum amount of time that transmitted data can remain unacknowledged before the underlying TCP connection is forcefully closed. (Linux and Darwin only). The value 0 is the operating system default.Basic/Standard/Advanced/Self-Hosted0s
server.time_until_store_dead
duration5m0sthe time after which if there is no new gossiped information about a store, it is considered deadBasic/Standard/Advanced/Self-Hosted25s
server.user_login.cert_password_method.auto_scram_promotion.enabled
booleantruewhether to automatically promote cert-password authentication to use SCRAMBasic/Standard/Advanced/Self-Hosted
server.user_login.downgrade_scram_stored_passwords_to_bcrypt.enabled
booleantrueif server.user_login.password_encryption=crdb-bcrypt, this controls whether to automatically re-encode stored passwords using scram-sha-256 to crdb-bcryptBasic/Standard/Advanced/Self-Hosted
server.user_login.min_password_length
integer1the minimum length accepted for passwords set in cleartext via SQL. Note that a value lower than 1 is ignored: passwords cannot be empty in any case. This setting only applies when adding new users or altering an existing user's password; it will not affect existing logins.Basic/Standard/Advanced/Self-Hosted
server.user_login.password_encryption
enumerationscram-sha-256which hash method to use to encode cleartext passwords passed via ALTER/CREATE USER/ROLE WITH PASSWORD [crdb-bcrypt = 2, scram-sha-256 = 3]Basic/Standard/Advanced/Self-Hosted
server.user_login.password_hashes.default_cost.crdb_bcrypt
integer10the hashing cost to use when storing passwords supplied as cleartext by SQL clients with the hashing method crdb-bcrypt (allowed range: 4-31)Basic/Standard/Advanced/Self-Hosted
server.user_login.password_hashes.default_cost.scram_sha_256
integer10610the hashing cost to use when storing passwords supplied as cleartext by SQL clients with the hashing method scram-sha-256 (allowed range: 4096-240000000000)Basic/Standard/Advanced/Self-Hosted4096240000000000
server.user_login.rehash_scram_stored_passwords_on_cost_change.enabled
booleantrueif server.user_login.password_hashes.default_cost.scram_sha_256 differs from, the cost in a stored hash, this controls whether to automatically re-encode stored passwords using scram-sha-256 with the new default costBasic/Standard/Advanced/Self-Hosted
server.user_login.timeout
duration10stimeout after which client authentication times out if some system range is unavailable (0 = no timeout)Basic/Standard/Advanced/Self-Hosted
server.user_login.upgrade_bcrypt_stored_passwords_to_scram.enabled
booleantrueif server.user_login.password_encryption=scram-sha-256, this controls whether to automatically re-encode stored passwords using crdb-bcrypt to scram-sha-256Basic/Standard/Advanced/Self-Hosted
server.web_session.purge.ttl
duration1h0m0sif nonzero, entries in system.web_sessions older than this duration are periodically purgedBasic/Standard/Advanced/Self-Hosted
server.web_session.timeout
(alias: server.web_session_timeout)
duration168h0m0sthe duration that a newly created web session will be validBasic/Standard/Advanced/Self-Hosted
spanconfig.bounds.enabled
booleantruedictates whether span config bounds are consulted when serving span configs for secondary tenantsAdvanced/Self-Hosted
spanconfig.range_coalescing.system.enabled
(alias: spanconfig.storage_coalesce_adjacent.enabled)
booleantruecollapse adjacent ranges with the same span configs, for the ranges specific to the system tenantAdvanced/Self-Hosted
spanconfig.range_coalescing.application.enabled
(alias: spanconfig.tenant_coalesce_adjacent.enabled)
booleantruecollapse adjacent ranges with the same span configs across all secondary tenant keyspacesAdvanced/Self-Hosted
sql.auth.change_own_password.enabled
booleanfalsecontrols whether a user is allowed to change their own password, even if they have no other privilegesBasic/Standard/Advanced/Self-Hosted
sql.auth.grant_option_for_owner.enabled
booleantruedetermines whether the GRANT OPTION for privileges is implicitly given to the owner of an objectBasic/Standard/Advanced/Self-Hosted
sql.auth.grant_option_inheritance.enabled
booleantruedetermines whether the GRANT OPTION for privileges is inherited through role membershipBasic/Standard/Advanced/Self-Hosted
sql.auth.public_schema_create_privilege.enabled
booleantruedetermines whether to grant all users the CREATE privileges on the public schema when it is createdBasic/Standard/Advanced/Self-Hosted
sql.auth.skip_underlying_view_privilege_checks.enabled
booleanfalsedetermines whether to skip privilege checks on tables underlying views. When enabled, users with SELECT privileges on a view can query it regardless of their privileges on the underlying tables, and row-level security policies are evaluated as the invoking user rather than the view owner. This restores pre-v26.2 behavior.Basic/Standard/Advanced/Self-Hosted
sql.catalog.allow_leased_descriptors.enabled
booleantrueif true, catalog views (crdb_internal, information_schema, pg_catalog) can use leased descriptors for improved performanceBasic/Standard/Advanced/Self-Hosted
sql.closed_session_cache.capacity
integer1000the maximum number of sessions in the cacheBasic/Standard/Advanced/Self-Hosted
sql.closed_session_cache.time_to_live
integer3600the maximum time to live, in secondsBasic/Standard/Advanced/Self-Hosted
sql.contention.event_store.capacity
byte size64 MiBthe in-memory storage capacity per-node of contention event storeBasic/Standard/Advanced/Self-Hosted
sql.contention.event_store.duration_threshold
duration0sminimum contention duration to cause the contention events to be collected into crdb_internal.transaction_contention_eventsBasic/Standard/Advanced/Self-Hosted
sql.contention.record_serialization_conflicts.enabled
booleantrueenables recording 40001 errors with conflicting txn meta as SERIALIZATION_CONFLICTcontention events into crdb_internal.transaction_contention_eventsBasic/Standard/Advanced/Self-Hosted
sql.contention.txn_id_cache.max_size
byte size64 MiBthe maximum byte size TxnID cache will use (set to 0 to disable)Basic/Standard/Advanced/Self-Hosted
sql.crdb_internal.tsdb_query.max_rows
integer500000maximum number of rows a single crdb_internal.tsdb_query call may return; queries that would return more error before any rows are surfaced. Set to 0 to disable the cap.Basic/Standard/Advanced/Self-Hosted05000000
sql.crdb_internal.tsdb_query.max_time_range
duration168h0m0smaximum effective time range that a single crdb_internal.tsdb_query call may cover; the requested end_time is first clamped to the current wall-clock time before this cap is checkedBasic/Standard/Advanced/Self-Hosted0s720h0m0s
sql.cross_db_fks.enabled
booleanfalseif true, creating foreign key references across databases is allowedBasic/Standard/Advanced/Self-Hosted
sql.cross_db_sequence_owners.enabled
booleanfalseif true, creating sequences owned by tables from other databases is allowedBasic/Standard/Advanced/Self-Hosted
sql.cross_db_sequence_references.enabled
booleanfalseif true, sequences referenced by tables from other databases are allowedBasic/Standard/Advanced/Self-Hosted
sql.cross_db_views.enabled
booleanfalseif true, creating views that refer to other databases is allowedBasic/Standard/Advanced/Self-Hosted
sql.defaults.cost_scans_with_default_col_size.enabled
booleanfalsesetting to true uses the same size for all columns to compute scan cost
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.datestyle
enumerationiso, mdydefault value for DateStyle session setting [iso, mdy = 0, iso, dmy = 1, iso, ymd = 2]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.default_hash_sharded_index_bucket_count
integer16used as bucket count if bucket count is not specified in hash sharded index definition
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.default_int_size
integer8the size, in bytes, of an INT type
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.disallow_full_table_scans.enabled
booleanfalsesetting to true rejects queries that have planned a full table scan; set large_full_scan_rows > 0 to allow small full table scans estimated to read fewer than large_full_scan_rows
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.distsql
enumerationautodefault distributed SQL execution mode [off = 0, auto = 1, on = 2, always = 3]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.experimental_alter_column_type.enabled
booleanfalsedefault value for experimental_alter_column_type session setting; enables the use of ALTER COLUMN TYPE for general conversions
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.experimental_distsql_planning
enumerationoffdefault experimental_distsql_planning mode; enables experimental opt-driven DistSQL planning [off = 0, on = 1]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.experimental_enable_unique_without_index_constraints.enabled
booleanfalsedefault value for experimental_enable_unique_without_index_constraints session setting;disables unique without index constraints by default
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.experimental_implicit_column_partitioning.enabled
booleanfalsedefault value for experimental_enable_temp_tables; allows for the use of implicit column partitioning
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.experimental_temporary_tables.enabled
booleanfalsedefault value for experimental_enable_temp_tables; allows for use of temporary tables by default
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.foreign_key_cascades_limit
integer10000default value for foreign_key_cascades_limit session setting; limits the number of cascading operations that run as part of a single query
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.idle_in_session_timeout
duration0sdefault value for the idle_in_session_timeout; default value for the idle_in_session_timeout session setting; controls the duration a session is permitted to idle before the session is terminated; if set to 0, there is no timeout
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.idle_in_transaction_session_timeout
duration0sdefault value for the idle_in_transaction_session_timeout; controls the duration a session is permitted to idle in a transaction before the session is terminated; if set to 0, there is no timeout
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.implicit_select_for_update.enabled
booleantruedefault value for enable_implicit_select_for_update session setting; enables FOR UPDATE locking during the row-fetch phase of mutation statements
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.insert_fast_path.enabled
booleantruedefault value for enable_insert_fast_path session setting; enables a specialized insert path
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.intervalstyle
enumerationpostgresdefault value for IntervalStyle session setting [postgres = 0, iso_8601 = 1, sql_standard = 2]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.large_full_scan_rows
float0default value for large_full_scan_rows session variable which determines the table size at which full scans are considered large and disallowed when disallow_full_table_scans is set to true; set to 0 to reject all full table or full index scans when disallow_full_table_scans is true
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.locality_optimized_partitioned_index_scan.enabled
booleantruedefault value for locality_optimized_partitioned_index_scan session setting; enables searching for rows in the current region before searching remote regions
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.lock_timeout
duration0sdefault value for the lock_timeout; default value for the lock_timeout session setting; controls the duration a query is permitted to wait while attempting to acquire a lock on a key or while blocking on an existing lock in order to perform a non-locking read on a key; if set to 0, there is no timeout
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.on_update_rehome_row.enabled
booleantruedefault value for on_update_rehome_row; enables ON UPDATE rehome_row() expressions to trigger on updates
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.optimizer_use_histograms.enabled
booleantruedefault value for optimizer_use_histograms session setting; enables usage of histograms in the optimizer by default
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.optimizer_use_multicol_stats.enabled
booleantruedefault value for optimizer_use_multicol_stats session setting; enables usage of multi-column stats in the optimizer by default
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.override_alter_primary_region_in_super_region.enabled
booleanfalsedefault value for override_alter_primary_region_in_super_region; allows for altering the primary region even if the primary region is a member of a super region
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.override_multi_region_zone_config.enabled
booleanfalsedefault value for override_multi_region_zone_config; allows for overriding the zone configs of a multi-region table or database
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.prefer_lookup_joins_for_fks.enabled
booleanfalsedefault value for prefer_lookup_joins_for_fks session setting; causes foreign key operations to use lookup joins when possible
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.primary_region
stringif not empty, all databases created without a PRIMARY REGION will implicitly have the given PRIMARY REGION
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.reorder_joins_limit
integer8default number of joins to reorder
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted063
sql.defaults.require_explicit_primary_keys.enabled
booleanfalsedefault value for requiring explicit primary keys in CREATE TABLE statements
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.results_buffer.size
byte size512 KiBdefault size of the buffer that accumulates results for a statement or a batch of statements before they are sent to the client. This can be overridden on an individual connection with the 'results_buffer_size' parameter. Note that auto-retries generally only happen while no results have been delivered to the client, so reducing this size can increase the number of retriable errors a client receives. On the other hand, increasing the buffer size can increase the delay until the client receives the first result row. Updating the setting only affects new connections. Setting to 0 disables any buffering.
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.serial_normalization
enumerationrowiddefault handling of SERIAL in table definitions [rowid = 0, virtual_sequence = 1, sql_sequence = 2, sql_sequence_cached = 3, unordered_rowid = 4, sql_sequence_cached_node = 5]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.statement_timeout
duration0sdefault value for the statement_timeout; default value for the statement_timeout session setting; controls the duration a query is permitted to run before it is canceled; if set to 0, there is no timeout
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.stub_catalog_tables.enabled
booleantruedefault value for stub_catalog_tables session setting
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.transaction_rows_read_err
integer0the limit for the number of rows read by a SQL transaction which - once exceeded - will fail the transaction (or will trigger a logging event to SQL_INTERNAL_PERF for internal transactions); use 0 to disable
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.transaction_rows_read_log
integer0the threshold for the number of rows read by a SQL transaction which - once exceeded - will trigger a logging event to SQL_PERF (or SQL_INTERNAL_PERF for internal transactions); use 0 to disable
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.transaction_rows_written_err
integer0the limit for the number of rows written by a SQL transaction which - once exceeded - will fail the transaction (or will trigger a logging event to SQL_INTERNAL_PERF for internal transactions); use 0 to disable
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.transaction_rows_written_log
integer0the threshold for the number of rows written by a SQL transaction which - once exceeded - will trigger a logging event to SQL_PERF (or SQL_INTERNAL_PERF for internal transactions); use 0 to disable
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.use_declarative_schema_changer
enumerationondefault value for use_declarative_schema_changer session setting;disables new schema changer by default [off = 0, on = 1, unsafe = 2, unsafe_always = 3]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.vectorize
enumerationondefault vectorize mode [on = 0, on = 1, on = 2, experimental_always = 3, off = 4]
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.defaults.zigzag_join.enabled
booleanfalsedefault value for enable_zigzag_join session setting; disallows use of zig-zag join by default
This cluster setting is being kept to preserve backwards-compatibility.
This session variable default should now be configured using ALTER ROLE... SET
Basic/Standard/Advanced/Self-Hosted
sql.distsql.temp_storage.workmem
byte size64 MiBmaximum amount of memory in bytes a processor can use before falling back to temp storageBasic/Standard/Advanced/Self-Hosted
sql.guardrails.max_row_size_err
byte size80 MiBmaximum size of row (or column family if multiple column families are in use) that SQL can write to the database, above which an error is returned; use 0 to disableBasic/Standard/Advanced/Self-Hosted10241073741824
sql.guardrails.max_row_size_log
byte size16 MiBmaximum size of row (or column family if multiple column families are in use) that SQL can write to the database, above which an event is logged to SQL_PERF (or SQL_INTERNAL_PERF if the mutating statement was internal); use 0 to disableBasic/Standard/Advanced/Self-Hosted10241073741824
sql.hash_sharded_range_pre_split.max
integer16max pre-split ranges to have when adding hash sharded index to an existing tableBasic/Standard/Advanced/Self-Hosted
sql.index_recommendation.drop_unused_duration
duration168h0m0sthe index unused duration at which we begin to recommend dropping the indexBasic/Standard/Advanced/Self-Hosted
sql.insights.anomaly_detection.enabled
booleantrueenable per-fingerprint latency recording and anomaly detectionBasic/Standard/Advanced/Self-Hosted
sql.insights.anomaly_detection.latency_threshold
duration50msstatements must surpass this threshold to trigger anomaly detection and identificationBasic/Standard/Advanced/Self-Hosted
sql.insights.anomaly_detection.memory_limit
byte size1.0 MiBthe maximum amount of memory allowed for tracking statement latenciesBasic/Standard/Advanced/Self-Hosted
sql.insights.execution_insights_capacity
integer1000the size of the per-node store of execution insightsBasic/Standard/Advanced/Self-Hosted
sql.insights.high_retry_count.threshold
integer10the number of retries a slow statement must have undergone for its high retry count to be highlighted as a potential problemBasic/Standard/Advanced/Self-Hosted
sql.insights.latency_threshold
duration100msamount of time after which an executing statement is considered slow. Use 0 to disable.Basic/Standard/Advanced/Self-Hosted
sql.log.failed_query.enabled
booleanfalsewhen set to true, every SQL statement that ends in an error is logged to a secondary logger on each node as a `failed_query` eventBasic/Standard/Advanced/Self-Hosted
sql.log.failed_query.internal_queries.enabled
booleanfalsewhen set to true, internal queries that end in an error are logged to a separate `failed_query_internal` event. Must have `sql.log.failed_query.enabled` set for this setting to have any effect.Basic/Standard/Advanced/Self-Hosted
sql.log.redact_names.enabled
booleanfalseif set, schema object identifers are redacted in SQL statements that appear in event logsBasic/Standard/Advanced/Self-Hosted
sql.log.scan_row_count_misestimate.enabled
booleanfalsewhen set to true, log a warning when a scan's actual row count differs significantly from the optimizer's estimateBasic/Standard/Advanced/Self-Hosted
sql.log.slow_query.experimental_full_table_scans.enabled
booleanfalsewhen set to true, statements that perform a full table/index scan will be logged to the slow query log even if they do not meet the latency threshold. Must have the slow query log enabled for this setting to have any effect.Basic/Standard/Advanced/Self-Hosted
sql.log.slow_query.internal_queries.enabled
booleanfalsewhen set to true, internal queries which exceed the slow query log threshold are logged to a separate log. Must have the slow query log enabled for this setting to have any effect.Basic/Standard/Advanced/Self-Hosted
sql.log.slow_query.latency_threshold
duration0swhen set to non-zero, log statements whose service latency exceeds the threshold to a secondary logger on each nodeBasic/Standard/Advanced/Self-Hosted
sql.log.user_audit
stringuser/role-based audit logging configurationBasic/Standard/Advanced/Self-Hosted
sql.log.user_audit.reduced_config.enabled
booleanfalseenables logic to compute a reduced audit configuration, computing the audit configuration only once at session start instead of at each SQL event. The tradeoff with the increase in performance (~5%), is that changes to the audit configuration (user role memberships/cluster setting) are not reflected within session. Users will need to start a new session to see these changes in their auditing behaviour.Basic/Standard/Advanced/Self-Hosted
sql.metrics.application_name.enabled
booleanfalsewhen enabled, SQL metrics would export application name as and additional label as part of child metrics. The number of unique label combinations is limited to 5000 by default.Basic/Standard/Advanced/Self-Hosted
sql.metrics.database_name.enabled
booleanfalsewhen enabled, SQL metrics would export database name as and additional label as part of child metrics. The number of unique label combinations is limited to 5000 by default.Basic/Standard/Advanced/Self-Hosted
sql.metrics.index_usage_stats.enabled
booleantruecollect per index usage statisticsBasic/Standard/Advanced/Self-Hosted
sql.metrics.max_mem_reported_stmt_fingerprints
integer100000the maximum number of reported statement fingerprints stored in memoryBasic/Standard/Advanced/Self-Hosted
sql.metrics.max_mem_reported_txn_fingerprints
integer100000the maximum number of reported transaction fingerprints stored in memoryBasic/Standard/Advanced/Self-Hosted
sql.metrics.max_mem_stmt_fingerprints
integer7500the maximum number of statement fingerprints stored in memoryBasic/Standard/Advanced/Self-Hosted
sql.metrics.max_mem_txn_fingerprints
integer7500the maximum number of transaction fingerprints stored in memoryBasic/Standard/Advanced/Self-Hosted
sql.metrics.statement_details.dump_to_logs.enabled
(alias: sql.metrics.statement_details.dump_to_logs)
booleanfalsedump collected statement statistics to node logs when periodically clearedBasic/Standard/Advanced/Self-Hosted
sql.metrics.statement_details.enabled
booleantruecollect per-statement query statisticsBasic/Standard/Advanced/Self-Hosted
sql.metrics.statement_details.gateway_node.enabled
booleanfalsesave the gateway node for each statement fingerprint. If false, the value will be stored as 0.Basic/Standard/Advanced/Self-Hosted
sql.metrics.statement_details.index_recommendation_collection.enabled
booleantruegenerate an index recommendation for each fingerprint IDBasic/Standard/Advanced/Self-Hosted
sql.metrics.statement_details.max_mem_reported_idx_recommendations
integer5000the maximum number of reported index recommendation info stored in memoryBasic/Standard/Advanced/Self-Hosted
sql.metrics.statement_details.threshold
duration0sminimum execution time to cause statement statistics to be collected. If configured, no transaction stats are collected.Basic/Standard/Advanced/Self-Hosted
sql.metrics.transaction_details.enabled
booleantruecollect per-application transaction statisticsBasic/Standard/Advanced/Self-Hosted
sql.multiple_modifications_of_table.enabled
booleanfalseif true, allow statements containing multiple INSERT ON CONFLICT, UPSERT, UPDATE, or DELETE subqueries modifying the same table, at the risk of data corruption if the same row is modified multiple times by a single statement (multiple INSERT subqueries without ON CONFLICT cannot cause corruption and are always allowed)Basic/Standard/Advanced/Self-Hosted
sql.multiregion.drop_primary_region.enabled
booleantrueallows dropping the PRIMARY REGION of a database if it is the last regionBasic/Standard/Advanced/Self-Hosted
sql.notices.enabled
booleantrueenable notices in the server/client protocol being sentBasic/Standard/Advanced/Self-Hosted
sql.optimizer.uniqueness_checks_for_gen_random_uuid.enabled
booleanfalseif enabled, uniqueness checks may be planned for mutations of UUID columns updated with gen_random_uuid(); otherwise, uniqueness is assumed due to near-zero collision probabilityBasic/Standard/Advanced/Self-Hosted
sql.procedures.plpgsql.late_binding.enabled
booleanfalsewhen true, PL/pgSQL procedure bodies are not resolved at creation time; references are resolved at CALL time instead, matching PostgreSQL PL/pgSQL semantics. Does not affect LANGUAGE SQL procedures or functionsBasic/Standard/Advanced/Self-Hosted
sql.schema.approx_max_object_count
integer20000approximate maximum number of schema objects allowed in the cluster; the check uses cached statistics, so the actual count may slightly exceed this limit; set to 0 to disableBasic/Standard/Advanced/Self-Hosted
sql.schema.auto_unlock.enabled
booleantruecontrols whether DDL operations will attempt to automatically unlock and re-lock schema_locked tables. When this setting is false, DDL on schema_locked tables is blocked unless the user manually unlocks the table first. The schema_locked storage parameter improves changefeed performance by locking the table's schema from the perspective of the changefeed.Basic/Standard/Advanced/Self-Hosted
sql.schema.telemetry.recurrence
string@weeklycron-tab recurrence for SQL schema telemetry jobAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
sql.spatial.experimental_box2d_comparison_operators.enabled
booleanfalseenables the use of certain experimental box2d comparison operatorsBasic/Standard/Advanced/Self-Hosted
sql.sqlcommenter.enabled
booleanfalseenables support for sqlcommenter. Key value parsed from sqlcommenter comments will be included in sql insights and sql logs. See https://google.github.io/sqlcommenter/ for more details.Basic/Standard/Advanced/Self-Hosted
sql.stats.activity.persisted_rows.max
integer200000maximum number of rows of statement and transaction activity that will be persisted in the system tablesBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_collection.enabled
booleantrueautomatic statistics collection modeBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_collection.fraction_stale_rows
float0.2target fraction of stale rows per table that will trigger a statistics refreshBasic/Standard/Advanced/Self-Hosted0
sql.stats.automatic_collection.min_stale_rows
integer500target minimum number of stale rows per table that will trigger a statistics refreshBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_extremes_concurrency_limit
integer128determines the maximum number of concurrent automatic partial USING EXTREMES table statistics collection jobsBasic/Standard/Advanced/Self-Hosted1
sql.stats.automatic_full_collection.enabled
booleantrueautomatic full statistics collection modeBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_full_concurrency_limit
integerSee description.determines the maximum number of concurrent automatic full table statistics collection jobs. The default value is computed as the number of vCPUs in a node divided by 2.Basic/Standard/Advanced/Self-Hosted1
sql.stats.automatic_partial_collection.enabled
booleantrueautomatic partial statistics collection modeBasic/Standard/Advanced/Self-Hosted
sql.stats.automatic_partial_collection.fraction_stale_rows
float0.05target fraction of stale rows per table that will trigger a partial statistics refreshBasic/Standard/Advanced/Self-Hosted0
sql.stats.automatic_partial_collection.min_stale_rows
integer100target minimum number of stale rows per table that will trigger a partial statistics refreshBasic/Standard/Advanced/Self-Hosted
sql.stats.canary_fraction
float0probability that table statistics will use canary mode instead of stable mode for query planning [0.0-1.0]Basic/Standard/Advanced/Self-Hosted01
sql.stats.cleanup.recurrence
string@hourlycron-tab recurrence for SQL Stats cleanup jobBasic/Standard/Advanced/Self-Hosted
sql.stats.detailed_latency_metrics.enabled
booleanfalselabel latency metrics with the statement fingerprint. Workloads with tens of thousands of distinct query fingerprints should leave this setting false. (experimental, affects performance for workloads with high fingerprint cardinality)Basic/Standard/Advanced/Self-Hosted
sql.stats.error_on_concurrent_create_stats.enabled
booleanfalseset to true to error on concurrent CREATE STATISTICS jobs, instead of skipping themBasic/Standard/Advanced/Self-Hosted
sql.stats.flush.enabled
booleantrueif set, SQL execution statistics are periodically flushed to diskBasic/Standard/Advanced/Self-Hosted
sql.stats.flush.interval
duration10m0sthe interval at which SQL execution statistics are flushed to disk, this value must be less than or equal to 1 hourBasic/Standard/Advanced/Self-Hosted0s24h0m0s
sql.stats.forecasts.enabled
booleantruewhen true, enables generation of statistics forecasts by default for all tablesBasic/Standard/Advanced/Self-Hosted
sql.stats.forecasts.max_decrease
float0.3333333333333333the most a prediction is allowed to decrease, expressed as the minimum ratio of the prediction to the lowest prior observationBasic/Standard/Advanced/Self-Hosted01
sql.stats.forecasts.min_goodness_of_fit
float0.95the minimum R² (goodness of fit) measurement required from all predictive models to use a forecastBasic/Standard/Advanced/Self-Hosted01
sql.stats.forecasts.min_observations
integer3the mimimum number of observed statistics required to produce a statistics forecastBasic/Standard/Advanced/Self-Hosted19223372036854775807
sql.stats.histogram_buckets.count
integer200maximum number of histogram buckets to build during table statistics collectionBasic/Standard/Advanced/Self-Hosted04294967295
sql.stats.histogram_buckets.include_most_common_values.enabled
booleantruewhether to include most common values as histogram bucketsBasic/Standard/Advanced/Self-Hosted
sql.stats.histogram_buckets.max_fraction_most_common_values
float0.1maximum fraction of histogram buckets to use for most common valuesBasic/Standard/Advanced/Self-Hosted01
sql.stats.histogram_collection.enabled
booleantruehistogram collection modeBasic/Standard/Advanced/Self-Hosted
sql.stats.histogram_samples.count
integer0number of rows sampled for histogram construction during table statistics collection. Not setting this or setting a value of 0 means that a reasonable sample size will be automatically picked based on the table size.Basic/Standard/Advanced/Self-Hosted04294967295
sql.stats.multi_column_collection.enabled
booleantruemulti-column statistics collection modeBasic/Standard/Advanced/Self-Hosted
sql.stats.non_default_columns.min_retention_period
duration24h0m0sminimum retention period for table statistics collected on non-default columnsBasic/Standard/Advanced/Self-Hosted
sql.stats.non_indexed_json_histograms.enabled
booleanfalseset to true to collect table statistics histograms on non-indexed JSON columnsBasic/Standard/Advanced/Self-Hosted
sql.stats.persisted_rows.max
integer1000000maximum number of rows of statement and transaction statistics that will be persisted in the system tables before compaction beginsBasic/Standard/Advanced/Self-Hosted
sql.stats.post_events.enabled
booleanfalseif set, an event is logged for every successful CREATE STATISTICS jobBasic/Standard/Advanced/Self-Hosted
sql.stats.response.max
integer20000the maximum number of statements and transaction stats returned in a CombinedStatements requestBasic/Standard/Advanced/Self-Hosted
sql.stats.response.show_internal.enabled
booleanfalsecontrols if statistics for internal executions should be returned by the CombinedStatements and if internal sessions should be returned by the ListSessions endpoints. These endpoints are used to display statistics on the SQL Activity pagesBasic/Standard/Advanced/Self-Hosted
sql.stats.system_tables.enabled
booleantruewhen true, enables use of statistics on system tables by the query optimizerBasic/Standard/Advanced/Self-Hosted
sql.stats.system_tables_autostats.enabled
booleantruewhen true, enables automatic collection of statistics on system tablesBasic/Standard/Advanced/Self-Hosted
sql.stats.table_statistics_cache.capacity
integer256the maximum number of table statistics entries stored in the LRU cache. Each cache entry corresponds to a single table.Basic/Standard/Advanced/Self-Hosted
sql.stats.virtual_computed_columns.enabled
booleantrueset to true to collect table statistics on virtual computed columnsBasic/Standard/Advanced/Self-Hosted
sql.subset_unique_fks.enabled
booleantrueif true, foreign keys may be backed by a unique constraint that covers only a strict subset of the foreign key's referenced columns (e.g. a parent with UNIQUE(a) can back an FK that references (a, b)); set to false to require strict matching, as required by the SQL standard and PostgreSQLBasic/Standard/Advanced/Self-Hosted
sql.telemetry.query_sampling.enabled
booleanfalsewhen set to true, executed queries will emit an event on the telemetry logging channelBasic/Standard/Advanced/Self-Hosted
sql.telemetry.query_sampling.internal.enabled
booleanfalsewhen set to true, internal queries will be sampled in telemetry loggingBasic/Standard/Advanced/Self-Hosted
sql.telemetry.query_sampling.max_event_frequency
integer8the max event frequency (events per second) at which we sample executions for telemetry, note that it is recommended that this value shares a log-line limit of 10 logs per second on the telemetry pipeline with all other telemetry events. If sampling mode is set to 'transaction', this value is ignored.Basic/Standard/Advanced/Self-Hosted
sql.telemetry.query_sampling.mode
enumerationstatementthe execution level used for telemetry sampling. If set to 'statement', events are sampled at the statement execution level. If set to 'transaction', events are sampled at the transaction execution level, i.e. all statements for a transaction will be logged and are counted together as one sampled event (events are still emitted one per statement). [statement = 0, transaction = 1]Basic/Standard/Advanced/Self-Hosted
sql.telemetry.transaction_sampling.max_event_frequency
integer8the max event frequency (events per second) at which we sample transactions for telemetry. If sampling mode is set to 'statement', this setting is ignored. In practice, this means that we only sample a transaction if 1/max_event_frequency seconds have elapsed since the last transaction was sampled.Basic/Standard/Advanced/Self-Hosted
sql.telemetry.transaction_sampling.statement_events_per_transaction.max
integer50the maximum number of statement events to log for every sampled transaction. Note that statements that are logged by force do not adhere to this limit.Basic/Standard/Advanced/Self-Hosted
sql.temp_object_cleaner.batch_size
integer1000number of temporary objects to drop per transaction during cleanupBasic/Standard/Advanced/Self-Hosted110000
sql.temp_object_cleaner.cleanup_interval
duration30m0show often to clean up orphaned temporary objectsBasic/Standard/Advanced/Self-Hosted
sql.temp_object_cleaner.wait_interval
duration30m0show long after creation a temporary object will be cleaned upBasic/Standard/Advanced/Self-Hosted
sql.log.all_statements.enabled
(alias: sql.trace.log_statement_execute)
booleanfalseset to true to enable logging of all executed statementsBasic/Standard/Advanced/Self-Hosted
sql.trace.stmt.enable_threshold
duration0senables tracing on all statements; statements executing for longer than this duration will have their trace logged (set to 0 to disable); note that enabling this may have a negative performance impact; this setting applies to individual statements within a transaction and is therefore finer-grained than sql.trace.txn.enable_thresholdBasic/Standard/Advanced/Self-Hosted
sql.trace.txn.enable_threshold
duration0senables transaction traces for transactions exceeding this duration, used with `sql.trace.txn.sample_rate`Basic/Standard/Advanced/Self-Hosted
sql.trace.txn.include_internal.enabled
booleantrueenables tracing internal transactions as well as external workload using sample rate and threshold settingsBasic/Standard/Advanced/Self-Hosted
sql.trace.txn.jaeger_json_output.enabled
booleanfalseenables Jaeger JSON output for transaction traces in logsBasic/Standard/Advanced/Self-Hosted
sql.trace.txn.sample_rate
float1enables probabilistic transaction tracing. It should be used in conjunction with `sql.trace.txn.enable_threshold`. A percentage of transactions between 0 and 1.0 will have tracing enabled, and only those which exceed the configured threshold will be logged.Basic/Standard/Advanced/Self-Hosted01
sql.ttl.changefeed_replication.disabled
booleanfalseif true, deletes issued by TTL will not be replicated via changefeeds (this setting will be ignored by changefeeds that have the ignore_disable_changefeed_replication option set; such changefeeds will continue to replicate all TTL deletes)Basic/Standard/Advanced/Self-Hosted
sql.ttl.default_delete_batch_size
integer100default amount of rows to delete in a single query during a TTL jobBasic/Standard/Advanced/Self-Hosted
sql.ttl.default_delete_rate_limit
integer100default delete rate limit (rows per second) per node for each TTL job. Use 0 to signify no rate limit.Basic/Standard/Advanced/Self-Hosted
sql.ttl.default_select_batch_size
integer500default amount of rows to select in a single query during a TTL jobBasic/Standard/Advanced/Self-Hosted
sql.ttl.default_select_rate_limit
integer0default select rate limit (rows per second) per node for each TTL job. Use 0 to signify no rate limit.Basic/Standard/Advanced/Self-Hosted
sql.ttl.job.enabled
booleantruewhether the TTL job is enabledBasic/Standard/Advanced/Self-Hosted
sql.txn.read_committed_isolation.enabled
booleantrueset to true to allow transactions to use the READ COMMITTED isolation level if specified by BEGIN/SET commandsBasic/Standard/Advanced/Self-Hosted
sql.txn.repeatable_read_isolation.enabled
(alias: sql.txn.snapshot_isolation.enabled)
booleanfalseset to true to allow transactions to use the REPEATABLE READ isolation level if specified by BEGIN/SET commandsBasic/Standard/Advanced/Self-Hosted
sql.txn_fingerprint_id_cache.capacity
integer100the maximum number of txn fingerprint IDs storedBasic/Standard/Advanced/Self-Hosted
sql.vecindex.stalled_op.timeout
duration100msamount of time before other vector index workers will assist with a stalled background fixupBasic/Standard/Advanced/Self-Hosted
storage.delete_compaction_excise.enabled
booleantrueset to false to direct Pebble to not partially excise sstables in delete-only compactionsAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
storage.ingest_split.enabled
booleantrueset to false to disable ingest-time splitting that lowers write-amplificationAdvanced/Self-Hosted
storage.ingestion.value_blocks.enabled
booleantrueset to true to enable writing of value blocks in ingestion sstablesBasic/Standard/Advanced/Self-Hosted
storage.max_sync_duration
duration20smaximum duration for disk operations; any operations that take longer than this setting trigger a warning log entry or process crashAdvanced/Self-hosted (read-write); Basic/Standard (read-only)
storage.max_sync_duration.fatal.enabled
booleantrueif true, fatal the process when a disk operation exceeds storage.max_sync_durationBasic/Standard/Advanced/Self-Hosted
storage.sstable.compression_algorithm
enumerationfastestdetermines the compression algorithm to use for Pebble stores [snappy = 1, zstd = 2, none = 3, minlz = 4, fastest = 5, balanced = 6, good = 7, fast = 8]Advanced/Self-hosted (read-write); Basic/Standard (read-only)
storage.unhealthy_write_duration
duration20sduration for disk write operations, beyond which the disk will be reported as unhealthy for higher layer actionsAdvanced/Self-Hosted
storage.wal_failover.unhealthy_op_threshold
duration100msthe latency of a WAL write considered unhealthy and triggers a failover to a secondary WAL locationAdvanced/Self-Hosted
timeseries.storage.enabled
booleantrueif set, periodic timeseries data is stored within the cluster; disabling is not recommended unless you are storing the data elsewhereAdvanced/Self-Hosted
timeseries.storage.resolution_10s.ttl
duration240h0m0sthe maximum age of time series data stored at the 10 second resolution. Data older than this is subject to rollup and deletion.Advanced/Self-hosted (read-write); Basic/Standard (read-only)
timeseries.storage.resolution_1m.ttl
duration240h0m0sthe maximum age of time series data stored at the 1 minute resolution. Data older than this is subject to rollup and deletion.Advanced/Self-hosted (read-write); Basic/Standard (read-only)
timeseries.storage.resolution_30m.ttl
duration2160h0m0sthe maximum age of time series data stored at the 30 minute resolution. Data older than this is subject to deletion.Advanced/Self-hosted (read-write); Basic/Standard (read-only)
trace.debug_http_endpoint.enabled
(alias: trace.debug.enable)
booleanfalseif set, traces for recent requests can be seen at https://<ui>/debug/requestsBasic/Standard/Advanced/Self-Hosted
trace.opentelemetry.collector
stringaddress of an OpenTelemetry trace collector to receive traces using the otel gRPC protocol, as <host>:<port>. If no port is specified, 4317 will be used.Basic/Standard/Advanced/Self-Hosted
trace.snapshot.rate
duration0sif non-zero, interval at which background trace snapshots are capturedBasic/Standard/Advanced/Self-Hosted
trace.span_registry.enabled
booleanfalseif set, ongoing traces can be seen at https://<ui>/#/debug/tracezBasic/Standard/Advanced/Self-Hosted
trace.zipkin.collector
stringthe address of a Zipkin instance to receive traces, as <host>:<port>. If no port is specified, 9411 will be used.Basic/Standard/Advanced/Self-Hosted
ui.database_locality_metadata.enabled
booleantrueif enabled shows extended locality data about databases and tables in DB Console which can be expensive to computeBasic/Standard/Advanced/Self-Hosted
ui.default_timezone
stringthe default timezone used to format timestamps in the uiBasic/Standard/Advanced/Self-Hosted
ui.display_timezone
enumerationetc/utcthe timezone used to format timestamps in the ui. This setting is deprecatedand will be removed in a future version. Use the 'ui.default_timezone' setting instead. 'ui.default_timezone' takes precedence over this setting. [etc/utc = 0, america/new_york = 1]Basic/Standard/Advanced/Self-Hosted
version
version1000026.2-upgrading-to-1000026.3-step-016set the active cluster version in the format '<major>.<minor>'Basic/Standard/Advanced/Self-Hosted
diff --git a/pkg/cli/gen.go b/pkg/cli/gen.go index fd7aca8e445e..32ccf75a56ab 100644 --- a/pkg/cli/gen.go +++ b/pkg/cli/gen.go @@ -190,6 +190,46 @@ var vCPUDependentClusterSettings = map[settings.InternalKey]struct{}{ "sql.stats.automatic_full_concurrency_limit": {}, } +// formatSettingBounds renders a numeric setting's validation bounds in the +// canonical form for SET CLUSTER SETTING. Empty strings mean unbounded. +func formatSettingBounds(s settings.NonMaskedSetting) (minStr, maxStr string) { + switch v := s.(type) { + case *settings.IntSetting: + min, max := v.Bounds() + if min != nil { + minStr = settings.EncodeInt(*min) + } + if max != nil { + maxStr = settings.EncodeInt(*max) + } + case *settings.ByteSizeSetting: + min, max := v.Bounds() + if min != nil { + minStr = settings.EncodeInt(*min) + } + if max != nil { + maxStr = settings.EncodeInt(*max) + } + case *settings.FloatSetting: + min, max := v.Bounds() + if min != nil { + minStr = settings.EncodeFloat(*min) + } + if max != nil { + maxStr = settings.EncodeFloat(*max) + } + case *settings.DurationSetting: + min, max := v.Bounds() + if min != nil { + minStr = settings.EncodeDuration(*min) + } + if max != nil { + maxStr = settings.EncodeDuration(*max) + } + } + return minStr, maxStr +} + var genSettingsListCmd = &cobra.Command{ Use: "settings-list", Short: "output a list of available cluster settings", @@ -291,6 +331,8 @@ This session variable default should now be configured using %s`, row = append(row, "reserved") } } + minStr, maxStr := formatSettingBounds(setting) + row = append(row, minStr, maxStr) rows = append(rows, row) } @@ -304,6 +346,8 @@ This session variable default should now be configured using %s`, cols = append(cols, "Visibility") align += "d" } + cols = append(cols, "Min", "Max") + align += "dd" sliceIter := clisqlexec.NewRowSliceIter(rows, align) return sqlExecCtx.PrintQueryOutput(os.Stdout, stderr, cols, sliceIter) }, diff --git a/pkg/settings/bounds_test.go b/pkg/settings/bounds_test.go new file mode 100644 index 000000000000..84b732125630 --- /dev/null +++ b/pkg/settings/bounds_test.go @@ -0,0 +1,275 @@ +// Copyright 2026 The Cockroach Authors. +// +// Use of this software is governed by the CockroachDB Software License +// included in the /LICENSE file. + +package settings_test + +import ( + "testing" + "time" + + "github.com/cockroachdb/cockroach/pkg/settings" + "github.com/stretchr/testify/require" +) + +// TestIntSettingBounds verifies that the bounds encoded by IntSetting +// validation options are surfaced via Bounds() on the resulting *IntSetting. +func TestIntSettingBounds(t *testing.T) { + defer settings.TestingSaveRegistry()() + + t.Run("IntInRange sets both bounds", func(t *testing.T) { + s := settings.RegisterIntSetting( + settings.SystemOnly, "test.int.in_range", "desc", 15, + settings.IntInRange(10, 20), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.NotNil(t, max) + require.Equal(t, int64(10), *min) + require.Equal(t, int64(20), *max) + }) + + t.Run("IntWithMinimum sets only min", func(t *testing.T) { + s := settings.RegisterIntSetting( + settings.SystemOnly, "test.int.with_minimum", "desc", 5, + settings.IntWithMinimum(5), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.Nil(t, max) + require.Equal(t, int64(5), *min) + }) + + t.Run("IntInRangeOrZeroDisable sets both bounds", func(t *testing.T) { + s := settings.RegisterIntSetting( + settings.SystemOnly, "test.int.zero_disable", "desc", 10, + settings.IntInRangeOrZeroDisable(10, 20), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.NotNil(t, max) + require.Equal(t, int64(10), *min) + require.Equal(t, int64(20), *max) + }) + + t.Run("NonNegativeIntWithMaximum sets [0, max]", func(t *testing.T) { + s := settings.RegisterIntSetting( + settings.SystemOnly, "test.int.nn_max", "desc", 5, + settings.NonNegativeIntWithMaximum(100), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.NotNil(t, max) + require.Equal(t, int64(0), *min) + require.Equal(t, int64(100), *max) + }) + + t.Run("PositiveInt sets no bounds", func(t *testing.T) { + s := settings.RegisterIntSetting( + settings.SystemOnly, "test.int.positive", "desc", 1, + settings.PositiveInt, + ) + min, max := s.Bounds() + require.Nil(t, min) + require.Nil(t, max) + }) +} + +// TestByteSizeSettingBounds verifies bounds on ByteSizeSetting, which embeds +// IntSetting. +func TestByteSizeSettingBounds(t *testing.T) { + defer settings.TestingSaveRegistry()() + + t.Run("ByteSizeWithMinimum sets only min", func(t *testing.T) { + s := settings.RegisterByteSizeSetting( + settings.SystemOnly, "test.bs.with_minimum", "desc", 1024, + settings.ByteSizeWithMinimum(1024), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.Nil(t, max) + require.Equal(t, int64(1024), *min) + }) + + t.Run("ByteSizeWithMaximum sets only max", func(t *testing.T) { + s := settings.RegisterByteSizeSetting( + settings.SystemOnly, "test.bs.with_maximum", "desc", 1024, + settings.ByteSizeWithMaximum(65536), + ) + min, max := s.Bounds() + require.Nil(t, min) + require.NotNil(t, max) + require.Equal(t, int64(65536), *max) + }) +} + +// TestDurationSettingBounds verifies bounds on DurationSetting. +func TestDurationSettingBounds(t *testing.T) { + defer settings.TestingSaveRegistry()() + + t.Run("DurationInRange sets both bounds", func(t *testing.T) { + s := settings.RegisterDurationSetting( + settings.SystemOnly, "test.dur.in_range", "desc", time.Second, + settings.DurationInRange(time.Second, time.Minute), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.NotNil(t, max) + require.Equal(t, time.Second, *min) + require.Equal(t, time.Minute, *max) + }) + + t.Run("DurationWithMinimum sets only min", func(t *testing.T) { + s := settings.RegisterDurationSetting( + settings.SystemOnly, "test.dur.with_minimum", "desc", time.Second, + settings.DurationWithMinimum(time.Second), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.Nil(t, max) + require.Equal(t, time.Second, *min) + }) + + t.Run("DurationWithMinimumOrZeroDisable sets only min", func(t *testing.T) { + s := settings.RegisterDurationSetting( + settings.SystemOnly, "test.dur.zero_disable", "desc", time.Second, + settings.DurationWithMinimumOrZeroDisable(time.Second), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.Nil(t, max) + require.Equal(t, time.Second, *min) + }) + + t.Run("NonNegativeDurationWithMaximum sets [0, max]", func(t *testing.T) { + s := settings.RegisterDurationSetting( + settings.SystemOnly, "test.dur.nn_max", "desc", time.Second, + settings.NonNegativeDurationWithMaximum(time.Hour), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.NotNil(t, max) + require.Equal(t, time.Duration(0), *min) + require.Equal(t, time.Hour, *max) + }) + + t.Run("PositiveDuration sets no bounds", func(t *testing.T) { + s := settings.RegisterDurationSetting( + settings.SystemOnly, "test.dur.positive", "desc", time.Second, + settings.PositiveDuration, + ) + min, max := s.Bounds() + require.Nil(t, min) + require.Nil(t, max) + }) + + t.Run("DurationSettingWithExplicitUnit inherits bounds", func(t *testing.T) { + s := settings.RegisterDurationSettingWithExplicitUnit( + settings.SystemOnly, "test.dur.explicit", "desc", time.Second, + settings.DurationInRange(time.Second, time.Minute), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.NotNil(t, max) + require.Equal(t, time.Second, *min) + require.Equal(t, time.Minute, *max) + }) +} + +// TestFloatSettingBounds verifies bounds on FloatSetting. +func TestFloatSettingBounds(t *testing.T) { + defer settings.TestingSaveRegistry()() + + t.Run("FloatInRange sets both bounds", func(t *testing.T) { + s := settings.RegisterFloatSetting( + settings.SystemOnly, "test.f.in_range", "desc", 0.5, + settings.FloatInRange(0.0, 1.0), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.NotNil(t, max) + require.Equal(t, 0.0, *min) + require.Equal(t, 1.0, *max) + }) + + t.Run("FloatInRangeUpperExclusive sets both bounds", func(t *testing.T) { + s := settings.RegisterFloatSetting( + settings.SystemOnly, "test.f.upper_exclusive", "desc", 0.5, + settings.FloatInRangeUpperExclusive(0.0, 1.0), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.NotNil(t, max) + require.Equal(t, 0.0, *min) + require.Equal(t, 1.0, *max) + }) + + t.Run("FloatWithMinimum sets only min", func(t *testing.T) { + s := settings.RegisterFloatSetting( + settings.SystemOnly, "test.f.with_minimum", "desc", 1.5, + settings.FloatWithMinimum(1.5), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.Nil(t, max) + require.Equal(t, 1.5, *min) + }) + + t.Run("FloatWithMinimumOrZeroDisable sets only min", func(t *testing.T) { + s := settings.RegisterFloatSetting( + settings.SystemOnly, "test.f.zero_disable", "desc", 1.5, + settings.FloatWithMinimumOrZeroDisable(1.5), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.Nil(t, max) + require.Equal(t, 1.5, *min) + }) + + t.Run("NonNegativeFloatWithMaximum sets [0, max]", func(t *testing.T) { + s := settings.RegisterFloatSetting( + settings.SystemOnly, "test.f.nn_max", "desc", 0.5, + settings.NonNegativeFloatWithMaximum(0.99), + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.NotNil(t, max) + require.Equal(t, 0.0, *min) + require.Equal(t, 0.99, *max) + }) + + t.Run("Fraction sets [0, 1]", func(t *testing.T) { + s := settings.RegisterFloatSetting( + settings.SystemOnly, "test.f.fraction", "desc", 0.5, + settings.Fraction, + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.NotNil(t, max) + require.Equal(t, 0.0, *min) + require.Equal(t, 1.0, *max) + }) + + t.Run("FractionUpperExclusive sets [0, 1]", func(t *testing.T) { + s := settings.RegisterFloatSetting( + settings.SystemOnly, "test.f.fraction_ue", "desc", 0.5, + settings.FractionUpperExclusive, + ) + min, max := s.Bounds() + require.NotNil(t, min) + require.NotNil(t, max) + require.Equal(t, 0.0, *min) + require.Equal(t, 1.0, *max) + }) + + t.Run("PositiveFloat sets no bounds", func(t *testing.T) { + s := settings.RegisterFloatSetting( + settings.SystemOnly, "test.f.positive", "desc", 1.0, + settings.PositiveFloat, + ) + min, max := s.Bounds() + require.Nil(t, min) + require.Nil(t, max) + }) +} diff --git a/pkg/settings/byte_size.go b/pkg/settings/byte_size.go index 02801ebf33a4..a4372b16b212 100644 --- a/pkg/settings/byte_size.go +++ b/pkg/settings/byte_size.go @@ -42,6 +42,13 @@ func (b *ByteSizeSetting) DecodeToString(encoded string) (string, error) { return string(humanizeutil.IBytes(iv)), nil } +// Bounds returns the validation bounds recorded on the underlying IntSetting, +// if any. Either pointer may be nil, indicating that the corresponding bound +// is unbounded. +func (b *ByteSizeSetting) Bounds() (min, max *int64) { + return b.min, b.max +} + // RegisterByteSizeSetting defines a new setting with type bytesize and any // supplied validation function(s). If no validation functions are given, then // the non-negative int validation is performed. @@ -79,27 +86,40 @@ func RegisterByteSizeSetting( }} register(class, key, desc, setting) setting.apply(opts) + applyBounds(setting, opts) return setting } // ByteSizeWithMinimum can be passed to RegisterByteSizeSetting. func ByteSizeWithMinimum(minVal int64) SettingOption { - return WithValidateInt(func(v int64) error { - if v < minVal { - return errors.Errorf("cannot be set to a value lower than %v", - humanizeutil.IBytes(minVal)) - } - return nil - }) + min := minVal + return SettingOption{ + validateInt64Fn: func(v int64) error { + if v < minVal { + return errors.Errorf("cannot be set to a value lower than %v", + humanizeutil.IBytes(minVal)) + } + return nil + }, + boundsOpt: func(s Setting) { + setIntBounds(s, &min, nil) + }, + } } // ByteSizeWithMaximum can be passed to RegisterByteSizeSetting. func ByteSizeWithMaximum(maxVal int64) SettingOption { - return WithValidateInt(func(v int64) error { - if v > maxVal { - return errors.Errorf("cannot be set to a value larger than %v", - humanizeutil.IBytes(maxVal)) - } - return nil - }) + max := maxVal + return SettingOption{ + validateInt64Fn: func(v int64) error { + if v > maxVal { + return errors.Errorf("cannot be set to a value larger than %v", + humanizeutil.IBytes(maxVal)) + } + return nil + }, + boundsOpt: func(s Setting) { + setIntBounds(s, nil, &max) + }, + } } diff --git a/pkg/settings/duration.go b/pkg/settings/duration.go index f149d8bea491..c143b098c8b5 100644 --- a/pkg/settings/duration.go +++ b/pkg/settings/duration.go @@ -18,7 +18,12 @@ import ( type DurationSetting struct { common defaultValue time.Duration - validateFn func(time.Duration) error + // min and max, when non-nil, record the validation bounds supplied via + // options such as DurationInRange, DurationWithMinimum, or + // NonNegativeDurationWithMaximum. They are surfaced via Bounds() for + // documentation and introspection. + min, max *time.Duration + validateFn func(time.Duration) error } // DurationSettingWithExplicitUnit is like DurationSetting except it requires an @@ -31,6 +36,29 @@ var _ internalSetting = &DurationSetting{} var _ internalSetting = &DurationSettingWithExplicitUnit{} +// Bounds returns the validation bounds recorded on the setting, if any. +// Either pointer may be nil, indicating that the corresponding bound is +// unbounded. The returned pointers are owned by the setting and must not be +// modified. +func (d *DurationSetting) Bounds() (min, max *time.Duration) { + return d.min, d.max +} + +// setDurationBounds stores the given min/max bounds on a DurationSetting or +// DurationSettingWithExplicitUnit (which embeds DurationSetting). It panics if +// applied to any other setting type, since numeric bounds only make sense for +// numeric settings. +func setDurationBounds(s Setting, min, max *time.Duration) { + switch v := s.(type) { + case *DurationSetting: + v.min, v.max = min, max + case *DurationSettingWithExplicitUnit: + v.min, v.max = min, max + default: + panic(errors.AssertionFailedf("duration bounds applied to non-duration setting: %T", s)) + } +} + // ErrorHint returns a hint message to be displayed on error to the user. func (d *DurationSettingWithExplicitUnit) ErrorHint() (bool, string) { return true, "try using an interval value with explicit units, e.g 500ms or 1h2m" @@ -184,6 +212,7 @@ func RegisterDurationSetting( } register(class, key, desc, setting) setting.apply(opts) + applyBounds(setting, opts) return setting } @@ -225,6 +254,7 @@ func RegisterDurationSettingWithExplicitUnit( } register(class, key, desc, setting) setting.apply(opts) + applyBounds(setting, opts) return setting } @@ -238,12 +268,18 @@ func nonNegativeDurationInternal(v time.Duration) error { // DurationInRange returns a validation option that checks the value // is within the given bounds (inclusive). func DurationInRange(minVal, maxVal time.Duration) SettingOption { - return WithValidateDuration(func(v time.Duration) error { - if v < minVal || v > maxVal { - return errors.Errorf("expected value in range [%v, %v], got: %v", minVal, maxVal, v) - } - return nil - }) + min, max := minVal, maxVal + return SettingOption{ + validateDurationFn: func(v time.Duration) error { + if v < minVal || v > maxVal { + return errors.Errorf("expected value in range [%v, %v], got: %v", minVal, maxVal, v) + } + return nil + }, + boundsOpt: func(s Setting) { + setDurationBounds(s, &min, &max) + }, + } } // NonNegativeDurationWithMaximum returns a validation option that @@ -257,33 +293,45 @@ func NonNegativeDurationWithMaximum(maxValue time.Duration) SettingOption { // duration is greater or equal to the given minimum. It can be passed // to RegisterDurationSetting. func DurationWithMinimum(minValue time.Duration) SettingOption { - return WithValidateDuration(func(v time.Duration) error { - if minValue >= 0 { - if err := nonNegativeDurationInternal(v); err != nil { - return err + min := minValue + return SettingOption{ + validateDurationFn: func(v time.Duration) error { + if minValue >= 0 { + if err := nonNegativeDurationInternal(v); err != nil { + return err + } } - } - if v < minValue { - return errors.Errorf("cannot be set to a value smaller than %s", minValue) - } - return nil - }) + if v < minValue { + return errors.Errorf("cannot be set to a value smaller than %s", minValue) + } + return nil + }, + boundsOpt: func(s Setting) { + setDurationBounds(s, &min, nil) + }, + } } // DurationWithMinimumOrZeroDisable returns a validation option that // checks the value is at least the given minimum, or zero to disable. // It can be passed to RegisterDurationSetting. func DurationWithMinimumOrZeroDisable(minValue time.Duration) SettingOption { - return WithValidateDuration(func(v time.Duration) error { - if minValue >= 0 && v < 0 { - return errors.Errorf("cannot be set to a negative duration: %s", v) - } - if v != 0 && v < minValue { - return errors.Errorf("cannot be set to a value smaller than %s", - minValue) - } - return nil - }) + min := minValue + return SettingOption{ + validateDurationFn: func(v time.Duration) error { + if minValue >= 0 && v < 0 { + return errors.Errorf("cannot be set to a negative duration: %s", v) + } + if v != 0 && v < minValue { + return errors.Errorf("cannot be set to a value smaller than %s", + minValue) + } + return nil + }, + boundsOpt: func(s Setting) { + setDurationBounds(s, &min, nil) + }, + } } // PositiveDuration checks that the value is strictly positive. It can diff --git a/pkg/settings/float.go b/pkg/settings/float.go index 2450badd4893..93da950072ea 100644 --- a/pkg/settings/float.go +++ b/pkg/settings/float.go @@ -19,11 +19,35 @@ import ( type FloatSetting struct { common defaultValue float64 - validateFn func(float64) error + // min and max, when non-nil, record the validation bounds supplied via + // options such as FloatInRange, FloatWithMinimum, or + // NonNegativeFloatWithMaximum. They are surfaced via Bounds() for + // documentation and introspection. + min, max *float64 + validateFn func(float64) error } var _ internalSetting = &FloatSetting{} +// Bounds returns the validation bounds recorded on the setting, if any. +// Either pointer may be nil, indicating that the corresponding bound is +// unbounded. The returned pointers are owned by the setting and must not be +// modified. +func (f *FloatSetting) Bounds() (min, max *float64) { + return f.min, f.max +} + +// setFloatBounds stores the given min/max bounds on a FloatSetting. It panics +// if applied to any other setting type, since numeric bounds only make sense +// for numeric settings. +func setFloatBounds(s Setting, min, max *float64) { + v, ok := s.(*FloatSetting) + if !ok { + panic(errors.AssertionFailedf("float bounds applied to non-float setting: %T", s)) + } + v.min, v.max = min, max +} + // Get retrieves the float value in the setting. func (f *FloatSetting) Get(sv *Values) float64 { return math.Float64frombits(uint64(sv.getInt64(f.slot))) @@ -166,6 +190,7 @@ func RegisterFloatSetting( } register(class, key, desc, setting) setting.apply(opts) + applyBounds(setting, opts) return setting } @@ -177,30 +202,42 @@ var NonNegativeFloat SettingOption = FloatWithMinimum(0) // value is at least the given minimum. It can be passed to // RegisterFloatSetting. func FloatWithMinimum(minVal float64) SettingOption { - return WithValidateFloat(func(v float64) error { - if minVal >= 0 && v < 0 { - return errors.Errorf("cannot set to a negative value: %f", v) - } - if v < minVal { - return errors.Errorf("cannot set to a value lower than %f: %f", minVal, v) - } - return nil - }) + min := minVal + return SettingOption{ + validateFloat64Fn: func(v float64) error { + if minVal >= 0 && v < 0 { + return errors.Errorf("cannot set to a negative value: %f", v) + } + if v < minVal { + return errors.Errorf("cannot set to a value lower than %f: %f", minVal, v) + } + return nil + }, + boundsOpt: func(s Setting) { + setFloatBounds(s, &min, nil) + }, + } } // FloatWithMinimumOrZeroDisable returns a validation option that // verifies the value is at least the given minimum, or zero to // disable. It can be passed to RegisterFloatSetting. func FloatWithMinimumOrZeroDisable(minVal float64) SettingOption { - return WithValidateFloat(func(v float64) error { - if minVal >= 0 && v < 0 { - return errors.Errorf("cannot set to a negative value: %f", v) - } - if v != 0 && v < minVal { - return errors.Errorf("cannot set to a value lower than %f: %f", minVal, v) - } - return nil - }) + min := minVal + return SettingOption{ + validateFloat64Fn: func(v float64) error { + if minVal >= 0 && v < 0 { + return errors.Errorf("cannot set to a negative value: %f", v) + } + if v != 0 && v < minVal { + return errors.Errorf("cannot set to a value lower than %f: %f", minVal, v) + } + return nil + }, + boundsOpt: func(s Setting) { + setFloatBounds(s, &min, nil) + }, + } } // NonNegativeFloatWithMaximum returns a validation option that checks @@ -235,12 +272,18 @@ var Fraction SettingOption = FloatInRange(0, 1) // FloatInRange returns a validation option that checks the value is // within the given bounds (inclusive). func FloatInRange(minVal, maxVal float64) SettingOption { - return WithValidateFloat(func(v float64) error { - if v < minVal || v > maxVal { - return errors.Errorf("expected value in range [%f, %f], got: %f", minVal, maxVal, v) - } - return nil - }) + min, max := minVal, maxVal + return SettingOption{ + validateFloat64Fn: func(v float64) error { + if v < minVal || v > maxVal { + return errors.Errorf("expected value in range [%f, %f], got: %f", minVal, maxVal, v) + } + return nil + }, + boundsOpt: func(s Setting) { + setFloatBounds(s, &min, &max) + }, + } } // FractionUpperExclusive requires the setting to be in the interval @@ -251,10 +294,19 @@ var FractionUpperExclusive SettingOption = FloatInRangeUpperExclusive(0, 1) // the value is within the given bounds (inclusive lower, exclusive // upper). func FloatInRangeUpperExclusive(minVal, maxVal float64) SettingOption { - return WithValidateFloat(func(v float64) error { - if v < minVal || v >= maxVal { - return errors.Errorf("expected value in range [%f, %f), got: %f", minVal, maxVal, v) - } - return nil - }) + min, max := minVal, maxVal + return SettingOption{ + validateFloat64Fn: func(v float64) error { + if v < minVal || v >= maxVal { + return errors.Errorf("expected value in range [%f, %f), got: %f", minVal, maxVal, v) + } + return nil + }, + boundsOpt: func(s Setting) { + // Bounds are recorded as the inclusive range. Whether the + // upper bound is exclusive is a separate concern, currently + // not surfaced via Bounds(). + setFloatBounds(s, &min, &max) + }, + } } diff --git a/pkg/settings/int.go b/pkg/settings/int.go index 2e0c8902e7e4..37e31a018531 100644 --- a/pkg/settings/int.go +++ b/pkg/settings/int.go @@ -18,11 +18,39 @@ import ( type IntSetting struct { common defaultValue int64 - validateFn func(int64) error + // min and max, when non-nil, record the validation bounds supplied via + // options such as IntInRange, IntWithMinimum, IntInRangeOrZeroDisable, + // or NonNegativeIntWithMaximum. They are surfaced via Bounds() for + // documentation and introspection. + min, max *int64 + validateFn func(int64) error } var _ internalSetting = &IntSetting{} +// Bounds returns the validation bounds recorded on the setting, if any. +// Either pointer may be nil, indicating that the corresponding bound is +// unbounded. The returned pointers are owned by the setting and must not be +// modified. +func (i *IntSetting) Bounds() (min, max *int64) { + return i.min, i.max +} + +// setIntBounds stores the given min/max bounds on an IntSetting or +// ByteSizeSetting (which embeds IntSetting). It panics if applied to any +// other setting type, since numeric bounds only make sense for numeric +// settings. +func setIntBounds(s Setting, min, max *int64) { + switch v := s.(type) { + case *IntSetting: + v.min, v.max = min, max + case *ByteSizeSetting: + v.min, v.max = min, max + default: + panic(errors.AssertionFailedf("int bounds applied to non-int setting: %T", s)) + } +} + // Get retrieves the int value in the setting. func (i *IntSetting) Get(sv *Values) int64 { return sv.container.getInt64(i.slot) @@ -167,6 +195,7 @@ func RegisterIntSetting( } register(class, key, desc, setting) setting.apply(opts) + applyBounds(setting, opts) return setting } @@ -193,17 +222,23 @@ func nonNegativeIntInternal(v int64) error { // that the value is greater or equal to the given minimum. It can be // passed to RegisterIntSetting. func IntWithMinimum(minVal int64) SettingOption { - return WithValidateInt(func(v int64) error { - if minVal >= 0 { - if err := nonNegativeIntInternal(v); err != nil { - return err + min := minVal + return SettingOption{ + validateInt64Fn: func(v int64) error { + if minVal >= 0 { + if err := nonNegativeIntInternal(v); err != nil { + return err + } } - } - if v < minVal { - return errors.Errorf("cannot be set to a value lower than %d: %d", minVal, v) - } - return nil - }) + if v < minVal { + return errors.Errorf("cannot be set to a value lower than %d: %d", minVal, v) + } + return nil + }, + boundsOpt: func(s Setting) { + setIntBounds(s, &min, nil) + }, + } } // NonNegativeIntWithMaximum returns a validation option that checks @@ -217,22 +252,34 @@ func NonNegativeIntWithMaximum(maxValue int64) SettingOption { // within the given bounds (inclusive). It can be passed to // RegisterIntSetting. func IntInRange(minVal, maxVal int64) SettingOption { - return WithValidateInt(func(v int64) error { - if v < minVal || v > maxVal { - return errors.Errorf("expected value in range [%d, %d], got: %d", minVal, maxVal, v) - } - return nil - }) + min, max := minVal, maxVal + return SettingOption{ + validateInt64Fn: func(v int64) error { + if v < minVal || v > maxVal { + return errors.Errorf("expected value in range [%d, %d], got: %d", minVal, maxVal, v) + } + return nil + }, + boundsOpt: func(s Setting) { + setIntBounds(s, &min, &max) + }, + } } // IntInRangeOrZeroDisable returns a validation option that checks the // value is within the given bounds (inclusive) or is zero (disabled). // It can be passed to RegisterIntSetting. func IntInRangeOrZeroDisable(minVal, maxVal int64) SettingOption { - return WithValidateInt(func(v int64) error { - if v != 0 && (v < minVal || v > maxVal) { - return errors.Errorf("expected value in range [%d, %d] or 0 to disable, got: %d", minVal, maxVal, v) - } - return nil - }) + min, max := minVal, maxVal + return SettingOption{ + validateInt64Fn: func(v int64) error { + if v != 0 && (v < minVal || v > maxVal) { + return errors.Errorf("expected value in range [%d, %d] or 0 to disable, got: %d", minVal, maxVal, v) + } + return nil + }, + boundsOpt: func(s Setting) { + setIntBounds(s, &min, &max) + }, + } } diff --git a/pkg/settings/options.go b/pkg/settings/options.go index 10a4ad3221ca..b5ce1f54bc61 100644 --- a/pkg/settings/options.go +++ b/pkg/settings/options.go @@ -13,7 +13,13 @@ import ( // SettingOption is the type of an option that can be passed to Register. type SettingOption struct { - commonOpt func(*common) + commonOpt func(*common) + // boundsOpt, if non-nil, is invoked after the setting has been registered + // and initialized. It is used by numeric validation options (e.g. + // IntInRange, FloatWithMinimum) to record the validation bounds on the + // concrete setting type so that they can be surfaced via Bounds() for + // documentation and introspection. + boundsOpt func(Setting) validateBoolFn func(*Values, bool) error validateDurationFn func(time.Duration) error validateInt64Fn func(int64) error @@ -132,3 +138,15 @@ func (c *common) apply(opts []SettingOption) { } } } + +// applyBounds invokes any boundsOpt callback in opts against s. Each numeric +// Register function calls this after register() and apply() so that bounds +// expressed via validation options (e.g. IntInRange) are recorded on the +// concrete setting type. +func applyBounds(s Setting, opts []SettingOption) { + for _, opt := range opts { + if opt.boundsOpt != nil { + opt.boundsOpt(s) + } + } +}