重磅!预读 New feature 提升再次提升20%+性能

news2025/1/4 6:40:40

在7月底发布的MogDB 5.0.8版本中,引入了几个新特性,其中的预读功能又将全表扫描能力提升了至少20%+。

什么是MogDB 预读功能

数据库中的数据是按照一个个页面进行组织管理的,CPU以页面为单位对数据进行处理,这就使得CPU处理和I/O之间形成了串行交替执行的现象。在该处理模型中,由于一个页面的I/O时延明显大于CPU处理一个页面的时间,导致CPU处理过程会被I/O操作频繁打断,使CPU利用率低下,这是导致如全表扫描等场景性能差的主要原因。

顺序扫描预读机制改变了该处理模型,将顺序扫描的CPU处理过程与I/O操作并行化,尽量避免CPU因为等待I/O而阻塞。理想状态是,当CPU将要处理下一个数据页时,刚好I/O服务例程已经将该数据页准备好放在内存中。这种模型我们定义为数据页预读机制(data prefetch)。

本特性在全表扫描类查询(如TPCH场景)中,SeqScan算子性能提升20%-60%,端到端性能提升10%-20%。

注:

并非所有SQL在任何测试场景下,都有上述性能提升。预读性能提升主要和查询语句的复杂度(CPU计算和I/O耗时)及磁盘带宽有关,其他影响因素包括是否为全缓存场景、是否为混合查询负载。

算子性能提升明显的SQL特征:CPU计算耗时重,I/O带宽未达到磁盘最大带宽。 端到端性能提升明显的SQL特征:CPU计算和I/O耗时各占50%左右,I/O带宽未达到磁盘最大带宽。 本特性默认关闭,设置GUC参数enable_ios = on,enable_heap_async_prefetch = on启用Astore顺序扫描预读。设置GUC参数 enable_ios = on,enable_uheap_async_prefetch = on启用Ustore顺序扫描预读。

预读功能的应用场景和说明

MogDB的顺序扫描预读针对较大数据量下的纯数据表顺序扫描场景(全表扫描场景)进行优化,提升扫描性能。本特性支持Astore和Ustore两种存储引擎,并且支持并行扫描下预读。

这适用于OLAP场景.

如何使用

++astore
enable_ios = true  // 系统级别,重启数据库生效,默认为false
enable_heap_async_prefetch=true  // 会话级别,支持在线配置,默认为false

++ustore
enable_ios = true  // 系统级别,重启数据库生效,默认为false
enable_uheap_async_prefetch=true  // 会话级别,支持在线配置,默认为false

补充说明:

1、如果使用普通的机械硬盘,磁盘IO带宽可能是系统瓶颈,所以不能体现出预读的优势。

2、顺序预读机制主要适用于数据量很大的表(至少为GB级别),对于数据量很小的表,不建议开启预读,目前默认1G触发预读,可以设置的触发预读的最小表大小为512MB,用户可以由GUC参数min_table_block_num_enable_ios和min_uheap_table_block_num_enable_ios调整触发预读的表大小。

MogDB astore测试效果

dop=1:TPCH顺序扫描算子提升为52%,端到端的提升为27%:

alt
alt

dop=8:TPCH顺序扫描算子提升为28%,端到端的提升为13%:

alt
alt

混合负载(tpcc+tpch)的情况下性能提升的结果和对TPMC的影响:

alt
alt

MogDB ustore测试效果

dop=1:总体算子提升为41%,端到端的提升为19%:

alt

dop=4:总体算子提升为43%,端到端的提升为21%:

alt

dop=8:总体算子提升为45%,端到端的提升为23%:

alt

dop=16:总体算子提升为37%,端到端的提升为13%:

alt

混合负载(tpcc+tpch)的情况下性能提升的结果和对TPMC的影响:

  • dop=1:总体算子提升为32%,端到端的提升为19%,tpmc效果提升3%,tpmc不受预读影响:
alt
  • dop=4:总体算子提升为38%,端到端的提升为22%,tpmc效果提升2%,tpmc不受预读影响
alt

原文参考:https://docs.mogdb.io/zh/mogdb/v5.0/seqscan-prefetch

本文由 mdnice 多平台发布

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

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

相关文章

AI模型:全能与专精的较量与未来潜力探讨

AI模型:追求全能还是专精? 随着人工智能技术的飞速发展,AI模型逐渐成为各个领域的焦点。近日,OpenAI即将推出的“草莓”模型,以其全能型的特点引起了广泛关注。在这篇文章中,我们将探讨全能型AI与专精型AI…

第十三章、 泛型

第十三章、 泛型 13.1 泛型语法 13.1.1 泛型的引入与入门 看一个需求 (1). 请编写程序,在ArrayList中,添加3个Dog对象 (2). Dog对象含有name和age,并输出name和age(要求使用getXx…

IPv6和IPv4的主要区别

地址变化与转换: IPv6 二进制数有 128 位,IPv6 使用十六进制表示,中间使用 : 分隔。 简写: 将前面连续的 0 ,使用 :: 表示。缩写只能使用一次,而且缩头不缩尾。 首部: 地址划分: IPv…

WEB:探索富文本编辑器的详细指南

请关注微信公众号:拾荒的小海螺 博客地址:http://lsk-ww.cn/ 1、简述 富文本编辑器(Rich Text Editor, RTE)是一种允许用户在不需要编写HTML或CSS代码的情况下创建和编辑复杂文本内容的工具。无论是博客平台、内容管理系统&…

pnpm 查看库的所有版本

1、最近在做图布局的时候,发现默认版本是beta版 2、那么我们如何来查看远程库中有什么版本可以安装呢? 3、使用命令: pnpm view antv/layout versions pnpm view 这里替换成要查看的库名 versions

Flutter-->自定义容器Widget(类比Android自定义ViewGroup)

上一篇Flutter–>自定义Widget(类比Android自定义View) 介绍了如何自定义一个Widget, 这一篇文章介绍如果自定义容器Widget, 相当于Android中的ViewGroup Android自定义ViewGroup 先来简单介绍一下Android中自定义的ViewGroup: class CustomViewGroup(context: …

树上dp+分组背包类问题

今天也是无意间看到了一个树上dp分组背包类的问题,有些难度的,不好想的嘞,终究还是一个蒟蒻罢了,唔无捂误 话不多说直接看题 P1273 有线电视网 在说明这道题之前,还有一个要提醒的地方就是,树上dp&#…

在 DataOps 体系建设中,主动元数据是何角色?

首先,主动元数据是相对静态元数据而言,它是一种动态、智能化的元数据管理技术,能够将传统静态元数据的被动等待变为实时在线、主动触发,推动数据探查、开发、测试、部署、运维和监控等数据治理工作高效运转,为数据的治…

springWeb介绍、以及SpringWeb的搭建

ssm框架 早期 ssm springstrtuts2mybatis 现在 ssm springspringwebmybatis springweb运行流程 1、SpringWeb概述 SpringWeb是spring框架中的一个模块,基于Servlet API构建的web框架,springweb是Spring为web层开发提供的一套完备的解决方案。在we…

Java毕业设计 基于SSM校园心理咨询服务平台

Java毕业设计 基于SSM校园心理咨询服务平台 SSM 校园心理咨询服务平台 功能介绍 学生: 注册 登录 首页 心理测试 心理文章 心理导师 在线交流 关于我们 搜索 学生中心 我的咨询问题 我的测试结果 我的预约 我的发言 我的收藏 账户信息 教师:登录 发布文…

Linux——nginx 负载均衡

常规的web服务器一般提供对于静态资源的访问,比如说:图片、web样式 网站提供的大部分交互功能都需要web编程语言的支持,而web服务对于程序的调用,不管编译型语言还是解释型语言,web服务同将对于应用程序的调用递交给通…

音频变声怎么弄?(实测好用)快来试试这6个AI变声工具

音频变声怎么弄?随着短视频平台和社交平台的发展,很多小伙伴们会自己拍摄视频分享到平台上,还有一些视频创作者会制作有趣的视频吸引观众。而视频配音就是锦上添花,很多人觉得自己的声音不好听,想要实现录音音频变声&a…

结合ollama gemma2:2b大模型来实现数据分析系统的智能交互

在最近的人员风险行为分析系统开发过程中,需要解决一个问题:在缺乏GPU资源的情况下,如何提升智能交互能力。​我们探索并研究了集成gemma2:2b模型的可行性,这一举措旨在在有限的硬件条件下,为我们的系统注入更高级别的…

如何理解进程

一、进程的概念 进程:顾名思义,就是一个完整执行程序的过程。没错,就是这么简单,但是在程序执行的过程之中,系统会为这个执行的程序分配内存资源,这些过程也包含在进程当中。 进程是动态的,是程…

css-50 Projects in 50 Days(2)

html <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>步骤条</title><link rel"style…

基于混沌麻雀搜索算法的光伏MPPT控制MATLAB仿真

微❤关注“电气仔推送”获得资料&#xff08;专享优惠&#xff09; 模型简介 此模型主要研究光伏系统MPPT控制&#xff0c;通过将麻雀搜索算法引入至MPPT控制策略中&#xff0c;在模型中通过改变光照强度&#xff0c;来验证算法引入的有效性。模型中包含麻雀搜索算法MPPT与混…

单链表——随机链表的复制

深拷贝&#xff0c;就是将原链表彻底的拷贝&#xff0c;当我们观察这个链表时我们会发现&#xff0c;val与next都比较好拷贝&#xff0c;难点就是在random的拷贝&#xff0c;因为我们需要知被拷贝的节点的random指向的是哪个&#xff0c;所以我们很容易想到的方法就是从头遍历链…

从开题到答辩:ChatGPT超全提示词分享!(上)【建议收藏】

在浩瀚的知识领域中&#xff0c;提问的艺术是探索真理的钥匙。在这个信息爆炸的时代&#xff0c;深入探索知识的海洋&#xff0c;不仅需要热情和毅力&#xff0c;更需要正确的方法和工具。学术研究是一个复杂而严谨的过程&#xff0c;涉及从选题、文献综述到研究设计、数据收集…

网络层,数据链路层和应用层

1.网络层 网络层最主要的协议就是IP协议。 下图是IP协议的格式&#xff1a; 1.1 IP协议解析 &#xff08;1&#xff09;4位版本&#xff1a; 有两种&#xff1a;IPV4&#xff08;IP地址4个字节大小&#xff09;和IPV6&#xff08;IP地址16个字节大小&#xff09; &#xf…

推荐系统实战(八)-冷启动(上)

一、冷启动基本描述 &#xff08;一&#xff09;冷启动与新用户新物料 冷启动针对的是对缺少消费记录的新用户、新物料的推荐。 新用户不仅包含初次使用应用的用户&#xff0c;还包含安装很久但是处于低活跃状态的用户。 &#xff08;二&#xff09;部分经典算法无法支持新…