【技术实现步骤摘要】
本专利技术涉及数据库管理,具体地说是一种时序存储引擎内存数据块管理方法。
技术介绍
1、时序数据是随时间不断产生的一系列数据,简单来说,就是带时间戳的数据。时序数据库(time series database,tsdb)是优化用于摄取、处理和存储时间戳数据的数据库,专门用于存储和处理时间序列数据。时序数据的主要特点是写多读少,要求支持秒级和毫秒级甚至纳秒级的高频写入,查询通常是多维聚合查询,对查询的延迟要求比较高。
2、内存中数据的数据量是影响存储引擎性能的重要因素。art树在所有的索引结构中,查询性能最优。但是,索引结构普遍存在一个问题,随着索引的数据量增大,查询性能会降低。当数据量从64k提升到16m时,art树的查询性能降低了至少4倍,这种现象严重影响到了存储引擎的性能。同时,由于内存存储的数据量有限,有效的数据优化方法能够在相同大小的内存中存储更多的数据。
3、目前数据块管理的实现机制为使用std::vector来维护,导致每次插入和删除都会有内存的复制,而且使用和锁定table数据和查询时,需要将被使用
...【技术保护点】
1.一种时序存储引擎内存数据块管理方法,其特征在于,使用表模块维护自身的数据块列表,每个表模块内部管理多个内存块,当内存块写满时,放入写缓存管理模块,在内存不足时,从队列中清理掉部分数据块。
2.根据权利要求1所述的一种时序存储引擎内存数据块管理方法,其特征在于,所述时序数据库存储引擎对外提供存储数据的最小单元ObjectTable,一个ObejctTable在内存中有多个block用于存储一个时间段内的时序数据;设置ObjectManager,管理ObejctTable下的所有数据块block,使用std::deque管理;
3.根据权利要求
...【技术特征摘要】
1.一种时序存储引擎内存数据块管理方法,其特征在于,使用表模块维护自身的数据块列表,每个表模块内部管理多个内存块,当内存块写满时,放入写缓存管理模块,在内存不足时,从队列中清理掉部分数据块。
2.根据权利要求1所述的一种时序存储引擎内存数据块管理方法,其特征在于,所述时序数据库存储引擎对外提供存储数据的最小单元objecttable,一个obejcttable在内存中有多个block用于存储一个时间段内的时序数据;设置objectmanager,管理obejcttable下的所有数据块block,使用std::deque管理;
3.根据权利要求2所述的一种时序存储引擎内存数据块管理方法,其特征在于,所述从写缓存中删除旧的block,具体方法是:
4.根据权利要求2所述的一种时序存储引擎内存数据块管理方法,其特征在于,当有查询逻辑时,首先锁住当前的objecttable,然后找到满足条件的数据块,创建snapshot对象,维护数据块不被删除,并将snapshot插入到map中,查询时通过snapshot对象来访问数据块block,被snapshot对象维护的block不能被删除,当查询完毕,将该snapshot从map中删除。
5.根据权利要求2或4所述的一种时序存储引擎内存数据块管理方法,其特征在于,当写缓存中的内存不足时,删除部分数据块,删除的数据块是objectmanager管理队列中有效数据块的第一个,判断所有snaps...
【专利技术属性】
技术研发人员:张华海,梁波,张炜刚,
申请(专利权)人:上海沄熹科技有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。