更新时间:2024-11-29 GMT+08:00

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

操作场景

在业务表数量以及表数据量比较大的场景下,滚动重启过程中加载元数据比较耗时,可通过RocksDB将元数据预先缓存到内存,从而提高元数据的加载效率。

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

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

  1. 使用ClickHouse客户端连接到ClickHouse服务端,具体请参考从零开始使用ClickHouse
  2. 设置表元数据预先缓存能力。
    • 对历史表设置元数据缓存:

      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

true

表示当本地的RocksDB目录读取失败时,false表示用户可选择退出进程,true表示清空脏数据。

merge_tree_metadata_cache.lru_cache_size

1 GB

用于缓存part元数据的RocksDB实例中的LRU大小。