配置ClickHouse元数据预先缓存到内存
操作场景
在业务表数量以及表数据量比较大的场景下,滚动重启过程中加载元数据比较耗时,可通过RocksDB将元数据预先缓存到内存,从而提高元数据的加载效率。
开启表元数据预先缓存能力
用户可以设置参数use_metadata_cache值为1或者为true,通过RocksDB将元数据预先缓存到内存。
- 使用ClickHouse客户端连接到ClickHouse服务端,具体请参考从零开始使用ClickHouse。
- 设置表元数据预先缓存能力。
- 对历史表设置元数据缓存:
ALTER TABLE <table name> MODIFY SETTING use_metadata_cache=1;
或者
ALTER TABLE <table name> MODIFY SETTING use_metadata_cache=true;
- 创建表时设置元数据缓存:
(
`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 |
true |
表示当本地的RocksDB目录读取失败时,false表示用户可选择退出进程,true表示清空脏数据。 |
merge_tree_metadata_cache.lru_cache_size |
1 GB |
用于缓存part元数据的RocksDB实例中的LRU大小。 |