共计 3332 个字符,预计需要花费 9 分钟才能阅读完成。
摘要:让数据库性能 UP!UP!UP!华为云 GaussDB(for MySQL)是这样做的
本文分享自华为云社区《华为海内女科学家为您揭秘:GaussDB(for MySQL)云栈垂直集成的力量有多大?》,作者:吕漫漪 华为瑞典研究所数据库 Lab 首席科学家。
现在云计算越来越遍及,云堆栈作为云计算的重要服务模式,其要害组件之一是事务数据库服务。在理论业务场景中,应用程序依赖于可扩大、高性能的托管数据库服务,以充沛受害于云平台。而云数据库也须要高效利用底层云基础架构,以开释云规模经营的后劲。
华为云 GaussDB(for MySQL)是华为基于新一代 DFV(全称 Data Function Virtualisation,数据性能虚拟化)分布式存储,采纳计算存储拆散架构,齐全兼容 MySQL 的高性能企业级云原生分布式数据库,以全托管服务模式为互联网和企业客户提供业余服务。在本文中,我将解释常见的客户工作负载,以及咱们如何利用华为云计算堆栈的独特能力来解决这种工作负载。
谁是云上的客户?他们的工作负载是什么?
在国内,人们通常认为只有互联网初创企业才会应用云平台,而 MySQL 因为在互联网公司中广受欢迎,失去泛滥国内企业的青眼。但实际上,企业多年前就曾经开始拥抱云概念,并在不断深入倒退中,这也是中国以后的趋势。MySQL 作为世界上最风行的开源数据库,在所有行业和互联网公司中都被宽泛采纳。
那么,云数据库客户的典型工作负载是什么?咱们察看到的两个特点是:1)数据量越来越大。从一开始就有几 TB 到几十 TB 的数据量,而且随着工夫的推移,数据量会越来越大。2)简略的插入 / 删除 / 更新 / 点查和简单的剖析查问的混合。此外,偶然也会有 DDL 操作。
目前客户面临一个很大挑战,即如何在数据量大的状况下晋升数据库性能。客户心愿在简单查问的同时,放弃外围事务工作负载的吞吐量。因为企业的业务逻辑性质,查问通常会比较复杂。侥幸的是,MySQL 8.0 增加了期待已久的剖析行 SQL 反对,例如 windowing function 和递归 CTE。对于非结构化数据,MySQL 的 JSON 反对曾经十分受欢迎。
GaussDB(for MySQL)架构概述
GaussDB(for MySQL)的架构构建在多租户共享的分布式存储系统之上,目前一个数据库的最大数据量为 128TB,一个主节点用于读写负载,最多 15 个只读节点用于读负载。SQL 引擎是一个通过深度批改的 MySQL 8.0,因而在语法和语义方面与 MySQL 100% 兼容。计算节点和存储之间用 RDMA 网络。
GaussDB(for MySQL)服务应用的存储系统是一种高牢靠的跨 AZ 云存储。在私有云上,存储系统能够是一个有几十或数百个节点的大型群集,横向扩大能力比单租户线下计划高很多倍。SQL 节点将 redo log 写到存储层,页面在存储层 materialize,此设计显著缩小了更新密集型工作负载的网络通信。属于单个数据库的页面以 slice 模式组织,slices 散布在多个存储节点上,这个数据分布是就是分布式查问的根底。
华为云 GaussDB(for MySQL)架构图
华为独特劣势:垂直集成
与传统的线下数据库不同,云数据库有垂直集成云栈中所有层的能力。华为作为在云栈各层当先的提供商,在云畛域中有着独特的位置,有能力成为行业的领导者。
云栈中最靠近数据库的是存储,线下纯软数据库须要与通用型存储以及规范文件系统配合应用,在垂直集成方面,简直没有优化空间。但在云上,存储和数据库的集成能施展更大的作用,因为云存储在存储节点方面的可扩展性很强,并容许客户依据数据量和负载动静扩大。因为云存储是多租户之间共享,而且并非所有租户都会每时每刻有大型扫描,因而咱们能够将局部查询处理卸载到存储层,以实现更高的资源利用率。
- 通过并行进步性能(并行查问:PQ)
进步性能的一个通用办法是并行,并行能够在多层上实现。MySQL 8.0 的社区版本仅反对单线程查问执行,无奈充分利用硬件提供的所有核来执行简单查问。咱们批改了 MySQL 执行器,容许应用多个线程并行执行单个查问。与线下解决方案不同的是,云基础架构容许咱们在计算节点上利用它的垂直扩大的能力。最大的计算节点目前有 64 个核,这也代表了咱们通过并行查问能够实现的最大并行力度。当大部分热数据能够放在 buffer pool 里时,此优化成果最好。并行查问将在另一篇文章中具体解释。
客户工作负载不仅蕴含 DML,还蕴含 DDL,例如索引创立、更改列的数据类型。尽管大多数 DDL 在 MySQL 中都是在线解决的,但有些操作可能会被阻塞,而且应用逻辑复制会扩充梗塞。GaussDB(for MySQL)应用物理复制,防止了这个问题。当表很大时,DDL 操作可能须要数小时能力实现。为了反对咱们在云上常见的数据量,优化 DDL 的必要性是不言而喻的。咱们曾经有一种翻新的办法来解决 DDL,这种翻新将在前面的文章中探讨。
另一个容许更高并行力度的层是存储层,因为存储系统可能有数百个节点和数千个外围。GaussDB(for MySQL)应用的这种云规模的分布式存储是咱们进步查问性能的一个要害根底,联合并行查问,有可能实现查问性能进步 100 倍以上。
计算层单线程查问执行
计算层和存储层并行执行
- 利用云存储进步查问性能 (算子下推:NDP)
GaussDB(for MySQL)中的数据以 slice 模式组织,散布在多个存储节点上。咱们利用这个数据分布,把算子卸载到数据所在的存储节点上,利用当地可用的计算资源执行,无需将数据读到计算节点中。用数据库术语,咱们将其称为 近数据处理(NDP)或算子下推。其基本原理是:将查询处理的局部工作下推到数据所在的存储节点上,所下推的查问是数据密集型查问,例如全表扫描和索引扫描,投影和某些 WHERE 条件的过滤,以及聚合在存储层执行,仅将匹配行和列返回到计算节点,而不是残缺的页。除了并行执行之外,因为提取到计算节点的数据量显著缩小,这种办法还缩小了网络 IO。
此外,NDP 算子下推还容许充分利用缓存和存储介质的本地带宽,当查问须要扫描大量数据,且数据不在 Innodb 缓冲池中时,卸载到存储的成果最好。例如,下图显示了 NDP 算子下推和并行查问将 TCP-H Q12 的执行工夫优化了 34 倍。另一篇文章会独自介绍 NDP 的技术细节,并提供全面的性能剖析。
将来方向
GaussDB(for MySQL)的设计是为云而生,此架构具备极其弱小和灵便的垂直集成能力,计算和存储资源解耦并且能够独立扩大,同时在性能上严密集成,数据库操作能够在多层中执行。将来,数据库性能也能够卸载到网卡和其余云组件,而不限于计算节点和存储。
咱们置信,云栈的深度集成是开释云数据库力量的要害,华为在实现这一指标方面处于独特的位置,正如 GaussDB(for MySQL)所展现的那样,将来将引领云畛域方向。
综上所述,华为云 GaussDB(for MySQL)基于存算拆散架构,通过并行查问 PQ 和算子下推 NDP 等先进技术,极大晋升了数据库性能,实现了云栈垂直集成力量的最大化,让算力更快更猛。文章所述性能均已上线,欢送大家前去华为云官网体验:https://www.huaweicloud.com/p…,也请持续关注咱们,后续还有更多技术信息与大家分享!
吕漫漪,现任华为瑞典研究所数据库 Lab 首席科学家,云数据库欧洲研发团队的负责人。在数据库畛域有 20 多年教训,已经参加开发电信行业分布式高可用数据库,在国内出名软件公司深耕了十年 MySQL 技术。2020 年退出华为,立志于打造世界顶端的企业级云数据库。
华为将于 2021 年 9 月 23-25 日在上海世博核心 & 世博展览馆举办华为全联接 2021,以“深耕数字化”为主题,汇聚业界思维首领、商业精英、技术大咖、先锋企业、生态搭档、利用服务商以及开发者等各方,探讨如何深刻行业场景,把数字技术与行业常识深度联合,真正融入政企的主业务流程,解决外围业务问题,催生体验晋升、效率晋升以及模式翻新;并公布场景化的产品与解决方案,分享客户搭档的最新成绩与实际,构筑凋谢共赢的衰弱生态。理解更多信息,请拜访官网 www.huawei.com/hc2021
点击关注,第一工夫理解华为云陈腐技术~