应该预留多少内存来存储100GB的数据

How much memory should be reserved to store 100GB data

我有 5 个叶节点,每个节点都有设置

maximum_memory = 51200m
maximum_table_memory = 40960m
So total leaf table memory = 200GB
and total  Memsql Memmory = 250 GB

我正在尝试加载 TPCH 的 100GB 数据,但无法加载。 LineItem Table 加载失败。它的计数是 0。

下面是 memsql ops 状态 table 的图片。叶子 Table 内存

在 90GB 和 108GB 之间变化

当我尝试再次加载大小为 74GB 的 LINEItem table 时,状态选项卡显示 memsql 正在消耗所有可用内存

因此,即使设置了双倍的内存量 (200GB),Memsql 仍然无法加载 100GB 的数据。这里有什么问题?看起来我缺少一些明显的 parameters.Please 指导我进行正确的设置。

在行存储中存储数据 table 通常需要比原始数据大小更多 space,因为索引、开销等会消耗额外的 space。MemSQL 就是这样和其他数据库。例如,要减少 space 的使用,请考虑删除架构中的一些索引。或者您可能还想检查您是否使用了正确的数据类型 - 例如使用 bigint 而不是 int 也会浪费 space。

您可以根据 space MemSQL 实际为您的数据使用了多少来估计需要多少 space - 从您在上面发布的信息来看,MemSQL 似乎使用了大约 200GB 来存储74GB 原始数据,因此 100GB 原始数据乘以 ~270GB。

有关 MemSQL 使用内存的更多详细信息,您可以通过 Cluster 页面在 Ops 中查看单个 MemSQL 叶节点并查看内存使用信息。