将流表持久化到磁盘后,怎么定时自动清除过期的数据释放磁盘空间

JasonT
  • 1.5k

我使用DolphinDB中的enableTableShareAndPersistence函数将流数据持久化到磁盘后,怎么定时自动清除过期的数据释放磁盘空间?比如我想设置只保留一天的数据,过了24小时后,自动清除24小时前的数据。

我创建的代码如下:

login("admin", "123456")
colName = ["time", "x"]
colType = ["timestamp", "int"]
t = streamTable(100:0, colName, colType);
enableTableShareAndPersistence(table=t, tableName=`st, cacheSize=1200000)
go;

for(s in 0:200){
    n = 10000
    time = 2019.01.01T00:00:00.000 + s*n+1..n
    x = rand(10.0, n)
    insert into st values(time, x)
}

getPersistenceMeta(st);

share streamTable(10000:0, `time`x, [TIMESTAMP, INT]) as subTable1
topic1 = subscribeTable(, "st", "actionName1", 102, subTable1, true)
回复
阅读 577
1 个回答
✓ 已被采纳

DolphinDB中的enableTableShareAndPersistence函数把流数据表共享,并把它持久化到硬盘上。

enableTableShareAndPersistence(table, tableName, [asynWrite=true], [compress=true], [cacheSize=-1], [retentionMinutes=1440], [flushMode=0], [preCache])

其中的retentionMinutes参数可以控制自动清除过期数据的时间,是一个整数,表示log文件的保留时间(从文件的最后修改时间开始计算),单位是分钟。默认值是1440,即一天。
上面提问中的代码没有设置retentionMinutes的值,就是默认的1440,即一天。在节点正常运行的情况下,会自动清除磁盘上24h前的数据。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进