最近n天数据的MemSQL

时间:2016-10-20 08:32:23

标签: memsql

我计划使用memsql存储我过去7天的数据,以便使用SQL进行实时分析。

我检查了文档,发现MemSQL中没有这样的TTL /过期功能

  • 是否有任何此类功能(如果我错过了它)?
  • 如果我每天删除> 7天的数据,那么memsql是否适合用例?我对碎片很好奇

我们在postgresql上尝试过,我们需要执行Vacuum命令,运行需要很长时间。

2 个答案:

答案 0 :(得分:0)

没有TTL /到期功能。您可以通过运行删除查询来完成此操作。许多客户用例正在做这种事情,所以是的,MemSQL确实适合用例。碎片一般不应该是一个太大的问题 - 你关注什么样的碎片?

答案 1 :(得分:0)

MemSQL没有现成的TTL功能。

我们通过在MemSQL Rowstore表中添加具有TIMESTAMP(6)数据类型的附加TS列来实现TTL。

当您向表中添加新行时,这将提供自动的当前时间戳插入。

查询该表中的数据时,您可以基于TIMESTAMP列应用简单的过滤器,以过滤超出TTL值的旧记录。

https://docs.memsql.com/sql-reference/v6.7/datatypes/#time-and-date

您始终可以执行一个批处理作业,该批处理作业可以每月运行一次,可以删除较旧的数据。

我们没有看到由于碎片造成的任何问题,但是如果您担心碎片,可以不时进行以下操作:

MemSQL的内存分配器会随着时间的推移而变得碎片化(尤其是如果通过随机删除数据来大幅缩减大表)。 当前没有可用于压缩它们的命令,但是先运行ALTER TABLE ADD INDEX,再运行ALTER TABLE DROP INDEX即可。

警告 谨慎处理此工作。计划将重建,并且两个ALTER查询将两次移动表中的所有移动,因此不应经常使用。

参考: https://docs.memsql.com/troubleshooting/latest/troubleshooting/