更新时间:2025-07-14 GMT+08:00

配置ClickHouse元数据预先缓存到内存

操作场景

RocksDB是一个高性能的嵌入式键值存储系统,广泛应用于需要快速读写访问的场景。在ClickHouse中,RocksDB可以用于缓存元数据,从而显著加快元数据的加载速度。

当ClickHouse业务表数量和表数据量较大时,滚动重启过程中加载元数据可能会比较耗时。为了提高元数据的加载效率,可以使用RocksDB将元数据预先缓存到内存中,从而减少启动时间和提高查询性能。

约束与限制

本章节仅适用于MRS 3.3.1-LTS及之后版本。

开启表元数据预先缓存能力

用户可以设置参数use_metadata_cache值为1或者为true,通过RocksDB将元数据预先缓存到内存。

  1. 安装ClickHouse客户端。

    详细操作请参考安装MRS客户端

  2. 使用ClickHouse客户端连接到ClickHouse服务端,具体请参考ClickHouse客户端使用实践
  3. 设置表元数据预先缓存能力。

    • 对历史表设置元数据缓存:
      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目录读取失败时,用户可选择退出进程,或者清空脏数据。

  • false:退出进程。
  • true:清空脏数据。

true

merge_tree_metadata_cache.lru_cache_size

用于缓存part元数据的RocksDB实例中的LRU大小,0表示不限制。

1GB