【发布时间】:2016-08-10 09:51:36
【问题描述】:
所以目前我正在尝试评估 memsql 作为我们实时管道的数据库选项。 我有一个疑问,假设我们正在为我们的表使用行存储,突然发生了一系列事件,我们无法处理内存中的所有内容。 它会溢出到磁盘还是在这种情况下会显示什么行为。 谢谢
【问题讨论】:
标签: database singlestore
所以目前我正在尝试评估 memsql 作为我们实时管道的数据库选项。 我有一个疑问,假设我们正在为我们的表使用行存储,突然发生了一系列事件,我们无法处理内存中的所有内容。 它会溢出到磁盘还是在这种情况下会显示什么行为。 谢谢
【问题讨论】:
标签: database singlestore
您是询问消耗临时内存的查询,还是将填表的查询写入内存容量?
如果查询尝试消耗的内存超出可用内存,某些查询将返回错误。客户端应用程序可以稍后再试一次或安排查询以避免在数据库中发送过大的突发。
如果写入查询将行存储表填充到内存容量,它们将开始返回错误,您将不得不扩展内存容量或删除一些数据。 (或者,您可以考虑使用磁盘列存储表,具体取决于您的工作负载。)
【讨论】:
我认为问题是“memsql 是否将所有行存储数据存储在内存中”?
我也在做类似的评估,但我在 memsql 文档中找不到答案。
但根据我的个人经验,所有 ROWSTORE 表似乎都只存储在内存中。因此,如果您的某些叶节点因此而耗尽内存,那么您就不走运了。写信给 COLUMNSTORE(到时候你不妨使用 ParAccel、Vertica 或 Greenplum)。
我认为 memsql 足够智能,可以将一些行存储数据存储到磁盘。
【讨论】:
是的,所有行存储数据都必须适合内存。这就是为什么 MemSQL 的行存储比传统的磁盘行存储快得多的部分原因(有关更多详细信息,请参阅MemSQL skiplist index)。 maximum_table_memory 系统变量控制 MemSQL 在开始拒绝写入查询之前允许在表中使用多少内存(请参阅MemSQL memory management documentation。
【讨论】: