第二期——大厂面试必备 PB级数据仓库性能调优分享

网友投稿 545 2022-05-29

低调奢华有内涵,有木有。

很有哦。

这次直播,老师结合具体的应用场景,交流分享比较通用的调优方法、性能定位和个人经验,而且还有示例的实际操作演示,理论 + 实践,学习完就实战,有利于更好学习掌握,很不错哦。

PS:听完这节课,可能会升职加薪哦,小姐姐很幽默呀。

直播围绕如下四个部分展开:

GaussDB分布式架构;

调优原则与流程;

伴随场景介绍;

调优实践。

1. GaussDB分布式架构

老师从软件架构娓娓道来,给新来的朋友们做个简单介绍。

从时代背景着墨,如今,每个人都是身处大数据时代,动辄PB级的海量数据,单机的性能无法承担起如此庞大的数据冲击和带来的巨大的计算量,所以分布式的架构应运而生。而多快好省而是最终的最求目标。

然而随着数据量的增大,集群的增加,性能成为了一个不得不考虑的问题,所以一般大型企业都需要专门人才负责性能调优,熟悉懂得这门技术,可是会升职加薪哦。其实,如今随着架构的改进和先进制程的升级(5nm都已经量产了,大家正在使用的手机处理器的CPU 极有可能就是基于5nm工艺制造的哦)。

近年来,硬件性能的提升主要是制程优势,硬件的性能已经很强大了,很多时候,我们觉得性能不行,是因为使用的系统或软件未能发挥出硬件的性能,如同千里马未能遇到伯乐,因此,如何调试优化,进行改进,以尽量少的硬件资源获得更佳的性能,以获得更加性能就显得很关键了。

分布式架构也有分布式查询,而分布式查询处理是MPPDB中最核心的技术,其真正的关键在于尽量降低查询中节点之间的数据流动,以提升查询效率,因为数据传输带来的IO开销基本上在任何硬件和系统上都是非常耗时的一项操作。其大体运行方式为:

具体流程为:

(1)Coordinator上接收到用户的查询请求后,Coordinator负责查询请求的解析、优化以及向DataNode进行任务下发。

(2)DataNode上。接收到Coordinator下发的任务后,DataNode基于本节点存储的数据,以及其他DN节点分发的流数据执行任务。

(3)任务流程是不断从任务树的叶节点向上迭代执行完成整个查询任务。这个任务树中的叶节点就是数据的扫描任务,而中间的节点就是各种数据库运算任务,如Hash计算,Join操作,聚集操作和排序操作等。每个节点都是接收下级任务的数据输入,并向上级任务输出数据。这个是一个生产者—消费者的工作模型。

(4)在非阻塞式的任务流程中,上下级任务间是采用流水线的方式来提高执行性能,即上级任务不需要等待下级任务生成完整个处理结果集才启动,下级任务生成一条结果记录就可以传递给上级任务处理。

(5)阻塞式任务(如排序),上级任务仍然需要等待下级任务完成所有数据处理工作。

老师讲解的比较通透详细,使得大家对大体流程能够基本了解,算是打开了一个通往新世界的大门吧。

2. 调优原则与流程

第二期——大厂面试必备 PB级数据仓库性能调优分享

调试优化基本上是所有开发者的常见工作了,无论你是专攻算法研究,还是做硬件部署,都不可避免地会遇到这个问题。我觉得最好的优化就是通过软件或算法对所使用的的硬件的性能进行“压榨”,最大程度发挥硬件性能,这既简单,有复杂。说它简单,是因为目标明确,而且好理解,干就对了;说它复杂,因为这是需要对硬件和软件都比较熟悉,而且需要不断试错,是一个需要时间付出和经验积累的。

数据库优化的基本准则是——“资源利用最大化”。

通过老师的讲解,我们知道这里的资源主要是指CPU、内存、磁盘IO、网络IO这四种资源,而所有的调优手段都是围绕资源使用开展的。同时,老师也强调了“资源利用最大化”的两层含义:

(1)SQL语句尽量高效

四两拨千斤——最小的代价实现执行目标。说到这里,有具体的示例讲解哦,比如点查询场景可以用顺序扫描(即读取每一条元组和点查询条件进行匹配)实现,也      可以通过索引扫描实现,显然索引扫描代价更小

(2)SQL语句充分利用资源

充分利用所拥有的的各种资源,实现性能的极致。举例来说,比如在数据排序的时候,在内存可控的范围内保证数据不下盘,让数据在内存中排序,从而提升排序     效率,保证性能的最大收益。

总之,就是发挥硬件性能,带来最优体验。

而接下来介绍的就是调优流程了。

调优的基本流程分为静态调优和执行态调优,二者关系如图所示:

其中,静态调优为客户的业务设计,根据业务特征确定集群部署方案、表定义(包括行列存、复制/哈希分布等)设计的过程。

集群部署方案和表定义一旦确定,后续改动的代价会比较大。

而执行态调优是根据SQL语句执行的实际情况采取针对性措施干预SQL的具体执行计划的方式来提升性能。

一般包括收集统计信息、SQL改写、数据库参数配置、plan hint等手段

PS: 性能的好坏或者是速度的快慢,不仅与所用的具体语句有关,还与具体的应用环境息息相关哦。

此外,老师还介绍了表设计基本流程和表设计策略,这里就不一一展开介绍了,老师着重讲解的是局部聚簇,来实现快速扫描,提高速度。

总之就一句话,充分利用资源,最大发挥性能。

最后,放一下老师的PPT镇楼吧。

当然,调优是一个不断分析、验证,不断尝试和试错的过程,这个需要耐心去做哦。

3. 伴随场景介绍

先来看看老师怎么说:

示例场景是涉及安全方面的,具体为基于多维数据追踪犯罪团伙,即找出与嫌疑人同时经过多个路段的人群,此人很可能就是嫌疑人的同伙。

也可绘制每个同伙与嫌疑人的对比轨迹,从而进一步确认嫌疑人与同伙的合作关系。

大数据时代,解决一个问题,首先要将其抽象为一个数学问题,之后再求解,因为计算机只能解决“数学题”哦,而且计算能力超强,还不用休息。

那么怎么抽象呢?很简单哦!

(1)某车在指定时间段的出现时间与地点;

(2)该时间内相同地点与该车相差前后同行时间内的所有车辆

(3)将车牌号和地点合并成新列,按照地点分组,形成子结果集

(4)对子结果集按照地点和车牌号形成的新列分租,并计算各组车牌号的次数,大于指定同行次数。

计算可是计算机的强项了,就给它就行了。

4. 调优实践

我觉得这是这次直播的高潮了,老师也花了最多的时间和篇幅来讲解和介绍哦。

而我个人喜欢实践,讲完理论,最适合马上实践了。

这里不仅有详细的代码,还有更细致的讲解呢,真是手把手教学了,当然,关键还是看自己了。先来看看诚意满满的代码:

不仅仅如此哦,看看这么详细的解析:

PS小技巧:数据库优化的核心是识别性能瓶颈点,针对性解决问题,查询SQL优化的指导思路是首先写出的优化器喜欢的SQL。

看这些概要信息,我们可以得到很多想要的信息,进行具体的分析,比如每个算子的实际执行时间,返回信息等等,包括分布式框架的痕迹,也能窥探一二。这些信息分析整理汇总,对整体性能的优化改进是很有意义的哦。

很不错呀。

这里再次重点介绍了局部聚簇,简称PCK,通过实际运行程序,对比是否使用PCK下的所需时间,发现使得PCK,时间缩短了近一半,这样的提升是很惊人的,真是非常棒呀。

总的来说,这次学习,收获满满。不得不说,还挺硬核科技,只能说加油了,少年,GaussDB 少年!

内心OS:其实,我还不太懂。

仓库 数据仓库服务 GaussDB(DWS) 应用性能调优 大数据 数据库

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:【Python成长之路】python并发学习:多进程与多线程的用法及场景介绍
下一篇:Linux内核驱动学习(十)Input子系统详解
相关文章