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

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

阅读 1.9k
1 个回答

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()

返回结果如下:

image

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
101 新手上路
子站问答
访问
宣传栏