您当前的位置:首页 > 电脑百科 > 数据库 > 百科

超越“高并发I/O数据库系统”的性能挑战

时间:2022-07-28 11:05:42  来源:  作者:来自IT的我宋家雨
德州大学阿灵顿分校计算机科学与工程系教授江泓

今天与大家分享我们实验室最近的一项研究:在企业级应用环境下,数据库系统高并发I/O带来的性能挑战。该项研究发表在今年的EuroSys会议上。

如今大量企业级应用,如社交网络、电子商务、数字银行、社交媒体等,时刻不能离开后台数据支持,海量在线用户引发的并发数据访问,给数据后台服务带来了前所未有的压力,可以用三高一低来概括:高带宽、高并发、高体量和低延时。

如今后台存储设备性能也以指数级趋势增长,由上图看见,PCIe SSD的I/O带宽每3年翻一倍。目前PCIe 5.0 I/O带宽可以达到10GB/s,如此高的带宽,在理论上可以极大地促进存储子系统和数据库的融合,满足上层企业级应用更高性能体验的需求。然而现实并非如此。

在企业级应用的下层,一般会有不同类型的数据库实现数据的存储和分析服务。这其中包括传统的关系数据库和NoSQL数据库,而支撑数据库运行的是不同类型的存储设备,如基于SSD、HDD的存储子系统或分布式文件系统。我们的研究发现,在这三层构架中,各类数据库系统正在成为软肋,也使得存储设备潜力难以发掘,直接影响企业级应用的体验。

以广泛应用关系数据库MySQL为例,我们不难发现以上现实:高并发用户I/O可以导致不同类型锁的严重竞争行为,从而消耗相当比例的CPU处理时间,造成长时间的锁等待。更为严重的是,用户之间锁等待时间的分布,可能存在巨大的不公平性,这种不公平性还会随着并发用户数量的增加而不断恶化,极大降低I/O的处理效率。低效I/O性能如以上数据所示,主要表现为吞吐率降低、请求延时波动上,这说明MySQL不能保证高并发环境下,公平高效的分配I/O资源。我们也发现其他类型数据库,如作为NoSQL数据库经典的MongoDB,也有类似问题。

针对以上问题,我们推荐可以跨数据库的应用级调度技术AppleS(Application Level Scheduler),旨在实现非侵入式的数据库外部I/O访问控制和运行时调度机制,准确地隐藏超过数据库能力的多余用户并行请求。从而极大地降低了锁竞争和队列等待时间,并提高数据库缓存的利用率。正如以上数据所示,AppleS可以极大地提升数据库利用现有存储资源的能力,实现高效吞吐,公平用户I/O访问和稳定低延时的高并发用户I/O服务。

当前有潜力解决相关问题的技术方案大致可以分为三类,即面向特定数据库的侵入式的解决方案、资源管理工具如Cgroup以及内核I/O调度技术。

但是这些方案都存在以下三个问题:

1.被动的用户高并发I/O导致的性能瓶颈,从而丧失最佳的解决时机,进而无力阻止低效、不公平、不稳定的用户并发I/O。

2.侵入方案很难跟踪并有效规范自发性的用户并发I/O。

3.面向特定数据库的侵入式解决方案,即使对特定类型、特定版本的数据库有较好的效果,但是很难迁移到其他版本的同类数据库,更不用说不同类型的数据库。无法实现跨数据库、跨版本的支持。

针对以上挑战,AppleS的设计遵循以下四个原则:

黑盒子工作模式,AppleS将数据库以及下沉存储I/O或者数据库和存储子系统的融合,看作一个大黑盒子。 早期介入,防患于未然。

AppleS会在第一时间阻止潜在I/O性能瓶颈的产生。为产生这个目标,I/O需要在数据库和存储子系统看见造成性能瓶颈的用户并行I/O之前,及时发现并有效规范他们的I/O行为。

通过P和ζ的二维控制实现隐藏过量的并行I/O。

也就是通过P控制总是允许适量的用户并发I/O访问数据库,并且暂停而不是拒绝多余的I/O行为,同时基于ζ控制,AppleS会尽量保障用户I/O顺序访问模式,从而有效提升缓存的命中率。

AppleS会通过P优化和ζ优化保证整个I/O隐藏过程的公平、高效和稳定。

应用性和高度兼容性。

AppleS的设计需要考虑其快速跨数据库部署的能力,鉴于MySQL、MongoDB是广泛接受的经典关系数据库和NoSQL数据库,现有的AppleS原型系统实现可以快速部署于MySQL和MongoDB的多个主流版本。

让我们看一下早期介入的实现细节,AppleS是通过干预I/O请求从网络链接传入数据库的过程来实现早期介入的。

该过程可分为六步:

1.通过网络驱动传入Socket缓存。

2.数据库发起系统调用。

3.I/O请求进入数据库。

4.工作现存发起存储I/O请求。

5.查询结果返回。

6.I/O请求转回。

其中AppleS通过策略性暂缓过量I/O请求的系统调用及步骤二和三,来防止过量I/O请求进入系统数据库。

AppleS是通过P控制和ζ控制来实现过量用户并发I/O隐藏的,前者控制并发用户数量,而后者调节单个用户的连续访问数。上图给了一个AppleS的调度案例,其中P和ζ设定为2和10,该案例中有4个并发用户,其中用户1和3权重为0.4,而用户2和4权重为0.1。因此在一轮AppleS调度中,允许的发送的请求总数为10。而四个用户的用户I/O 定额也就是连续访问数,基于权重分别为4,1,4,1,换言之,在任何时刻,同时被数据库可看见的并发用户人数限定为2,也就是P=2。同时每个用户可连续发送的请求数也被其用户I/O 定额所限定。

通过这种方式,只要P和ζ设定匹配数据和存储子系统的处理能力,AppleS就可以准确地隐藏过量的并行I/O。

以上实验给出了P控制的效果,优化P设定匹配点,可以避免过量的用户并发I/O导致的锁竞争低效的争抢行为,以及高队列效应。从而最小化I/O请求延时,进而获得高吞吐率、很低的用户并发I/O不公平性、以及低水平的请求延时波动。

由于AppleS通过从数据库外部截获数据库发出的系统调用,来帮助其进行用户并发I/O的调度,它本质上将数据库和底层存储子系统视为一个黑盒子,这使得AppleS操作可以从物理层面与数据库的操作和底层的OS 合态I/O操作隔离开来。从而获得较高的易用性和兼容性,事实上AppleS可以通过迅捷的配置,快速适配一款特定的数据库。

此外AppleS还可以兼容多个版本的主流linux内核,不同的存储I/O调度机制,以及资源管理工具,比如Cgroup。

现在我们谈谈AppleS优化的流程,刚才谈到AppleS的过量用户并发I/O的隐藏,是通过P和ζ二维控制实现的,其配置需要优化,及P和ζ优化。

P优化的目的,是为了发现最佳的用户并发I/O的匹配点,在该点数据库的吞吐率可达到峰值。同时由于该点可以避免过量并发I/O引起的高度锁竞争低效,以及队列效应,不仅是吞吐率,用户及公平性请求延时波动,也会得到很大的优化。

对于P优化我们采用基于三点测量的建模方案,从而构建吞吐率和用户并行度的函数模型。进而获得最佳的配置点,作为P控制的优化配置方案。相关细节可以参考论文。

以上例子直观地展现吞吐率和用户并行度的函数模型,以及最佳匹配点的物理含义,及达到吞吐率峰值所需要的最小用户并行度。

而ζ优化则采用基于测量的反馈控制,在限定用户并发I/O不公平度和I/O请求延时波动上限的前提下,最大化地用户的顺序请求访问水平,在P控制限定用户过量并行I/O的前提下,缓存访问命中率将得到极大优化。

性能测试主要针对AppleS的有效性、易用性和多类多版本数据库的兼容性,以及针对主流的Linux内核资源管理工具和存储调度机制的适用性展开。为此目的,我们用经典而被广泛接受的关系数据库MySQL和NoSQL数据库MongoDB共4个版本的数据库作为测量对象。同时我们在4个不同的版本的Linux内核,9个存储调度机制,以及Cgroup资源管理工具的环境下,对AppleS进行测试。

对于MySQL8.0.23,AppleS可以显著提高用户并发I/O公平性降低I/O请求延时的波动水平,同时还能保证高水平的吞吐率,最高提升39.2%。对于MySQL 8.0.15我们测试在一定用户并行I/O不公平的限制,例如10%,对于不同存储调度配置吞吐率的优化程度,可达到17%的提高。对于MongoDB4.4.3,AppleS可以与资源调度工具Cgroup合作进一步提高吞吐率的水平,同时获得很高的用户并行I/O的公平性,最高可以提升101.5倍。对于MongoDB 3.6.0我们发现AppleS在9个存储调度配置下,都可以极大地提高用户并发I/O的公平性,同时可以保持高吞吐水平。

不难发现,AppleS通过细粒度的P和ζ控制,可以准确地隐藏过量的用户并发I/O,对数据库及其存储子系统的负面影响,极大地降低锁竞争,低效缓存行为以及I/O队列效应所产生的性能评价。从而极大地提升了用户并发I/O公平性,保障高水平的I/O吞吐率,同时降低了I/O请求延时的波动水平,需要注意的是,AppleS采用的是非侵入式的用户态实现,易于部署和升级。可以快速地适配不同类型、版本的数据库系统,如MySQL和MongoDB。

(以上内容根据速记整理而成,未经过本人审阅)



Tags:I/O   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
探索计算机的I/O控制方式:了解DMA控制器的作用与优势
/ I/O 控制方式 /在前面我们已经了解到,每个设备都配备了一个设备控制器。当 CPU 向设备控制器发送命令并将其存储在寄存器中时,设备控制器会执行相应的操作。然而,尽管设备控...【详细内容】
2023-09-07  Search: I/O  点击:(205)  评论:(0)  加入收藏
谷歌员工评论I/O大会:赞美工程师但嘲讽公司高管
新浪科技讯 北京时间5月15日早间消息,据报道,谷歌(117.92, 1.02, 0.87%)员工正在密切关注上周举行的I/O年度开发者大会,以及华尔街对此非常热烈的反应。在I/O开发者大会召开后,...【详细内容】
2023-05-15  Search: I/O  点击:(129)  评论:(0)  加入收藏
谷歌I/O十大重磅发布:生成式AI杀疯全场,首发折叠屏手机
智东西作者 | ZeR0编辑 | 漠影智东西5月11日报道,今日凌晨,在一年一度的谷歌I/O开发者大会上,谷歌CEO桑达尔·皮查伊 (Sundar Pichai)宣布:“对于生成式AI,我们正以一种大胆...【详细内容】
2023-05-11  Search: I/O  点击:(120)  评论:(0)  加入收藏
除了AI,谷歌I/O开发者大会还有哪些看点?
自从微软(310.65, 5.24, 1.72%)支持的ChatGPT出现后,谷歌(106.215, 1.00, 0.96%)一夜之间从机器学习领域的引领者沦为追随者,仓促间推出的Bard没能在市场掀起水花。面对对手步步紧逼,谷歌必须拿出更能打的产品,而眼下...【详细内容】
2023-05-06  Search: I/O  点击:(112)  评论:(0)  加入收藏
虚拟内存 & I/O & 零拷贝
作者:mosun,腾讯 PCG 后台开发工程师一、虚拟内存 1.1 虚拟内存引入我们知道计算机由 CPU、存储器、输入/输出设备三大核心部分组成,如下:CPU 运行速度很快,在完全理想的状态下,存...【详细内容】
2022-10-13  Search: I/O  点击:(306)  评论:(0)  加入收藏
超越“高并发I/O数据库系统”的性能挑战
德州大学阿灵顿分校计算机科学与工程系教授江泓今天与大家分享我们实验室最近的一项研究:在企业级应用环境下,数据库系统高并发I/O带来的性能挑战。该项研究发表在今年的Eur...【详细内容】
2022-07-28  Search: I/O  点击:(352)  评论:(0)  加入收藏
Google I/O 2022 全记录:Android 玩起多设备协同,新硬件成全场主角
整整两个小时的 Google I/O 发布会,对精神的专注度要求可不低。正当人们逐渐出现注意力不集中,开始打哈欠时,Google 开启了「冲锋」,Android 13、Pixel 6a、 Pixel Buds Pro,一连...【详细内容】
2022-05-12  Search: I/O  点击:(243)  评论:(0)  加入收藏
增加的 I/O 请求滞后时间会降低虚拟机性能
如果 ESXi 主机对 LUN 生成的命令超过 LUN 队列深度所允许的数量,则超出的命令会在 VMkernel 中排队。这会增加滞后时间,或是完成 I/O 请求所需的时间。问题主机完成 I/O 请求...【详细内容】
2021-06-23  Search: I/O  点击:(463)  评论:(0)  加入收藏
I/O多路复用,从来没遇到过这么明白的文章
​​​​​​​很多对技术有追求的读者朋友,做到一定阶段后都希望技术有所精进。有些读者朋友可能会研究一些中间件的技术架构和实现原理。比如,Nginx为什么能同时支撑数万乃至数十万的连接?为什么单工作线程的Redis性能...【详细内容】
2021-06-11  Search: I/O  点击:(386)  评论:(0)  加入收藏
理解了Linux I/O机制,才能真的明白“什么是多线程”
你真的了解多线程吗?如果问你“为什么多线程可以提高程序运行效率?”,想必你会说“计算机并行执行任务啊,当然效率高!” 这显然不是一个内行该给出的答案。要知道,一个 CPU 在任何...【详细内容】
2020-11-10  Search: I/O  点击:(394)  评论:(0)  加入收藏
▌简易百科推荐
向量数据库落地实践
本文基于京东内部向量数据库vearch进行实践。Vearch 是对大规模深度学习向量进行高性能相似搜索的弹性分布式系统。详见: https://github.com/vearch/zh_docs/blob/v3.3.X/do...【详细内容】
2024-04-03  京东云开发者    Tags:向量数据库   点击:(9)  评论:(0)  加入收藏
原来 SQL 函数是可以内联的!
介绍在某些情况下,SQL 函数(即指定LANGUAGE SQL)会将其函数体内联到调用它的查询中,而不是直接调用。这可以带来显著的性能提升,因为函数体可以暴露给调用查询的规划器,从而规划器...【详细内容】
2024-04-03  红石PG  微信公众号  Tags:SQL 函数   点击:(7)  评论:(0)  加入收藏
如何正确选择NoSQL数据库
译者 | 陈峻审校 | 重楼Allied Market Research最近发布的一份报告指出,业界对于NoSQL数据库的需求正在持续上升。2022年,全球NoSQL市场的销售额已达73亿美元,预计到2032年将达...【详细内容】
2024-03-28    51CTO  Tags:NoSQL   点击:(19)  评论:(0)  加入收藏
为什么数据库连接池不采用 IO 多路复用?
这是一个非常好的问题。IO多路复用被视为是非常好的性能助力器。但是一般我们在使用DB时,还是经常性采用c3p0,tomcat connection pool等技术来与DB连接,哪怕整个程序已经变成以...【详细内容】
2024-03-27  dbaplus社群    Tags:数据库连接池   点击:(20)  评论:(0)  加入收藏
八个常见的数据可视化错误以及如何避免它们
在当今以数据驱动为主导的世界里,清晰且具有洞察力的数据可视化至关重要。然而,在创建数据可视化时很容易犯错误,这可能导致对数据的错误解读。本文将探讨一些常见的糟糕数据可...【详细内容】
2024-03-26  DeepHub IMBA  微信公众号  Tags:数据可视化   点击:(11)  评论:(0)  加入收藏
到底有没有必要分库分表,如何考量的
关于是否需要进行分库分表,可以根据以下考量因素来决定: 数据量和负载:如果数据量巨大且负载压力较大,单一库单一表可能无法满足性能需求,考虑分库分表。 数据增长:预估数据增长...【详细内容】
2024-03-20  码上遇见你  微信公众号  Tags:分库分表   点击:(17)  评论:(0)  加入收藏
在 SQL 中写了 in 和 not in,技术总监说要炒了我……
WHY?IN 和 NOT IN 是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select *...【详细内容】
2024-03-18  dbaplus社群    Tags:SQL   点击:(13)  评论:(0)  加入收藏
应对慢SQL的致胜法宝:7大实例剖析+优化原则
大促备战,最大的隐患项之一就是慢SQL,对于服务平稳运行带来的破坏性最大,也是日常工作中经常带来整个应用抖动的最大隐患,在日常开发中如何避免出现慢SQL,出现了慢SQL应该按照什...【详细内容】
2024-03-14  京东云开发者    Tags:慢SQL   点击:(13)  评论:(0)  加入收藏
过去一年,我看到了数据库领域的十大发展趋势
作者 | 朱洁策划 | 李冬梅过去一年,行业信心跌至冰点2022 年中,红衫的一篇《适应与忍耐》的报告,对公司经营提出了预警,让各个公司保持现金流,重整团队,想办法增加盈利。这篇报告...【详细内容】
2024-03-12    InfoQ  Tags:数据库   点击:(37)  评论:(0)  加入收藏
SQL优化的七个方法,你会哪个?
一、插入数据优化 普通插入:在平时我们执行insert语句的时候,可能都是一条一条数据插入进去的,就像下面这样。INSERT INTO `department` VALUES(1, '研发部(RD)', &#39...【详细内容】
2024-03-07  程序员恰恰  微信公众号  Tags:SQL优化   点击:(24)  评论:(0)  加入收藏
站内最新
站内热门
站内头条