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

时间:2015-12-17 10:50:42

标签: memsql

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

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

我正在尝试加载TPCH的100GB数据但不能这样做。 LineItem表加载失败。它的数量是0.

以下是memsql ops状态表的图片。对于叶表存储器,它在90GB到108GB之间变化

enter image description here

enter image description here

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

因此,即使设置了更多的双倍内存(200GB),Memsql仍然无法加载100GB数据。这有什么不对?看起来我缺少一些明显的参数。请指导我进行正确的设置。

1 个答案:

答案 0 :(得分:1)

将数据存储在rowstore表中通常需要比原始数据大小更多的空间,因为索引占用了额外的空间,开销等。对于MemSQL和其他数据库也是如此。例如,要减少空间使用,请考虑删除模式中的某些索引。或者您可能还想检查您是否使用了正确的数据类型 - 例如使用bigint而不是int也会浪费空间。

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

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