更新时间:2025-07-14 GMT+08:00
配置ClickHouse元数据预先缓存到内存
操作场景
RocksDB是一个高性能的嵌入式键值存储系统,广泛应用于需要快速读写访问的场景。在ClickHouse中,RocksDB可以用于缓存元数据,从而显著加快元数据的加载速度。
当ClickHouse业务表数量和表数据量较大时,滚动重启过程中加载元数据可能会比较耗时。为了提高元数据的加载效率,可以使用RocksDB将元数据预先缓存到内存中,从而减少启动时间和提高查询性能。
约束与限制
本章节仅适用于MRS 3.3.1-LTS及之后版本。
开启表元数据预先缓存能力
用户可以设置参数use_metadata_cache值为1或者为true,通过RocksDB将元数据预先缓存到内存。
- 安装ClickHouse客户端。
详细操作请参考安装MRS客户端。
- 使用ClickHouse客户端连接到ClickHouse服务端,具体请参考ClickHouse客户端使用实践。
- 设置表元数据预先缓存能力。
- 对历史表设置元数据缓存:
ALTER TABLE <table name> MODIFY SETTING use_metadata_cache=1;
或者
ALTER TABLE <table name> MODIFY SETTING use_metadata_cache=true;
- 创建表时设置元数据缓存:
CREATE TABLE <table name> ( `x` UInt32, `y` UInt32, `z` UInt32, `t` UInt32 ) ENGINE = MergeTree PARTITION BY x % 10 ORDER BY (x, y) SETTINGS index_granularity = 8192, use_metadata_cache = 1
或者
CREATE TABLE <table name> ( `x` UInt32, `y` UInt32, `z` UInt32, `t` UInt32 ) ENGINE = MergeTree PARTITION BY x % 10 ORDER BY (x, y) SETTINGS index_granularity = 8192, use_metadata_cache = true
- 对历史表设置元数据缓存:
参数调优
优化元数据预先缓存的能力:
登录FusionInsight Manager界面,选择“集群 > 服务 > ClickHouse > 配置 > 全部配置”,修改以下参数。
参数 |
参数说明 |
取值示例 |
---|---|---|
merge_tree_metadata_cache.continue_if_corrupted |
表示当本地的RocksDB目录读取失败时,用户可选择退出进程,或者清空脏数据。
|
true |
merge_tree_metadata_cache.lru_cache_size |
用于缓存part元数据的RocksDB实例中的LRU大小,0表示不限制。 |
1GB |
父主题: ClickHouse企业级能力增强