Skip to content
ClickHouse Docs

table_* MergeTree table settings

Autogenerated from ClickHouse system tables

These settings are available in system.merge_tree_settings and are autogenerated from the ClickHouse snapshot.

table_disk

This is table disk: the path/endpoint points to the table data, not the database data. Supported for object-storage disks whose metadata lives on the object storage itself (s3_plain, s3_plain_rewritable, web, web_index) and their cached variants. Encrypted variants are supported only over the writable s3_plain / s3_plain_rewritable disks, not over the read-only web / web_index disks.

table_readonly

If set to true, the table is in read-only mode.

All foreground operations that would modify the table are rejected: inserts, mutations, OPTIMIZE, and the data-mutating partition commands (ATTACH/MOVE/DROP/DROP DETACHED/FETCH/REPLACE PARTITION, as well as MOVE PARTITION ... TO TABLE targeting this table). Operations that do not modify the table’s data, such as FREEZE/UNFREEZE and FORGET PARTITION, remain allowed.

Background work that modifies table data is not scheduled: regular merges, TTL merges (DELETE/MOVE/recompression), recompression merges, background mutations, and background part moves are all suppressed. As a consequence, a table with a TTL no longer reclaims or moves its expired data while this setting is enabled. Cleanup is stopped, waiting for an active cleanup iteration to finish. The asynchronous loading of outdated (inactive) parts that a writable table performs after start is suspended if it is still pending: no further part is loaded, including the loads that were already queued but had not started, and the parts that remain unloaded are loaded once the setting is turned off again. The background workers are disabled before the ALTER that enables the setting commits it, so no cleanup or part load starts on a table that is already durably read-only. Other operations already in progress, including the loading of the parts that had already started, may finish.

The in-memory statistics cache still refreshes periodically. Set refresh_statistics_interval = 0 to disable this background task too. Streaming reads (SELECT ... STREAM) keep working: the background job that serves their subscriptions only reads parts and runs on read-only tables as well.

The setting can always be toggled back with ALTER TABLE ... MODIFY SETTING table_readonly = 0 (or RESET SETTING). The background workers that a read-only table never started are started at that point, so merges, mutations, moves, TTL, and cleanup resume without a server restart. Outdated (inactive) parts are loaded before cleanup can remove empty parts that cover them. The table stays read-only for concurrent queries for the whole duration of that ALTER: it accepts writes again only once the statement returned, not already when its metadata was committed. This setting is not supported for ReplicatedMergeTree.