Skip to main content
这些设置可在 system.merge_tree_settings 中查看,且由 ClickHouse 源代码自动生成。

table_disk

这是表级 磁盘:path/endpoint 指向表数据,而不是数据库数据。 支持元数据存储在对象存储本身的对象存储 磁盘 (s3_plain、s3_plain_rewritable、web、web_index) 及其缓存变体。加密 变体仅支持在可写的 s3_plain / s3_plain_rewritable 磁盘 上使用,不支持在 只读的 web / web_index 磁盘 上使用。 系统会默认该路径下已有的 parts 与此表声明的列和 sorting key 一致。 由于系统不会记录 part 写入时所用的 sorting key,因此如果有表基于相同的 parts 声明了不同的 sorting key,将返回错误结果或报错。

table_readonly

如果设为 true,表将进入只读模式。 所有会修改表的前台操作都会被拒绝:插入、变更、OPTIMIZE,以及会修改数据的分区命令 (ATTACH/MOVE/DROP/DROP DETACHED/FETCH/REPLACE PARTITION,以及以此表为目标的 MOVE PARTITION ... TO TABLE) 。不修改表数据的操作, 例如 FREEZE/UNFREEZE 和 FORGET PARTITION,仍可执行。 系统不会再调度修改表数据的后台任务:常规合并、TTL 合并 (DELETE/MOVE/重新压缩) 、重新压缩合并、后台变更, 以及后台数据部件移动都会停止。因此,启用此设置后,带有 TTL 的表不再清理或移动过期数据。 清理工作会停止,但会等待当前正在执行的清理任务完成。如果可写表启动后对过期 (非活动) 数据部件的异步加载仍未完成, 该过程也会暂停:不会再加载其他数据部件,包括已排队但尚未开始加载的数据部件; 关闭此设置后,尚未加载的数据部件会继续加载。启用此设置的 ALTER 操作提交设置之前,后台工作线程就会被禁用, 因此,表一旦持久化为只读状态,就不会再启动清理或数据部件加载。其他已经开始的操作, 包括已开始加载的数据部件,仍可完成。 内存中的统计信息缓存仍会定期刷新。设置 refresh_statistics_interval = 0 也可禁用这项后台任务。 流式读取 (SELECT ... STREAM) 仍可正常工作:处理其订阅的后台任务只读取数据部件,因此也能在只读表上运行。 随时可以使用 ALTER TABLE ... MODIFY SETTING table_readonly = 0 (或 RESET SETTING) 关闭此设置。此时,只读期间未启动的后台工作线程 会启动,因此合并、变更、移动、TTL 处理和清理无需重启服务器即可恢复。 系统会先加载过期 (非活动) 数据部件,然后才允许清理过程移除覆盖这些数据部件的空数据部件。在整个 ALTER 操作执行期间, 并发查询仍会将此表视为只读:只有该语句返回后,表才会再次接受写入,而不是在元数据提交时就接受写入。 ReplicatedMergeTree 不支持此设置。