openGemini v1.2.0版本正式发布,IoT 场景性能大幅提升!

news2025/1/23 9:12:38

在openGemini v1.2.0版本中,我们为您带来了一系列令人振奋的内核优化,将您的体验提升到新的高度,这包括

  • 针对IoT场景的性能优化,查询效率有极大的提升。
  • 针对数据存储的优化,进一步节约磁盘空间,降低数据存储成本。
  • 针对部分功能的优化,比如show tag keys, stream等,使得功能更加丰富。
  • 新增了一部分内核的监控指标,进一步清楚了解内核的运行状态、行为和性能,帮助分析、定位和优化数据库性能。

此外,我们还进行了一系列的读写流程上的改进和修复,以提供更稳定和可靠的体验。

内核优化

  1. IoT典型场景性能优化

    本次版本针对IoT场景的写入和典型查询场景进行了优化,通过TSBS工具的测试结果可以看出,openGemini全面超越InfluxDB,最高提升了50倍。相比其他时序数据库,openGemini也是具有领先优势。

    具体性能数据参考:

    性能测试 | openGemini

  2. schema数据压缩

    type Record struct {
    	*RecMeta
    	ColVals []ColVal
    	Schema  Schemas
    }
    
    type Schemas []Field
    
    type Field struct {
    	Type int
    	Name string
    }
    

    openGemini将行数据协议转化为Record结构进行存储,Schema保存每一列FIELD的数据类型和名称,并会随着数据一起保存在磁盘上,当表的FIELD数量很多,比如1000列或者更多时,加之时间线数量很大的情况下,这里的Schema数据会变得很大,在tssp文件中的占比可能超过80%。

    可以通过配置文件开启schema数据压缩(默认关闭),但需要注意的是,该功能会对查询性能有一定的影响,因为查询过程中要对schema进行数据解压

      [data]
      ## Compressing ChunkMeta in TSSP Files. 0: not compressed(default); 1: use snappy
      # chunk-meta-compress-mode = 0
    

    优化效果:500万时间线 1000+列模型下,开启压缩功能后(Snappy算法),写性能提升 2.5+倍,平均刷盘时延减少68%,level 0 文件大小减少 70%

    最佳实践:针对列比较多的情况,尽可能用短字符串给FIELD命名。再考虑开启schema数据压缩。

    该优化优先级高于 "tssp 临时文件磁盘占用优化",开启该优化后,临时文件的优化将自动失效

  3. 优化仅一行数据情况下的数据编码

    在一些业务中,时间线很多,但是每次写入时,同一时间线仅一条数据,这使得在 level 0 的文件中,一条时间线仅一条数据,本身没有办法进行压缩,还需要存储很多额外的信息,占用了大量的磁盘空间。 本次优化是专门针对上述场景,减少level 0文件大小,达到提升compaction、Merge和部分查询的性能的目的。

    优化效果:250万时间线,优化前文件大小 987MB, 优化后 733MB,存储空间减少 25%。

  4. 优化全空值或没有空值列的存储

    在openGemini中,数据的压缩存储是以segment为粒度(1000行),可能存在 segment为全空值(ColVal.Len == ColVal.NilCount)或没有空值(ColVal.NilCount == 0),此时可以不存储bitmap相关数据,减少磁盘占用。

    优化效果:3万时间线,2400万行数据,没有空值的情况下,优化后存储空间减少20%

  5. tssp 临时文件磁盘占用优化

    数据写入openGemini后,在数据刷盘过程中,文件元数据会先保存到一个临时文件,在所有数据刷盘完成后,将临时文件追加到数据文件中,然后删除该临时文件,当写入数据量非常大时,临时文件数据也会频繁刷盘,占一部分磁盘I/O,本次优化是对临时文件进行一个压缩处理,减少磁盘I/O。该优化对刷盘,compaction,merge 等操作有效。

    可通过修改配置项 data.temporary-index-compress-mode 来开启,该优化方法是用CPU开销(解压)换取磁盘I/O,在选择压缩算法时需要考虑实际情况。

  6. SHOW TAG KEYS支持条件过滤

    用法如下:

    > select * from cpu
    name: cpu
    time                cpu  host        mem
    ----                ---  ----        ---
    1710209706991211420 0.8  192.168.0.1 0.3
    1710209718880801483 0.65 192.168.0.2 0.42
    1710209735839331535 0.77 192.168.0.3 0.46
    
    > show tag keys from cpu where host="192.168.0.1"
    name: cpu
    tagKey
    ------
    host
    
  7. 流式聚合(stream)用法和性能优化

    在用法上,之前使用该功能时,必须是tags & time 一起分组,当前版本支持仅按time分组。例如

    # 之前版本用法
    > CREATE STREAM ... ON SELECT ... FROM ... GROUP BY time(1m),"cpu","host" delay 20s
    # 现在可以仅使用time分组
    > CREATE STREAM ... ON SELECT ... FROM ... GROUP BY time(1m) delay 20s

    在性能上,聚合效率较之前版本有数倍提升。

  8. 新增监控项

    IOReadMetaCounts、IOReadMetaSize、IOReadDataCounts、IOReadDataSize,分别表示从数据文件中读取元数据的次数和大小读取数据的次数和大小

    有了这些基本数据,通过简单的处理就可以知道在某段时间内查询的数据量大小,以此作为性能优化或根因分析的依据。比如在定位查询问题时,如果查询时延比较大,此时可以观察该指标,了解openGemini存储引擎从文件读取数据的情况,以此判断是否由于计算数据量太多导致,从而优化查询语句。

  9. 新增监控项

    IOFrontIndexReadOkCount,IOFrontIndexReadOkBytes,IOFrontIndexReadDuration ,在openGemini中,磁盘I/O包括业务数据读写I/O, 索引读写I/O,Compaction读写I/O,乱序合并读写I/O等,这里新增的3个监控项均为索引读写I/O的指标,分别是索引数据读取次数/字节数/时延。

    当性能瓶颈发生在磁盘I/O时,通过调取相应细分I/O数据,确定何种类型的I/O流量占比较大,可以进行针对性优化。

  10. 新增监控项

    以下为本次优化新增的关于ts-store上查询请求执行相关的监控项,用于洞察ts-store上的查询执行情况

    # ts-store处理的查询请求数
    storeQueryReq 
    # ts-store的查询时延
    storeQueryReqDurationNs  
    # 当前ts-store上正在执行的查询请求数
    storeQueryReqActive 
    # ts-store上反序列化查询请求的时延
    UnmarshalQueryTimeTotal  
    # ts-store上查询请求获取shard资源的时延。
    # 这里有流控,ts-store执行查询请求的并发数是一定的,如果查询并发比较大,就会出现排队情况,这里的时延就会比较大。
    GetShardResourceTimeTotal  
    # 以下两项分别是ts-store上TAG构建扫描索引计划的时延和扫描数据的时延
    IndexScanDagBuildTimeTotal
    IndexScanDagRunTimeTotal
    # ts-store上查询请求查找索引的时延
    IndexScanRunTimeTotal
    # ts-store上查询请求涉及的shard个数
    QueryShardNumTotal 
    # ts-store上查询请求扫描的时间线数量
    IndexScanSeriesNumTotal
    # 以下两项是查询请求读取数据的监控项
    ChunkReaderDagBuildTimeTotal
    ChunkReaderDagRunTimeTotal
  11. 调整配置项read-page-size,默认32KB,最大可配64KB,对提升查询性能有帮助,但会增大磁盘I/O带宽,二者需要平衡。

    [data]
    # read-page-size set pageSize of read from file of datablock, default is "32kb", valid setting is "1kb"/"4kb"/"8kb"/"16kb"/"32kb"/"64kb"/"variable"
    # read-page-size = "32kb"

Bug修复

  1. 修复了一些异常场景下节点Panic的问题
  2. 修复了批量删除表时,ts-store出现删除表失败的问题
  3. 修复了一些内核中锁的问题
  4. 修复了
  5. 一些内核处理空值的问题
  6. 修复了一些内存泄露的问题

安全

  1. 修复漏洞:CVE-2022-41723,通过升级golang.org/x/net的版本到v0.7.0
  2. 修复漏洞:CVE-2023-39325,通过升级golang.org/x/net的版本到v0.17.0
  3. 修复漏洞:CVE-2023-47248,通过升级pyarrow的版本到v14.0.1

结束

openGemini 是一款开源时序数据库,它的 v1.2.0版本已经正式发布,在这个版本中,内核得到优化,新增几项监控项,修复了若干Bug和漏洞,无论是性能还是使用体验都得到了有效提升。欢迎大家试用openGemini,提出您宝贵的优化意见。

如何参与社区贡献,参考:

  1. 快速开始 | openGemini

  2. 如何参与文档贡献 | openGemini


openGemini官网:http://www.openGemini.org

Star for me😊:openGemini · GitHub

openGemini公众号:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1673495.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL基础指南:从入门到精通

MySQL基础指南:从入门到精通 MySQL是一个流行的开源关系型数据库管理系统,被广泛用于Web应用程序和服务器端开发。本文将从MySQL的基本概念开始,逐步介绍MySQL的安装、常用操作、数据类型、查询语句等内容,帮助你快速入门MySQL数…

雇佣 K 位工人的总代价

题目链接 雇佣 K 位工人的总代价 题目描述 注意点 costs[i]是雇佣第 i 位工人的代价每一轮雇佣后,剩余工人的下标可能会发生变化一位工人只能被选择一次如果剩余员工数目不足 candidates 人,那么下一轮雇佣他们中代价最小的一人如果有多位代价相同且最…

排序-堆排序(Heap Sort)

堆排序(Heap Sort)是一种基于比较的排序算法,它利用了完全二叉树的特性,将待排序的序列构造成一个大顶堆(每个父节点的值都大于或等于其子节点的值)或小顶堆(每个父节点的值都小于或等于其子节点…

哪个品牌led灯好?五大好用护眼台灯推荐

哪个品牌led灯好?目前LED护眼台灯当中做得比较好的有明基、松下、书客等品牌。在如今LED灯市场的海洋中,选择一款可靠的护眼台灯变得愈发重要。然而,众多品牌和产品的涌现也让消费者面临着选择困难。为了帮助大家找到最合适的LED台灯&#xf…

【亿事君】1688专业级知识库-阿里巴巴诚信通运营必修课程

01 课程介绍 课程来自亿事君老师的1688专业级知识库/白皮书/全攻略/阿里巴巴诚信通运营必修课程,价值1588元。这是一门系统的学习运营课程,干货满满,诚意十足。主要内容包括:基础、权重、活动玩法、付费流量玩法等,运…

中国196个城市边界

中国196个城市的城市边界形状文件是通过对Li等人(2018)的输出进行处理和过滤生成的。根据全球人工不可渗透区域 (GAIA) 数据绘制全球城市边界。 城市建成区边界是城市研究中的一个重要指标,在很多城市研究中都会涉及到…

一键同步用户信息和组织架构,简化用户管理,可道云teamOS插件化集成LDAP/AD的实战应用

随着企业规模的扩大和全球化布局的加深,管理分散在全球各地的员工和用户信息成为了企业IT部门的一大挑战,传统的手动添加用户和管理权限的方式已经无法满足需求。 有没有能自动同步用户信息和组织架构的企业网盘呢? teamOS插件化集成LDAP/AD…

CorelDRAW2024新特性全解析!

CorelDRAW2024是一款备受赞誉的图形设计软件,它以其强大的功能和用户友好性赢得了全球数百万设计师的青睐。该软件提供了丰富的绘图、排版、图像处理、矢量编辑以及网页设计工具,无论是初学者还是专业设计师,都能在这款软件中找到满足自己需求…

升级版ComfyUI InstantID 换脸:FaceDetailer + InstantID + IP-Adapter

在使用ComfyUI的InstantID进行人脸替换时,一个常见问题是该工具倾向于保留原始参考图的构图,即使用户的提示词与之不符。 例如,即使用户提供的是大头照并请求生成全身照,结果仍是大头照,没有显示出用户所期望的构图。…

JavaScript不仅有变量声明,还有变量提升

起因:👇 一道面试题 最近,一位朋友参加面试时,遇到了这样一道笔试题,引起了我的兴趣: var foo 1; function fn() {foo 3;return;function foo() {// ...} } fn(); console.log(foo);这个例子中包含了变…

HQChart使用教程98-右键菜单2.0使用介绍

HQChart使用教程98-右键菜单2.0使用介绍 内置右键菜单启用右键菜单定制右键菜单内容1. 注册内置右键菜单创建回调事件2. 修改内置菜单的显示内容回调函数格式菜单数据结构示例 3. 注册菜单项点击事件回调 右键事件完整示例HQChart代码地址 内置右键菜单 HQChart h5版本内置提供…

Python-VBA函数之旅-tuple函数

目录 一、tuple函数的常见应用场景 二、tuple函数使用注意事项 三、如何用好tuple函数? 1、tuple函数: 1-1、Python: 1-2、VBA: 2、推荐阅读: 个人主页: https://myelsa1024.blog.csdn.net/ 一、tu…

U盘打不开提示格式化怎么办?(含数据恢复及U盘修复教程)

引言: 随着数字化时代的发展,U盘已成为我们日常生活和工作中不可或缺的数据存储工具。然而,有时我们可能会遇到U盘突然无法打开,并提示需要格式化的问题。这不仅会打乱我们的工作节奏,还可能会导致重要数据丢失。本文…

环保访谈|聚英环保:以创新科技引领工业环保

近期,中联环保圈希姐对浙江聚英环保科技有限公司负责人王江进行了专访,就公司的发展、核心产品以及合作客户等方面进行了深入交流。 浙江聚英环保科技有限公司成立于2012年,总占地面积超过3万平方米,拥有标准化的生产车间和先进的…

KNIME 报告扩展

文档对应的 KNIME AP 版本为 5.2 介绍 本指南介绍了 KNIME 报告扩展,并展示了如何创建简单和高级报告。 本指南更新于 2024/05/13,最新版请访问指北君网站 https://havef.fun/knime-cn/knime-doc/ KNIME 报告扩展允许您根据工作流程的结果创建静态报告。…

win10安装mysql8.0+汉化

一、官网安装 MySQL 1. 在mysql官网进行下载页面 2. 下滑页面,选择 MySQL community download 3.下载windows版本 4.选择第二个download 5.不用登陆,no thanks,just start my download. 6.下载 二、安装 1. 双击安装 2. 选 Full->next 3…

react Effect副作用 - 避免滥用Effect

react Effect副作用 - 避免滥用Effect react Effect副作用基础概率什么是纯函数? 什么是副作用函数?纯函数副作用函数 什么时候使用Effect如何使用Effect 避免滥用Effect根据 props 或 state 来更新 state当 props 变化时重置所有 state将数据传递给父组件获取异步数据 react…

​民兵档案管理系统-退伍军人档案管理全流程追踪

民兵档案管理系统-退伍军人档案管理全流程追踪 民兵档案管理系统(智档案DW-S403)是依托互3D技术、云计算、大数据、RFID技术、数据库技术、AI、视频分析技术对RFID智能仓库进行统一管理、分析的信息化、智能化、规范化的系统。 RFID档案管理系统是以先进…

代码随想录——N叉树的层序遍历(Leetcode429)

题目链接 层序遍历 /* // Definition for a Node. class Node {public int val;public List<Node> children;public Node() {}public Node(int _val) {val _val;}public Node(int _val, List<Node> _children) {val _val;children _children;} }; */class Sol…

硬件FMEA与软件FMEA的区别——FMEA软件

​免费试用FMEA软件-免费版-SunFMEA 在产品开发和制造过程中&#xff0c;失效模式与影响分析&#xff08;FMEA&#xff09;作为一种预防性的质量工具&#xff0c;对于确保产品性能和质量至关重要。然而&#xff0c;硬件FMEA和软件FMEA在应用和实践方面存在显著的区别。本文旨在…