即使在VoltDB中进行分区后也无法上传数据

时间:2017-10-31 12:59:18

标签: sql database voltdb

我们正在尝试在2台主机服务器上上传80 GB的数据,每台服务器配备48 GB RAM(总共96 GB)。我们也有分区表。但即使在分区之后,我们也只能上传10 GB的数据。在VMC界面中,我们检查了大小工作表。表中的行数为40,00,00,000,表最大大小为1053,200,000k,最小大小为98,000,000K。那么,即使在分区后上传80GB又有什么问题?这个表大小是什么?

1 个答案:

答案 0 :(得分:1)

大小工作表根据表的架构提供内存中的最小和最大大小,即行数。如果你有VARCHAR或VARBINARY列,那么min和max之间的差异可能非常大,你的实际内存使用通常介于两者之间,但很难预测,因为它取决于你加载的字符串的实际大小

但我认为问题是根据工作表的最小大小是98GB,这意味着如果任何可空字符串为null,或者任何非空字符串都是空字符串。即使没有考虑堆大小和任何开销,这也高于96GB容量。

你的kfactor设置是什么?如果为0,则每条记录只有一个副本。如果它是1,则每条记录将有两个副本,因此在该配置中最小需要196GB。

RAM中每条记录的大小取决于所选的数据类型以及是否有任何索引。此外,长度超过15个字符或63个字节的VARCHAR值存储在池化内存中,这比固定宽度存储带来更多开销,但如果值小于最大大小,则可以减少浪费的空间。

如果您需要一些关于如何最小化内存中每个记录大小的建议,请分享您的表和任何索引的定义,我可能会建议可以减小大小的调整。

您可以向群集添加更多节点,或使用具有更多RAM的服务器来增加容量。

免责声明:我为VoltDB工作。