如何通过元数据高效得查询dolphindb中某个表的记录总数?

现在的场景是这样的,我有一个涉及分区数很多、记录数很多的分布式表,通过对表做count查询有以下两个问题:1.涉及的分区数太多,超过了config查询的最大分区量;2.耗时问题。
所有,我看到getTabletsMeta()函数查询元数据返回的结果中有rowNum的信息,所以请问是不是可以通过这个函数快速获取某个表的记录数?

请先 登录 后评论

1 个回答

chenweijian

dolphindb提供了getTabletsMeta函数查询当前节点上指定数据表chunk的元数据信息。若结合pnodeRun函数使用,可返回所有节点上指定数据表的元数据信息。
上述的场景确实可以通过该函数快速查询每个表的记录数:

def getCountFromMeta(){
     return select sum(rowNum) as rowNum from getTabletsMeta(top=-1) group by tableName
}
def getCount(){
    return  select sum(rowNum) as rowNum from pnodeRun(getCountFromMeta) group by tableName        
}

getCount()

返回结果如下:

attachments-2021-06-eZm5kCvH60c084b729246.png

需要提醒的是,这里返回的信息是整个集群中所有叫trades表的记录数,所以还需要除以集群配置时设置的副本数才是真正的记录数。

请先 登录 后评论