跳到主要内容

SYSTEM$SET_CACHE_CAPACITY

在运行时设置指定缓存的最大容量。修改立即生效,但不会持久化 — 重启后缓存容量将恢复为配置文件中的设定值。

另请参阅:system.caches

语法​

CALL system$set_cache_capacity('<cache_name>', <new_capacity>)
参数说明
cache_name缓存名称(参见 system.caches 中的缓存列表)
new_capacity新的容量值。单位(个数或字节)取决于缓存类型。

注意事项​

  • 若新容量大于当前值,已有缓存条目不会丢失。
  • 若新容量小于当前值,可能触发 LRU 策略逐出部分缓存条目。
  • 修改不会持久化,重启后恢复为配置文件中的值。
  • 在统一磁盘缓存之前的版本中,disk_cache_column_data 不支持通过此命令调整。新控制方式见下文。

磁盘缓存控制

Introduced or updated: Unreleased

以下控制方式要求已启用统一磁盘缓存。两种内存后端均可使用。命令在 Warehouse 的 Query 节点上执行。运行时修改不会在重启后保留。

目标容量参数效果
disk_pool:meta、disk_pool:index、disk_pool:data字节数、'50%' 等整数百分比字符串或 'default'设置池上限。百分比以 cache.disk.max_bytes 为基数。'default' 恢复配置的启动份额。0 清空并禁用该池。
disk:memory_cache_bloom_index_filter 等支持磁盘缓存的类型0、正整数或 'default'0 禁用该类型的磁盘缓存。正整数或 'default' 启用该类型。正值不代表单独的类型字节上限。

所有池的上限总和不得超过 cache.disk.max_bytes。如需将一个池增大到可用预算之外,请先减小另一个池。其他池占用过多预算时,恢复 'default' 也可能失败。

命令目标应使用 disk_pool:data,而不是汇总行名称 __disk_pool:data。磁盘类型目标是在 memory_cache_* 类型名前加 disk:。例如,disk:memory_cache_column_data 控制原始列字节,对应统计行 disk_cache_column_data,不控制 memory_cache_table_data 中的解码列。

CALL system$set_cache_capacity('disk_pool:data', '50%');
CALL system$set_cache_capacity('disk_pool:data', 'default');
CALL system$set_cache_capacity('disk:memory_cache_bloom_index_filter', 0);
CALL system$set_cache_capacity('disk:memory_cache_bloom_index_filter', 'default');

前两条命令适用于默认的 10:20:70 池分配。磁盘类型开关不改变对应内存缓存。重新启用一个类型不会启用容量为零的池。禁用磁盘类型或池会移除其缓存条目。可通过 system.caches 监控池和类型行。

示例​

将布隆过滤器元数据缓存设置为 5000 个条目:

CALL system$set_cache_capacity('memory_cache_bloom_index_file_meta_data', 5000);

┌────────────────────────┬────────┐
│ node │ result │
├────────────────────────┼────────┤
│ Gwo2DYOLZ9zAdYbGTWY9y6 │ Ok │
└────────────────────────┴────────┘

关闭 partition pruning 缓存以便测试:

CALL system$set_cache_capacity('memory_cache_prune_partitions', 0);
欢迎体验 Databend Cloud

基于 Rust + 对象存储构建的新一代多模态数仓,一个平台即可进行 BI、向量、全文检索及地理空间分析。

支持标准 SQL,自动弹性伸缩,助您快速构建现代化数据平台。

注册即领 ¥200 代金券。

注册体验