gpt4 book ai didi

database - YugaByte DB 是如何管理内存的?

转载 作者:搜寻专家 更新时间:2023-10-30 23:27:35 26 4
gpt4 key购买 nike

YugaByte DB 是如何管理内存的?我知道有两组进程 yb-tserver & yb-master,但找不到太多其他细节。

具体问题:

  1. 默认情况下,每个进程使用多少 RAM?

  2. 有没有办法明确控制它?

  3. 据推测,内存用于缓存、内存表等。这些组件的大小如何?

  4. 能否将特定表固定在内存中(或者说在缓存中给予更高的优先级)?

提前致谢。

最佳答案

  1. 默认情况下,每个进程使用多少 RAM?

默认:

  • yb-tserver 进程假定 85% 的节点 RAM 可供其使用。和
  • yb-master 进程假定 10% 的节点 RAM 可供其使用。

这些由 gflag 的默认设置决定--default_memory_limit_to_ram_ratio(分别为 0.85 和 0.1yb-tserver/yb-master).

  1. 有没有办法明确控制它?

是的,有 2 个不同的选项来控制分配给进程 yb-master 和 yb-tserver 的内存量:

选项A)你可以设置--default_memory_limit_to_ram_ratio来控制进程应该使用多少百分比的节点 RAM。

选项 B) 您也可以使用指定绝对值--memory_limit_hard_bytes。例如,给 yb-tserver 32GB 的内存,使用:

--memory_limit_hard_bytes 34359738368

由于您独立启动这两个进程,因此您可以对 yb-master 或 yb-tserver 使用任一选项。只需确保您没有过度订阅总机器内存,因为 yb-master 和 yb-tserver 进程可以存在于单个 VM 上。

  1. 据推测,内存用于缓存、内存表等。如何这些组件的尺寸?

是的,内存的主要消费者是 block 缓存、memstores &运行中的请求/RPC 所需的内存。

block 缓存:--db_block_cache_size_percentage=50(默认)

总 memstore 是这两个旋钮中的最小值:--global_memstore_size_mb_max=2048--global_memstore_size_percentage=10

  1. 能否将特定表格固定在内存中(或者说给出更高的缓存中的优先级)?

我们目前(从 1.1 开始)还没有每个表的固定提示。但是, block 缓存在默认情况下确实做得很好将热 block 保存在缓存中。我们增强了 RocksDB 的 block 缓存以抗扫描。动机是为了防止操作,例如长时间运行的扫描(例如,由于偶尔的大型查询或背景 Spark 作业)从污染整个缓存与差质量数据并清除有用/热数据。

关于database - YugaByte DB 是如何管理内存的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54560640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com