嵌入式技术论坛
直播中

chunhuahua

9年用户 1422经验值
擅长:接口/总线/驱动
私信 关注
[问答]

请问flashdb的KVDB查询性能如何?

我想用flashdb的KVDB来保存ID卡数据。 每条数据大约40字节,设计保存上限三万条。我试了一下用循环插入测试数据到kvdb中

for (count = 1; count < 30000; count++) {
    snprintf(key,128,"%010d", count);
    snprintf(val,128,"2023-08-11 14:39 %8d", count);
    fdb_kv_set(&kvdb, key, val);
    LOG_D("insert [%d]", count);
}

运行后发现巨慢,而且经常提示GC XXXX。 我等了三个小时循环都没有执行完。。。请问是我使用方法不对吗, 另外请问kvdb的查询性能如何,我要在三万条数据里查询一条K得多久。

谢谢

回帖(3)

siyugege

2023-5-17 10:11:12
TSDB 性能测试1 (nor flash W25Q64)

msh />tsl bench
Append 1250 TSL in 5 seconds, average: 250.00 tsl/S, 4.00 ms/per
Query total spent 2218 (ms) for 1251 TSL, min 1, max 2, average: 1.77 ms/per
插入平均:4 ms,查询平均:1.8 ms

你如果是KV模式可以不用falshdb TS模式速度较慢
举报

juju宇哥

2023-5-17 10:11:20
遇到同样的问题,使用flashdb 的tsdb。开辟了6M的flash分区作为存储。存储了了6w多条数据。逐条读取导出到sd卡里。发现查询速度超级慢,3个多小时都没导完。平均1s只能查询出2条左右。请问楼主换的什么方法存储数据了?
举报

chunhuahua

2023-5-17 10:11:28
tsdb如果是按时间查询的话,内部是以二分查找方式来,速度应该很快。
如果是迭代器遍历方式肯定会非常慢了。

如果一定要用遍历方式可以考虑将6m flash分为多个区域,比如256kb为一个区域。
在软件层面将它们链接在一起,比如创建一个索引分区,存储每个分区存储数据的最小索引值和最大索引值。
当查询数据时就可以根据索引表快速查找到数据所在分区,读写速度应该会快蛮多
总之就是想办法避免大范围遍历操作。

数据量如果很大的话考虑考虑sqllite
举报

更多回帖

发帖
×
20
完善资料,
赚取积分