YugaByte数据库中的内存是如何管理的



YugaByte数据库中的内存是如何管理的?我理解存在两组过程CCD_ 1&yb-master,但找不到太多其他详细信息。

具体问题:

  1. 这些进程默认使用多少RAM?

  2. 有没有办法明确控制这一点?

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

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

提前感谢。

  1. 这些进程默认使用多少RAM

默认情况下:

  • yb服务器进程假定85%的节点RAM可供使用。以及
  • yb主进程假定10%的节点RAM可供其使用

这些由gflag的默认设置确定--default_memory_limit_to_ram_ratio(分别为0.85和0.1yb服务器/yb主机)。

  1. 是否有明确控制的方法

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

选项A)您可以将--default_memory_limit_to_ram_ratio设置为控制进程应该使用的节点RAM的百分比。

选项B)您也可以使用指定一个绝对值--memory_limit_hard_bytes。例如,为yb tserver提供32GB的RAM,使用:

--memory_limit_hard_bytes 34359738368

由于您独立启动这两个进程,因此可以使用yb-master或yb-tserver的任一选项。只需确保您不会超额订阅机器内存总量,因为yb主机和yb服务器进程可以存在于单个VM上。

  1. 据推测,内存用于缓存、内存表等这些组件的大小

是的,内存的主要消耗者是块缓存、内存存储&飞行中的请求/RPC所需的内存。

块缓存:--db_block_cache_size_percentage=50 (default)

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

  1. 特定的表是否可以固定在内存中(或者说给定更高的值缓存中的优先级)

我们目前(截至1.1)还没有每个表的钉扎提示。然而,默认情况下,块缓存已经做得很好了将热块保持在缓存中。我们已将RocksDB的块缓存增强为具有抗扫描性。其动机是阻止诸如长时间扫描(例如,由于偶尔的大型查询或background Spark作业),而不会污染整个缓存高质量数据和擦除有用/热门数据。

相关内容

  • 没有找到相关文章

最新更新