当前位置: 首页 > article >正文

精进不休丨MogDB 数据库预读特性进一步提升20%+查询性能

116f6110bd055bbed56337cb9d48fc81.gif

7月底发布的 MogDB 5.0.8版本引入了几个新特性,其中预读特性将全表扫描能力再度提升了至少20%以上(最大提升达到52%)。

什么是 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场景。

如何使用 MogDB seqscan预读

++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级别),对于数据量很小的表,不建议开启预读。目前默认1GB触发预读,可以设置的触发预读的最小表大小为512MB,用户可以由GUC参数min_table_block_num_enable_ios和min_uheap_table_block_num_enable_ios调整触发预读的表大小。

MogDB Astore测试效果

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

afa23ff0c55a5e493d2a07827f714811.png

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

b0ba2a264ebd6ce6889b07c4e52251e6.png

64ba06c055e91091f073e0a6a3cf42a1.png

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

416ee66c8dfe2fd0bdbd82156bd318bd.png

13b0240bd63b98a0d3c5024aaef35bfe.png

MogDB Ustore测试效果

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

e18de7d0c7b073a17aed6e2b25d36a1b.png

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

e9b11aa29e642a60c2c178e5ada59f0b.png

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

ee33fe9c250b5d1c21c083543b94c73d.png

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

b35bd1b54fcec82e00946c4ac86b4ec2.png

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

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

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

845226f07b833331523b45890b5a1ccf.png

关于作者

李真旭,网名Roger,前Oracle ACE。拥有超过十多年的Oracle运维管理使用经验,参与过众多移动、电信、联通、银行等大型数据库交付项目,具有丰富的运维管理经验;对数据库管理运行机制、锁机制、优化机制等具有深入理解,擅长数据库的performance tunning、troubleshooting以及异常恢复,帮助众多中大型客户解决了无数疑难问题,累计恢复的数据总量超过1个PB。

END

数据驱动,成就未来,云和恩墨,不负所托!


云和恩墨创立于2011年,是业界领先的“智能的数据技术提供商”。公司以“数据驱动,成就未来”为使命,致力于将创新的数据技术产品和解决方案带给全球的企业和组织,帮助客户构建安全、高效、敏捷且经济的数据环境,持续增强客户在数据洞察和决策上的竞争优势,实现数据驱动的业务创新和升级发展。

自成立以来,云和恩墨专注于数据技术领域,根据不断变化的市场需求,创新研发了系列软件产品,涵盖数据库、数据库存储、数据库云管和数据智能分析等领域。这些产品已经在集团型、大中型、高成长型客户以及行业云场景中得到广泛应用,证明了我们的技术和商业竞争力,展现了公司在数据技术端到端解决方案方面的优势。

e2f814653bac661376c9f9e19ab8fb74.png

http://www.lryc.cn/news/2417892.html

相关文章:

  • 计算机期刊投稿须知
  • C语言qsort函数的使用详解
  • 2023最新个人博客文章发布系统的设计与实现(毕业设计+论文+开题报告+运行)
  • Android 游戏开发入门指南(一)
  • java Map遍历的5种方法和一些基本使用
  • Cocoa 框架概述
  • alternatives命令总结
  • PS(Photoshop)去水印的4个方法
  • MPEG音频文件格式(包括MP3文件格式)详解
  • 思科RIP路由协议介绍与实验操作步骤
  • 1.图文并茂详解Linux安装,客户端连接,xshell,虚拟机,虚拟网卡配置
  • 【统计类知识】大数定律与中心极限定理
  • 【笔记】位图(.bmp)和矢量图(Vector):位图是点阵图或光栅图,使用像素的一格一格来描述图像,放大以后每一个像素看就像是一个个的马赛克;矢量图是使用直线和曲线来描述图形,可以无限方法,不会失真
  • conan 详解
  • 什么是DI(依赖注入),依赖注入的原理
  • 数据库的索引
  • 用AVPlayer播放视频
  • 说走就走的「Windows」—— Windows To Go 制作详解
  • 算法篇-----粒子群算法
  • linux解压缩命令大全
  • html网页制作——HTML5响应式个人简历网站模板 web前端网页制作课作业
  • 项目介绍——面向对象与软件工程实验四
  • flex与bison入门,编译原理:flex编写词法分析器(使用windows环境)
  • NIVIDIA 硬解码学习2
  • 泛函分析的優勢在數值解析中:高效計算與準確度的平衡
  • 向量的点乘和叉乘
  • 打印机连接三种方式
  • Netbeans 适配C/C++、JAVA防坑秘笈
  • JS中几个getElementByXXX方法的区别
  • Varnish的基本应用详解