docs/content/v2.20/reference/configuration/yb-tserver.md
Use the yb-tserver binary and its flags to configure the YB-TServer server. The yb-tserver executable file is located in the bin directory of YugabyteDB home.
{{< note title="Setting flags in YugabyteDB Anywhere" >}}
If you are using YugabyteDB Anywhere, set flags using the Edit Flags feature.
{{< /note >}}
yb-tserver [ flags ]
./bin/yb-tserver \
--tserver_master_addrs 172.151.17.130:7100,172.151.17.220:7100,172.151.17.140:7100 \
--rpc_bind_addresses 172.151.17.130 \
--enable_ysql \
--fs_data_dirs "/home/centos/disk1,/home/centos/disk2" &
To display the online help, run yb-tserver --help from the YugabyteDB home directory:
./bin/yb-tserver --help
Displays help on all flags.
Displays help on modules named by the specified flag value.
The following sections describe the flags considered relevant to configuring YugabyteDB for production deployments. For a list of all flags, see All YB-TServer flags.
Specifies the file to load the configuration flags from. The configuration flags must be in the same format as supported by the command line flags.
Shows version and build info, then exits.
Specifies a comma-separated list of all the yb-master RPC addresses.
Required.
Default: 127.0.0.1:7100
The number of comma-separated values should match the total number of YB-Master servers (or the replication factor).
Specifies a comma-separated list of mount directories, where yb-tserver will add a yb-data/tserver data directory, tserver.err, tserver.out, and pg_data directory.
Required.
Changing the value of this flag after the cluster has already been created is not supported.
Specifies a comma-separated list of directories, where yb-tserver will store write-ahead (WAL) logs. This can be the same as one of the directories listed in --fs_data_dirs, but not a subdirectory of a data directory.
Default: The same value as --fs_data_dirs
Specifies the expected maximum clock skew, in microseconds (µs), between any two nodes in your deployment.
Default: 500000 (500,000 µs = 500ms)
Specifies the comma-separated list of the network interface addresses to which to bind for RPC connections.
The values must match on all yb-master and yb-tserver configurations.
Default: Private IP address of the host on which the server is running, as defined in /home/yugabyte/tserver/conf/server.conf. For example:
egrep -i rpc /home/yugabyte/tserver/conf/server.conf
--rpc_bind_addresses=172.161.x.x:9100
Make sure that the server_broadcast_addresses flag is set correctly if the following applies:
rpc_bind_addresses is set to 0.0.0.0rpc_bind_addresses involves public IP addresses such as, for example, 0.0.0.0:9100, which instructs the server to listen on all available network interfaces.Specifies the public IP or DNS hostname of the server (with an optional port). This value is used by servers to communicate with one another, depending on the connection policy parameter.
Default: ""
Specifies the queue size for the tablet server to serve reads and writes from applications.
Default: 5000
Specifies the duration, in milliseconds, until a cached DNS resolution expires. When hostnames are used instead of IP addresses, a DNS resolver must be queried to match hostnames to IP addresses. By using a local DNS cache to temporarily store DNS lookups, DNS queries can be resolved quicker and additional queries can be avoided, thereby reducing latency, improving load times, and reducing bandwidth and CPU consumption.
Default: 60000 (1 minute)
If you change this value from the default, be sure to add the identical value to all YB-Master and YB-TServer configurations.
Specifies the policy that determines when to use private IP addresses for inter-node communication. Possible values are never, zone, cloud, and region. Based on the values of the geo-distribution flags.
Valid values for the policy are:
never — Always use --server_broadcast_addresses.zone — Use the private IP inside a zone; use --server_broadcast_addresses outside the zone.cloud — Use the private IP address across all zones in a cloud; use --server_broadcast_addresses outside the cloud.region — Use the private IP address across all zone in a region; use --server_broadcast_addresses outside the region.Default: never
The address to bind for the web server user interface.
Default: 0.0.0.0 (127.0.0.1)
The port for monitoring the web server.
Default: 9000
The monitoring web server home directory..
Default: The www directory in the YugabyteDB home directory.
Location of the SSL certificate file (in .pem format) to use for the web server. If empty, SSL is not enabled for the web server.
Default: ""
Domain used for .htpasswd authentication. This should be used in conjunction with --webserver_password_file.
Default: ""
Location of the .htpasswd file containing usernames and hashed passwords, for authentication to the web server.
Default: ""
The directory to write yb-tserver log files.
Default: The same as --fs_data_dirs
Write log messages to stderr instead of logfiles.
Default: false
The maximum log size, in megabytes (MB). A value of 0 will be silently overridden to 1.
Default: 1800 (1.8 GB)
The minimum level to log messages. Values are: 0 (INFO), 1, 2, 3 (FATAL).
Default: 0 (INFO)
Log messages at, or above, this level are copied to stderr in addition to log files.
Default: 2
Stop attempting to log to disk if the disk is full.
Default: false
With the exception of flags that have different defaults for yb-master vs yb-tserver (for example, --evict_failed_followers), for a typical deployment, values used for Raft and the write ahead log (WAL) flags in yb-tserver configurations should match the values in yb-master configurations.
The duration, in seconds, after which a follower is considered to be failed because the leader has not received a heartbeat. The follower is then evicted from the configuration and the data is re-replicated elsewhere.
Default: 900 (15 minutes)
The --follower_unavailable_considered_failed_sec value should match the value for --log_min_seconds_to_retain.
Failed followers will be evicted from the Raft group and the data will be re-replicated.
Default: true
The maximum heartbeat periods that the leader can fail to heartbeat in before the leader is considered to be failed. The total failure timeout, in milliseconds (ms), is --raft_heartbeat_interval_ms multiplied by --leader_failure_max_missed_heartbeat_periods.
For read replica clusters, set the value to 10 in all yb-tserver and yb-master configurations. Because the data is globally replicated, RPC latencies are higher. Use this flag to increase the failure detection interval in such a higher RPC latency deployment.
Default: 6
The leader lease duration, in milliseconds. A leader keeps establishing a new lease or extending the existing one with every consensus update. A new server is not allowed to serve as a leader (that is, serve up-to-date read requests or acknowledge write requests) until a lease of this duration has definitely expired on the old leader's side, or the old leader has explicitly acknowledged the new leader's lease.
This lease allows the leader to safely serve reads for the duration of its lease, even during a network partition. For more information, refer to Leader leases.
Leader lease duration should be longer than the heartbeat interval, and less than the multiple of --leader_failure_max_missed_heartbeat_periods multiplied by --raft_heartbeat_interval_ms.
Default: 2000
Specifies the maximum bounded staleness (duration), in milliseconds, before a follower forwards a read request to the leader.
In a geo-distributed cluster, with followers located a long distance from the tablet leader, you can use this setting to increase the maximum bounded staleness.
Default: 10000 (10 seconds)
The heartbeat interval, in milliseconds (ms), for Raft replication. The leader produces heartbeats to followers at this interval. The followers expect a heartbeat at this interval and consider a leader to have failed if it misses several in a row.
Default: 500
Ensure that values used for the write ahead log (WAL) in yb-tserver configurations match the values for yb-master configurations.
The directory where the yb-tserver retains WAL files. May be the same as one of the directories listed in --fs_data_dirs, but not a subdirectory of a data directory.
Default: The same as --fs_data_dirs
If set to false, the writes to the WAL are synchronized to disk every interval_durable_wal_write_ms milliseconds (ms) or every bytes_durable_wal_write_mb megabyte (MB), whichever comes first. This default setting is recommended only for multi-AZ or multi-region deployments where the availability zones (AZs) or regions are independent failure domains and there is not a risk of correlated power loss. For single AZ deployments, this flag should be set to true.
Default: false
When --durable_wal_write is false, writes to the WAL are synced to disk every --interval_durable_wal_write_ms or --bytes_durable_wal_write_mb, whichever comes first.
Default: 1000
When --durable_wal_write is false, writes to the WAL are synced to disk every --bytes_durable_wal_write_mb or --interval_durable_wal_write_ms, whichever comes first.
Default: 1
The minimum duration, in seconds, to retain WAL segments, regardless of durability requirements. WAL segments can be retained for a longer amount of time, if they are necessary for correct restart. This value should be set long enough such that a tablet server which has temporarily failed can be restarted in the given time period.
Default: 900 (15 minutes)
The minimum number of WAL segments (files) to retain, regardless of durability requirements. The value must be at least 1.
Default: 2
The size, in megabytes (MB), of a WAL segment (file). When the WAL segment reaches the specified size, then a log rollover occurs and a new WAL segment file is created.
Default: 64
When the server restarts from a previous crash, if the tablet's last WAL file size is less than or equal to this threshold value, the last WAL file will be reused. Otherwise, WAL will allocate a new file at bootstrap. To disable WAL reuse, set the value to -1.
Default: The default value in {{<release "2.18.1">}} is -1 - feature is disabled by default. The default value starting from {{<release "2.19.1">}} is 524288 (0.5 MB) - feature is enabled by default.
The number of shards (tablets) per YB-TServer for each YCQL table when a user table is created.
Default: -1, where the number of shards is determined at runtime, as follows:
If enable_automatic_tablet_splitting is true
1.If enable_automatic_tablet_splitting is false
4.8.Local cluster installations created using yb-ctl and yb-docker-ctl use a default value of 2 for this flag.
Clusters created using yugabyted always use a default value of 1.
{{< note title="Note" >}}
-1), then the system automatically determines an appropriate value based on the number of CPU cores and internally updates the flag with the intended value during startup prior to version 2.18 and the flag remains unchanged starting from version 2.18.CREATE TABLE ... WITH TABLETS = <num> clause can be used on a per-table basis to override the yb_num_shards_per_tserver value.{{< /note >}}
The number of shards (tablets) per YB-TServer for each YSQL table when a user table is created.
Default: -1, where the number of shards is determined at runtime, as follows:
If enable_automatic_tablet_splitting is true
1.If enable_automatic_tablet_splitting is false
2.4.8.Local cluster installations created using yb-ctl and yb-docker-ctl use a default value of 2 for this flag.
Clusters created using yugabyted always use a default value of 1.
{{< note title="Note" >}}
-1), the system automatically determines an appropriate value based on the number of CPU cores and internally updates the flag with the intended value during startup prior to version 2.18 and the flag remains unchanged starting from version 2.18.CREATE TABLE ...SPLIT INTO clause can be used on a per-table basis to override the ysql_num_shards_per_tserver value.{{< /note >}}
Interval at which the tablet manager tries to cleanup split tablets that are no longer needed. Setting this to 0 disables cleanup of split tablets.
Default: 60
Enables YugabyteDB to automatically split tablets.
Default: true
{{< note title="Important" >}}
This value must match on all yb-master and yb-tserver configurations of a YugabyteDB cluster.
{{< /note >}}
Deprecated. Use full_compaction_pool_max_threads.
Deprecated. Use full_compaction_pool_max_queue_size.
The maximum number of threads allowed for non-admin full compactions. This includes post-split compactions (compactions that remove irrelevant data from new tablets after splits) and scheduled full compactions.
Default: 1
The maximum number of full compaction tasks that can be queued simultaneously. This includes post-split compactions (compactions that remove irrelevant data from new tablets after splits) and scheduled full compactions.
Default: 200
The interval at which the full compaction task will check for tablets eligible for compaction (both for the statistics-based full compaction and scheduled full compaction features). 0 indicates that the statistics-based full compactions feature is disabled.
Default: 60
Window of time in seconds over which DocDB read statistics are analyzed for the purpose of triggering full compactions to improve read performance. Both auto_compact_percent_obsolete and auto_compact_min_obsolete_keys_found are evaluated over this period of time.
auto_compact_stat_window_seconds must be evaluated as a multiple of auto_compact_check_interval_sec, and will be rounded up to meet this constraint. For example, if auto_compact_stat_window_seconds is set to 100 and auto_compact_check_interval_sec is set to 60, it will be rounded up to 120 at runtime.
Default: 300
The percentage of obsolete keys (over total keys) read over the auto_compact_stat_window_seconds window of time required to trigger an automatic full compaction on a tablet. Only keys that are past their history retention (and thus can be garbage collected) are counted towards this threshold.
For example, if the flag is set to 99 and 100000 keys are read over that window of time, and 99900 of those are obsolete and past their history retention, a full compaction will be triggered (subject to other conditions).
Default: 99
Minimum number of keys that must be read over the last auto_compact_stat_window_seconds to trigger a statistics-based full compaction.
Default: 10000
Minimum wait time between statistics-based and scheduled full compactions. To be used if statistics-based compactions are triggering too frequently.
Default: 0
The frequency with which full compactions should be scheduled on tablets. 0 indicates that the feature is disabled. Recommended value: 720 hours or greater (that is, 30 days).
Default: 0
Percentage of scheduled_full_compaction_frequency_hours to be used as jitter when determining full compaction schedule per tablet. Must be a value between 0 and 100. Jitter is introduced to prevent many tablets from being scheduled for full compactions at the same time.
Jitter is deterministically computed when scheduling a compaction, between 0 and (frequency * jitter factor) hours. Once computed, the jitter is subtracted from the intended compaction frequency to determine the tablet's next compaction time.
Example: If scheduled_full_compaction_frequency_hours is 720 hours (that is, 30 days), and scheduled_full_compaction_jitter_factor_percentage is 33 percent, each tablet will be scheduled for compaction every 482 hours to 720 hours.
Default: 33
Assigns an extra priority to automatic (minor) compactions when automatic tablet splitting is enabled. This deprioritizes post-split compactions and ensures that smaller compactions are not starved. Suggested values are between 0 and 50.
Default: 50
When enabled, all databases created in the cluster are colocated by default. If you enable the flag after creating a cluster, you need to restart the YB-Master and YB-TServer services.
For more details, see clusters in colocated tables.
Default: false
Settings related to managing geo-distributed clusters:
The name of the availability zone, or rack, where this instance is deployed.
{{<tip title="Rack awareness">}} For on-premises deployments, consider racks as zones to treat them as fault domains. {{</tip>}}
Default: rack1
Specifies the name of the region, or data center, where this instance is deployed.
Default: datacenter1
Specifies the name of the cloud where this instance is deployed.
Default: cloud1
The unique identifier for the cluster.
Default: ""
If true, forces all transactions through this instance to always be global transactions that use the system.transactions transaction status table. This is equivalent to always setting the YSQL parameter force_global_transaction = TRUE.
{{< note title="Global transaction latency" >}}
Avoid setting this flag when possible. All distributed transactions can run without issue as global transactions, but you may have significantly higher latency when committing transactions, because YugabyteDB must achieve consensus across multiple regions to write to system.transactions. When necessary, it is preferable to selectively set the YSQL parameter force_global_transaction = TRUE rather than setting this flag.
{{< /note >}}
Default: false
If true, transaction status tables will be created under each YSQL tablespace that has a placement set and contains at least one other table.
Default: true
If true, local transactions using transaction status tables other than system.transactions will be automatically promoted to global transactions using the system.transactions transaction status table upon accessing data outside of the local region.
Default: true
Settings related to managing xClusters.
The RPC queue size of the xCluster service. Should match the size of tablet_server_svc_queue_length used for read and write requests.
Default: 5000
The following flags support the use of the YSQL API:
Enables the YSQL API.
Default: true
Ensure that enable_ysql values in yb-tserver configurations match the values in yb-master configurations.
Enables YSQL authentication.
When YSQL authentication is enabled, you can sign into ysqlsh using the default yugabyte user that has a default password of yugabyte.
Default: false
Enables YSQL login profiles.
When YSQL login profiles are enabled, you can set limits on the number of failed login attempts made by users.
Default: false
Specifies the TCP/IP bind addresses for the YSQL API. The default value of 0.0.0.0:5433 allows listening for all IPv4 addresses access to localhost on port 5433. The --pgsql_proxy_bind_address value overwrites listen_addresses (default value of 127.0.0.1:5433) that controls which interfaces accept connection attempts.
To specify fine-grained access control over who can access the server, use --ysql_hba_conf.
Default: 0.0.0.0:5433
Specifies the web server port for YSQL metrics monitoring.
Default: 13000
Deprecated. Use --ysql_hba_conf_csv instead.
Specifies a comma-separated list of PostgreSQL client authentication settings that is written to the ysql_hba.conf file. To see the current values in the ysql_hba.conf file, run the SHOW hba_file; statement and then view the file. Because the file is autogenerated, direct edits are overwritten by the autogenerated content.
For details on using --ysql_hba_conf_csv to specify client authentication, refer to Host-based authentication.
If a setting includes a comma (,) or double quotes ("), the setting should be enclosed in double quotes. In addition, double quotes inside the quoted text should be doubled ("").
Suppose you have two fields: host all all 127.0.0.1/0 password and host all all 0.0.0.0/0 ldap ldapserver=***** ldapsearchattribute=cn ldapport=3268 ldapbinddn=***** ldapbindpasswd="*****".
Because the second field includes double quotes (") around one of the settings, you need to double the quotes and enclose the entire field in quotes, as follows:
"host all all 0.0.0.0/0 ldap ldapserver=***** ldapsearchattribute=cn ldapport=3268 ldapbinddn=***** ldapbindpasswd=""*****"""
To set the flag, join the fields using a comma (,) and enclose the final flag value in single quotes ('):
--ysql_hba_conf_csv='host all all 127.0.0.1/0 password,"host all all 0.0.0.0/0 ldap ldapserver=***** ldapsearchattribute=cn ldapport=3268 ldapbinddn=***** ldapbindpasswd=""*****"""'
Default: "host all all 0.0.0.0/0 trust,host all all ::0/0 trust"
Deprecated. Use --ysql_pg_conf_csv instead.
Comma-separated list of PostgreSQL server configuration parameters that is appended to the postgresql.conf file. If internal quotation marks are required, surround each configuration pair having single quotation marks with double quotation marks.
For example:
--ysql_pg_conf_csv="log_line_prefix='%m [%p %l %c] %q[%C %R %Z %H] [%r %a %u %d] '","pgaudit.log='all, -misc'",pgaudit.log_parameter=on,pgaudit.log_relation=on,pgaudit.log_catalog=off,suppress_nonpg_logs=on
For information on available PostgreSQL server configuration parameters, refer to Server Configuration in the PostgreSQL documentation.
The server configuration parameters for YugabyteDB are the same as for PostgreSQL, with some minor exceptions. Refer to PostgreSQL configuration parameters.
Specifies the time zone for displaying and interpreting timestamps.
Default: Uses the YSQL time zone.
Specifies the display format for data and time values.
Default: Uses the YSQL display format.
Specifies the maximum number of concurrent YSQL connections per node.
This is a maximum per server, so a 3-node cluster will have a default of 900 available connections, globally.
Any active, idle in transaction, or idle in session connection counts toward the connection limit.
Some connections are reserved for superusers. The total number of superuser connections is determined by the superuser_reserved_connections PostgreSQL configuration parameter. Connections available to non-superusers is equal to ysql_max_connections - superuser_reserved_connections.
Default: If ysql_max_connections is not set, the database startup process will determine the highest number of connections the system can support, from a minimum of 50 to a maximum of 300 (per node).
Specifies the default transaction isolation level.
Valid values: serializable, 'repeatable read', 'read committed', and 'read uncommitted'.
Default: 'read committed'
Read Committed isolation {{<tags/feature/ea idea="1099">}} is supported only if the YB-TServer flag yb_enable_read_committed_isolation is set to true. By default this flag is false and the Read Committed isolation level of the YugabyteDB transactional layer falls back to the stricter Snapshot isolation (in which case Read Committed and Read Uncommitted of YSQL also in turn use Snapshot isolation).
Specifies where to cache sequence values.
Valid values are connection and server.
This flag requires the YB-TServer yb_enable_sequence_pushdown flag to be true (the default). Otherwise, the default behavior will occur regardless of this flag's value.
For details on caching values on the server and switching between cache methods, see the semantics on the nextval page.
Default: connection
Specifies the minimum number of sequence values to cache in the client for every sequence object.
To turn off the default size of cache flag, set the flag to 0.
For details on the expected behaviour when used with the sequence cache clause, see the semantics under CREATE SEQUENCE and ALTER SEQUENCE pages.
Default: 100
Specifies the maximum size (in bytes) of total data returned in one response when the query layer fetches rows of a table from DocDB. Used to bound how many rows can be returned in one request. Set to 0 to have no size limit.
You can also specify the value as a string. For example, you can set it to '10MB'.
You should have at least one of row limit or size limit set.
If both --ysql_yb_fetch_row_limit and --ysql_yb_fetch_size_limit are greater than zero, then limit is taken as the lower bound of the two values.
See also the yb_fetch_size_limit configuration parameter. If both flag and parameter are set, the parameter takes precedence.
Default: 0
Specifies the maximum number of rows returned in one response when the query layer fetches rows of a table from DocDB. Used to bound how many rows can be returned in one request. Set to 0 to have no row limit.
You should have at least one of row limit or size limit set.
If both --ysql_yb_fetch_row_limit and --ysql_yb_fetch_size_limit are greater than zero, then limit is taken as the lower bound of the two values.
See also the yb_fetch_row_limit configuration parameter. If both flag and parameter are set, the parameter takes precedence.
Default: 1024
Specifies the types of YSQL statements that should be logged.
Valid values: none (off), ddl (only data definition queries, such as create/alter/drop), mod (all modifying/write statements, includes DDLs plus insert/update/delete/truncate, etc), and all (all statements).
Default: none
Logs the duration of each completed SQL statement that runs the specified duration (in milliseconds) or longer. Setting the value to 0 prints all statement durations. You can use this flag to help track down unoptimized (or "slow") queries.
Default: -1 (disables logging statement durations)
Specifies the lowest YSQL message level to log.
Size of YSQL layer output buffer, in bytes. YSQL buffers query responses in this output buffer until either a buffer flush is requested by the client or the buffer overflows.
As long as no data has been flushed from the buffer, the database can retry queries on retryable errors. For example, you can increase the size of the buffer so that YSQL can retry read restart errors.
Default: 262144 (256kB, type: int32)
{{<tags/feature/ea>}} Sets the size of a tuple batch that's taken from the outer side of a batched nested loop (BNL) join. When set to 1, BNLs are effectively turned off and won't be considered as a query plan candidate.
See also the yb_bnl_batch_size configuration parameter. If both flag and parameter are set, the parameter takes precedence.
Default: 1
Controls whether YSQL follower reads that specify a not-yet-safe read time should be rejected. This will force them to go to the leader, which will likely be faster than waiting for safe time to catch up.
Default: true
The following flags support the use of the YCQL API:
Specify true to enable YCQL authentication (username and password), enable YCQL security statements (CREATE ROLE, DROP ROLE, GRANT ROLE, REVOKE ROLE, GRANT PERMISSION, and REVOKE PERMISSION), and enforce permissions for YCQL statements.
Default: false
Specifies the bind address for the YCQL API.
Default: 0.0.0.0:9042 (127.0.0.1:9042)
Specifies the port for monitoring YCQL metrics.
Default: 12000
Specifies if YCQL tables are created with transactions enabled by default.
Default: false
Set this flag to true to reject TRUNCATE statements unless allowed by DROP TABLE privileges.
Default: false
Set this flag to true to enable audit logging for the universe.
For details, see Audit logging for the YCQL API.
Set this flag to true to enable a superuser to reset a password.
Default: false
Note that to enable the password reset feature, you must first set the use_cassandra_authentication flag to false.
The following flags support the use of the YEDIS API:
Specifies the bind address for the YEDIS API.
Default: 0.0.0.0:6379
Specifies the port for monitoring YEDIS metrics.
Default: 11000
Use the following two flags to select the SSTable compression type:
Enable SSTable compression at the cluster level.
Default: true
Change the SSTable compression type. The valid compression types are Snappy, Zlib, LZ4, and NoCompression.
Default: Snappy
If you select an invalid option, the cluster will not come up.
If you change this flag, the change takes effect after you restart the cluster nodes.
Changing this flag on an existing database is supported; a tablet can validly have SSTs with different compression types. Eventually, compaction will remove the old compression type files.
Key-value encoding to use for regular data blocks in RocksDB. Possible options: shared_prefix, three_shared_parts.
Default: shared_prefix
Only change this flag to three_shared_parts after you migrate the whole cluster to the YugabyteDB version that supports it.
Used to control rate of memstore flush and SSTable file compaction.
Default: 1GB (1 GB/second)
Compactions run only if there are at least rocksdb_universal_compaction_min_merge_width eligible files and their running total (summation of size of files considered so far) is within rocksdb_universal_compaction_size_ratio of the next file in consideration to be included into the same compaction.
Default: 4
Maximum number of threads to do background compactions (used when compactions need to catch up.) Unless rocksdb_disable_compactions=true, this cannot be set to zero.
Default: -1, where the value is calculated at runtime as follows:
1.2.3.4.Threshold beyond which a compaction is considered large.
Default: 2GB
Number of files to trigger level-0 compaction. Set to -1 if compaction should not be triggered by number of files at all.
Default: 5.
Compactions run only if there are at least rocksdb_universal_compaction_min_merge_width eligible files and their running total (summation of size of files considered so far) is within rocksdb_universal_compaction_size_ratio of the next file in consideration to be included into the same compaction.
Default: 20
The time interval, in seconds, to retain history/older versions of data. Point-in-time reads at a hybrid time prior to this interval might not be allowed after a compaction and return a Snapshot too old error. Set this to be greater than the expected maximum duration of any single transaction in your application.
Default: 900 (15 minutes)
Rate control across all tablets being remote bootstrapped from or to this process.
Default: 256MB (256 MB/second)
Based on the value (true/false) of the flag, the leader decides whether to instruct the new peer to attempt bootstrap from a closest caught-up peer. The leader too could be the closest peer depending on the new peer's geographic placement. Setting the flag to false will enable the feature of remote bootstrapping from a closest caught-up peer. The number of bootstrap attempts from a non-leader peer is limited by the flag max_remote_bootstrap_attempts_from_non_leader.
Default: false
{{< note title="Note" >}}
The code for the feature is present from version 2.16 and later, and can be enabled explicitly if needed. Starting from version 2.19, the feature is on by default.
{{< /note >}}
When the flag remote_bootstrap_from_leader_only is set to false (enabling the feature of bootstrapping from a closest peer), the number of attempts where the new peer tries to bootstrap from a non-leader peer is limited by the flag. After these failed bootstrap attempts for the new peer, the leader peer sets itself as the bootstrap source.
Default: 5
Number of bits to use for sharding the block cache. The maximum permissible value is 19.
Default: -1 (indicates a dynamic scheme that evaluates to 4 if number of cores is less than or equal to 16, 5 for 17-32 cores, 6 for 33-64 cores, and so on.)
{{< note title="Note" >}}
Starting from version 2.18, the default is -1. Previously it was 4.
{{< /note >}}
Use the following two flags to configure RPC compression:
Controls whether YugabyteDB uses RPC compression.
Default: true
Specifies which RPC compression algorithm to use. Requires enable_stream_compression to be set to true. Valid values are:
0: No compression (default value)
1: Gzip
2: Snappy
3: LZ4
In most cases, LZ4 (--stream_compression_algo=3) offers the best compromise of compression performance versus CPU overhead. However, the default is set to 0, to avoid latency penalty on workloads.
For details on enabling encryption in transit, see Encryption in transit.
Directory that contains certificate authority, private key, and certificates for this server.
Default: "" (Uses <data drive>/yb-data/tserver/data/certs.)
The directory that contains certificate authority, private key, and certificates for this server that should be used for client-to-server communications.
Default: "" (Use the same directory as certs_dir.)
Allow insecure connections. Set to false to prevent any process with unencrypted communication from joining a cluster. Note that this flag requires use_node_to_node_encryption to be enabled and use_client_to_server_encryption to be enabled.
Default: true
Adds certificate entries, including IP addresses and hostnames, to log for handshake error messages. Enable this flag to debug certificate issues.
Default: false
Use client-to-server (client-to-node) encryption to protect data in transit between YugabyteDB servers and clients, tools, and APIs.
Default: false
Enable server-server (node-to-node) encryption between YugabyteDB YB-Master and YB-TServer servers in a cluster or universe. To work properly, all YB-Master servers must also have their --use_node_to_node_encryption setting enabled.
When enabled, --allow_insecure_connections should be set to false to disallow insecure connections.
Default: false
Specify cipher lists for TLS 1.2 and below. (For TLS 1.3, use --ciphersuite.) Use a colon (":") separated list of TLSv1.2 cipher names in order of preference. Use an exclamation mark ("!") to exclude ciphers. For example:
--cipher_list DEFAULTS:!DES:!IDEA:!3DES:!RC2
This allows all ciphers for TLS 1.2 to be accepted, except those matching the category of ciphers omitted.
This flag requires a restart or rolling restart.
Default: DEFAULTS
For more information, refer to SSL_CTX_set_cipher_list in the OpenSSL documentation.
Specify cipher lists for TLS 1.3. (For TLS 1.2 and below, use --cipher_list.)
Use a colon (":") separated list of TLSv1.3 ciphersuite names in order of preference. Use an exclamation mark ("!") to exclude ciphers. For example:
--ciphersuite DEFAULTS:!CHACHA20
This allows all ciphersuites for TLS 1.3 to be accepted, except CHACHA20 ciphers.
This flag requires a restart or rolling restart.
Default: DEFAULTS
For more information, refer to SSL_CTX_set_cipher_list in the OpenSSL documentation.
Specifies an explicit allow-list of TLS protocols for YugabyteDB's internal RPC communication.
Default: An empty string, which is equivalent to allowing all protocols except "ssl2" and "ssl3".
You can pass a comma-separated list of strings, where the strings can be one of "ssl2", "ssl3", "tls10", "tls11", "tls12", and "tls13".
You can set the TLS version for node-to-node and client-node communication. To enforce TLS 1.2, set the flag to tls12 as follows:
--ssl_protocols = tls12
To specify a minimum TLS version of 1.2, for example, the flag needs to be set to tls12, tls13, and all available subsequent versions.
--ssl_protocols = tls12,tls13
In addition, as this setting does not propagate to PostgreSQL, it is recommended that you specify the minimum TLS version (ssl_min_protocol_version) for PostgreSQL by setting the ysql_pg_conf_csv flag as follows:
--ysql_pg_conf_csv="ssl_min_protocol_version='TLSv1.2'"
The packed row format for the YSQL API is {{<tags/feature/ga>}} as of v2.20.0, and for the YCQL API is {{<tags/feature/tp>}}.
To learn about the packed row feature, see Packed row format in the architecture section.
Whether packed row is enabled for YSQL.
Default: true
Packed Row for YSQL can be used from version 2.16.4 in production environments if the cluster is not used in xCluster settings. For xCluster scenarios, use version 2.18.1 and later. Starting from version 2.19 and later, the flag default is true for new clusters.
Packed row size limit for YSQL. The default value is 0 (use block size as limit). For rows that are over this size limit, a greedy approach will be used to pack as many columns as possible, with the remaining columns stored as individual key-value pairs.
Default: 0
YCQL packed row support is currently in Tech Preview.
Whether packed row is enabled for YCQL.
Default: false
Packed row size limit for YCQL. The default value is 0 (use block size as limit). For rows that are over this size limit, a greedy approach will be used to pack as many columns as possible, with the remaining columns stored as individual key-value pairs.
Default: 0
Whether packed row is enabled for colocated tables in YSQL. The colocated table has an additional flag to mitigate #15143.
Default: false
To learn about CDC, see Change data capture (CDC).
Support for creating a stream for Transactional CDC is currently in Tech Preview.
Enable support for creating streams for transactional CDC.
Default: false
The rate at which CDC state's checkpoint is updated.
Default: 15000
The number of reactor threads to be used for processing ybclient requests for CDC. Increase to improve throughput on large tablet setups.
Default: 50
Maximum number of intent records allowed in a single CDC batch.
Default: 1680
Number of records fetched in a single batch of snapshot operation of CDC.
Default: 250
If cdc_min_replicated_index hasn't been replicated in this amount of time, we reset its value to max int64 to avoid retaining any logs.
Default: 900 (15 minutes)
Time interval (in seconds) to retain history or older versions of data.
Default: 900 (15 minutes)
How often to read the cdc_state table to get the minimum applied index for each tablet across all streams. This information is used to correctly keep log files that contain unapplied entries. This is also the rate at which a tablet's minimum replicated index across all streams is sent to the other peers in the configuration. If flag enable_log_retention_by_op_idx (default: true) is disabled, this flag has no effect.
Default: 60
The number of seconds for which the client can go down and the intents will be retained. This means that if a client has not updated the checkpoint for this interval, the intents would be garbage collected.
Default: 60000
{{< warning title="Warning" >}}
If you are using multiple streams, it is advised that you set this flag to 1800000 (30 minutes).
{{< /warning >}}
Number of seconds to retain log files. Log files older than this value will be deleted even if they contain unreplicated CDC entries. If 0, this flag will be ignored. This flag is ignored if a log segment contains entries that haven't been flushed to RocksDB.
Default: 86400
Stop retaining logs if the space available for the logs falls below this limit, specified in megabytes. As with log_max_seconds_to_retain, this flag is ignored if a log segment contains unflushed entries.
Default: 102400
The time period, in milliseconds, after which the intents will be cleaned up if there is no client polling for the change records.
Default: 14400000 (4 hours)
Number of tables to be added to the stream ID per run of the background thread which adds newly created tables to the active streams on its namespace.
Default: 2
Turn on the file expiration for TTL feature.
Default: false
For tables with a default_time_to_live table property, sets a size threshold at which files will no longer be considered for compaction. Files over this threshold will still be considered for expiration. Disabled if value is 0.
Ideally, rocksdb_max_file_size_for_compaction should strike a balance between expiring data at a reasonable frequency and not creating too many SST files (which can impact read performance). For instance, if 90 days worth of data is stored, consider setting this flag to roughly the size of one day's worth of data.
Default: 0
Threshold for number of SST files per tablet. When exceeded, writes to a tablet will be throttled until the number of files is reduced.
Default: 24
Threshold for number of SST files per tablet. When exceeded, writes to a tablet will no longer be allowed until the number of files is reduced.
Default: 48
When set to true, ignores any value-level TTL metadata when determining file expiration. Helpful in situations where some SST files are missing the necessary value-level metadata (in case of upgrade, for instance).
Default: false
{{< warning title="Warning">}} Use of this flag can potentially result in expiration of live data. Use at your discretion. {{< /warning >}}
When set to true, allows files to expire purely based on their value-level TTL expiration time (even if it is lower than the table TTL). This is helpful for situations where a file needs to expire earlier than its table-level TTL would allow. If no value-level TTL metadata is available, then table-level TTL will still be used.
Default: false
{{< warning title="Warning">}} Use of this flag can potentially result in expiration of live data. Use at your discretion. {{< /warning >}}
YB-TServer metrics are available in Prometheus format at
http://localhost:9000/prometheus-metrics. This flag controls whether
#TYPE and #HELP information is included as part of the Prometheus
metrics output by default.
To override this flag on a per-scrape basis, set the URL parameter
show_help to true to include or to false to not include type and
help information. For example, querying
http://localhost:9000/prometheus-metrics?show_help=true will return
type and help information regardless of the setting of this flag.
Default: true
Catalog cache flags are {{<tags/feature/ea idea="599">}}. For information on setting these flags, see Customize preloading of YSQL catalog caches.
Specifies the names of catalog tables (such as pg_operator, pg_proc, and pg_amop) to be preloaded by PostgreSQL backend processes. This flag reduces latency of first query execution of a particular statement on a connection.
Default: ""
If ysql_catalog_preload_additional_tables is also specified, the union of the above specified catalog tables and pg_am, pg_amproc, pg_cast, and pg_tablespace is preloaded.
When enabled, the postgres backend processes preload the pg_am, pg_amproc, pg_cast, and pg_tablespace catalog tables. This flag reduces latency of first query execution of a particular statement on a connection.
Default: false
If ysql_catalog_preload_additional_table_list is also specified, the union of pg_am, pg_amproc, pg_cast, and pg_tablespace and the tables specified in ysql_catalog_preload_additional_table_list is preloaded.
Enables the YB-TServer catalog cache, which reduces YB-Master overhead for starting a connection and internal system catalog metadata refresh (for example, after executing a DDL), when there are many YSQL connections per node.
Default: false
Defines what part of the catalog gets cached and preloaded by default. As a rule of thumb, preloading more means lower first-query latency (as most/all necessary metadata will already be in the cache) at a cost of higher per-connection memory. Preloading less of the catalog means less memory though can result in a higher mean first-query latency (as we may need to ad-hoc lookup more catalog entries first time we execute a query). This flag only loads the system catalog tables (but not the user objects) which should keep memory low, while loading all often used objects. Still user-object will need to be loaded ad-hoc, which can make first-query latency a bit higher (most impactful in multi-region clusters).
Default: false
Set this flag to false to enable online index backfill. When set to false, online index builds run while online, without failing other concurrent writes and traffic.
For details on how online index backfill works, see the Online Index Backfill design document.
Default: false
Set this flag to false to enable online index backfill. When set to false, online index builds run while online, without failing other concurrent writes and traffic.
For details on how online index backfill works, see the Online Index Backfill design document.
Default: true
Online Index Backfill uses a number of distributed workers to backfill older data from the main table into the index table. This flag sets the number of concurrent index backfill jobs that are allowed to execute on each yb-tserver process. By default, the number of jobs is set automatically as follows:
Increasing the number of backfill jobs can allow the index creation to complete faster, however setting it to a higher number can impact foreground workload operations and also increase the chance of failures and retries of backfill jobs if CPU usage becomes too high.
Default: -1 (automatic setting)
Timeout (in milliseconds) for the backfill stage of a concurrent CREATE INDEX.
Default: 86400000 (1 day)
The time to exclude from the YB-Master flag ysql_index_backfill_rpc_timeout_ms in order to return results to YB-Master in the specified deadline. Should be set to at least the amount of time each batch would require, and less than ysql_index_backfill_rpc_timeout_ms.
Default: -1, where the system automatically calculates the value to be approximately 1 second.
The number of table rows to backfill in a single backfill job. In case of GIN indexes, the number can include more index rows. When index creation is slower than expected on large tables, increasing this parameter to 1024 or 2048 may speed up the operation. However, care must be taken to also tune the associated timeouts for larger batch sizes.
Default: 128
Comma-separated values (CSV) formatted catalogue of preview feature flag names. Preview flags represent experimental or in-development features that are not yet fully supported. Flags that are tagged as "preview" cannot be modified or configured unless they are included in this list.
By adding a flag to this list, you explicitly acknowledge and accept any potential risks or instability that may arise from modifying these preview features. This process serves as a safeguard, ensuring that you are fully aware of the experimental nature of the flags you are working with.
{{<warning title="You still need to set the flag">}} Adding flags to this list doesn't automatically change any settings. It only grants permission for the flag to be modified.
You still need to configure the flag separately after adding it to this list. {{</warning>}}
{{<note title="Using YugabyteDB Anywhere">}}
If you are using YugabyteDB Anywhere, as with other flags, set allowed_preview_flags_csv using the Edit Flags feature.
After adding a preview flag to the allowed_preview_flags_csv list, you still need to set the flag using Edit Flags as well.
{{</note>}}
YugabyteDB uses PostgreSQL server configuration parameters to apply server configuration settings to new server instances.
The methods for setting configurations are listed in order of precedence, from lowest to highest. That is, explicitly setting values for a configuration parameter using methods further down the following list have higher precedence than earlier methods.
For example, if you set a parameter explicitly using both the YSQL flag (ysql_<parameter>), and in the PostgreSQL server configuration flag (ysql_pg_conf_csv), the YSQL flag takes precedence.
Use the PostgreSQL server configuration flag ysql_pg_conf_csv.
For example, --ysql_pg_conf_csv=yb_bnl_batch_size=512.
If a flag is available with the same parameter name and the ysql_ prefix, then set the flag directly.
For example, --ysql_yb_bnl_batch_size=512.
Set the option per-database:
ALTER DATABASE database_name SET yb_bnl_batch_size=512;
Set the option per-role:
ALTER ROLE yugabyte SET yb_bnl_batch_size=512;
Set the option for a specific database and role:
ALTER ROLE yugabyte IN DATABASE yugabyte SET yb_bnl_batch_size=512;
Parameters set at the role or database level only take effect on new sessions.
Set the option for the current session:
SET yb_bnl_batch_size=512;
--- alternative way
SET SESSION yb_bnl_batch_size=512;
If SET is issued in a transaction that is aborted later, the effects of the SET command are reverted when the transaction is rolled back.
If the surrounding transaction commits, the effects will persist for the whole session.
Set the option for the current transaction:
SET LOCAL yb_bnl_batch_size=512;
Set the option within the scope of a function or procedure:
ALTER FUNCTION add_new SET yb_bnl_batch_size=512;
For information on available PostgreSQL server configuration parameters, refer to Server Configuration in the PostgreSQL documentation.
The server configuration parameters for YugabyteDB are the same as for PostgreSQL, with the following exceptions and additions.
YugabyteDB supports the following additional options for the log_line_prefix parameter:
For information on using log_line_prefix, refer to log_line_prefix in the PostgreSQL documentation.
When set, suppresses logging of non-PostgreSQL output to the PostgreSQL log file in the tserver/logs directory.
Default: off
Specifies the amount of disk space used for temporary files for each YSQL connection, such as sort and hash temporary files, or the storage file for a held cursor.
Any query whose disk space usage exceeds temp_file_limit will terminate with the error ERROR: temporary file size exceeds temp_file_limit. Note that temporary tables do not count against this limit.
You can remove the limit (set the size to unlimited) using temp_file_limit=-1.
Valid values are -1 (unlimited), integer (in kilobytes), nMB (in megabytes), and nGB (in gigabytes) (where 'n' is an integer).
Default: 1GB
{{<tags/feature/ea>}} Set the size of a tuple batch that's taken from the outer side of a batched nested loop (BNL) join. When set to 1, BNLs are effectively turned off and won't be considered as a query plan candidate.
Default: 1
Maximum size (in bytes) of total data returned in one response when the query layer fetches rows of a table from DocDB. Used to bound how many rows can be returned in one request. Set to 0 to have no size limit. To enable size based limit, yb_fetch_row_limit should be set to 0.
If both yb_fetch_row_limit and yb_fetch_size_limit are set then limit is taken as the lower bound of the two values.
See also the --ysql_yb_fetch_size_limit flag. If the flag is set, this parameter takes precedence.
Default: 0
Maximum number of rows returned in one response when the query layer fetches rows of a table from DocDB. Used to bound how many rows can be returned in one request. Set to 0 to have no row limit.
See also the --ysql_yb_fetch_row_limit flag. If the flag is set, this parameter takes precedence.
Default: 1024
Controls whether or not reading from followers is enabled. For more information, refer to Follower reads.
Default: false
Sets the maximum allowable staleness. Although the default is recommended, you can set the staleness to a shorter value. The tradeoff is the shorter the staleness, the more likely some reads may be redirected to the leader if the follower isn't sufficiently caught up. You shouldn't set yb_follower_read_staleness_ms to less than 2x the raft_heartbeat_interval_ms (which by default is 500 ms).
Default: 30000 (30 seconds)
Turn this setting ON/TRUE/1 to make all the transactions in the current session read-only. This is helpful when you want to run reports or set up Follower reads.
Default: false
Specifies the default isolation level of each new transaction. Every transaction has an isolation level of 'read uncommitted', 'read committed', 'repeatable read', or serializable.
For example:
SET default_transaction_isolation='repeatable read';
See transaction isolation levels for reference.
See also the --ysql_default_transaction_isolation flag.
Default: 'read committed'
Specifies the minimum age of a transaction (in seconds) before its locks are included in the results returned from querying the pg_locks view. Use this parameter to focus on older transactions that may be more relevant to performance tuning or deadlock resolution efforts.
Default: 1
Sets the maximum number of transactions for which lock information is displayed when you query the pg_locks view. Limits output to the most relevant transactions, which is particularly beneficial in environments with high levels of concurrency and transactional activity.
Default: 16
Sets the maximum number of rows per transaction per tablet to return in pg_locks. Set to 0 to return all results.
Default: 200
Sets the maximum batch size per transaction when using COPY FROM.
Default: 20000
The Admin UI for the YB-TServer is available at http://localhost:9000.
List of all dashboards to review ongoing operations.
List of all tables managed by this specific instance, sorted by namespace.
List of all tablets managed by this specific instance.
List of all utilities available to debug the performance of this specific instance.