怎样控制流表的总行数

不停地向流表中插入数据,通过订阅写入持续表,不希望流表的数据量太大。怎样控制?

下面配置,好像不能控制表的总行数

maxPubQueueDepthPerSite=1200

maxPersistenceQueueDepth=1300

比如控制表的总行数不超过1000行,减少单个流表占用内存,也不希望流表的永久化占用太大硬盘,怎样配置?


流表永久化数据很大,每次启动加载很长时间,不得不先清除:clearTablePersistence

startup.dos:

clearTablePersistence(`h_bb);

h_bbt = streamTable(2000:0,`sj`id`v,[TIMESTAMP,int,bool])

//share h_bbt  as h_bb

enableTableShareAndPersistence(table=h_bbt,tableName=`h_bb,preCache=10,cacheSize=60,retentionMinutes=60)


if(existsDatabase("dfs://xq")){

db=database("dfs://xq")

h_bbp = loadTable(db, `h_bbp )

subscribeTable(tableName="h_bb", actionName="h_bb", offset=-1, handler=append!{h_bbp}, msgAsTable=true ,batchSize=100,throttle=1,persistOffset=true)

}

else

{

db=database("dfs://xq", VALUE,  2022.01.01..2040.12.31)

h_bbt1 = table(2000:0,`sj`id`v,[TIMESTAMP,int,bool])

h_bbp = db.createPartitionedTable(h_bbt1, `h_bbp , `sj)

subscribeTable(tableName="h_bb", actionName="h_bb", offset=-1, handler=append!{h_bbp}, msgAsTable=true ,batchSize=100,throttle=1,persistOffset=true)

}


请先 登录 后评论

1 个回答

wale

您的需求,可通过设置enableTableShareAndPersistence(table, tableName, [asynWrite=true], [compress=true], [cacheSize=-1], [retentionMinutes=1440], [flushMode=0], [preCache]) 的三个参数cacheSize、retentionMinutes和preCache实现。


cacheSize 表示流数据表在内存中最多保留多少行。如果它为0或者没有指定,所有记录行都会保存在内存中。默认值为-1。如果 cacheSize 是小于100,000的正整数,它会被自动调整为100,000.

retentionMinutes 表示 log 文件的保留时间(从文件的最后修改时间开始计算),过期的会自动删除,单位是分钟。默认值是1440,即一天。

preCache 表示从磁盘加载到内存的记录条数。如果没有指定该参数,默认会把所有记录加载到内存中,这样启动时加载的时间可能很长,设置小一点的值,可减少启动加载时间。


请先 登录 后评论
  • 1 关注
  • 0 收藏,472 浏览
  • zhchtao323 提出于 2023-09-04 16:32

相似问题