我计划使用memsql存储我过去7天的数据,以便使用SQL进行实时分析。
我检查了文档,发现MemSQL中没有这样的TTL /过期功能
我们在postgresql上尝试过,我们需要执行Vacuum命令,运行需要很长时间。
答案 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/