我使用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)
DolphinDB中的enableTableShareAndPersistence函数把流数据表共享,并把它持久化到硬盘上。
其中的retentionMinutes参数可以控制自动清除过期数据的时间,是一个整数,表示log文件的保留时间(从文件的最后修改时间开始计算),单位是分钟。默认值是1440,即一天。
上面提问中的代码没有设置retentionMinutes的值,就是默认的1440,即一天。在节点正常运行的情况下,会自动清除磁盘上24h前的数据。