Greenplum深度优化技巧

以下内容根据演讲PPT以及现场分享整理而成。


本次的分享将主要对云上的Greenplum进行介绍。有的同学往往有一些疑问就是Greenplum产品有什么优势?为什么要使用Greenplum?Greenplum能解决什么问题?在今天的分享中也将探讨这几个问题。最后还会提到一些阿里云Greenplum小组所做的工作。

本次的分享主要分为三个方面:
一、ApsaraDB for GP的定位
二、ApsaraDB for GP内核定制
三、未来规划

一、ApsaraDB for GP的定位
首先提出两个问题:Greenplum的优势是什么?它能解决什么问题?
阿里云的Greenplum产品叫做ApsaraDB for GP,我们给这个产品的定位只有两个字:性能,也就是阿里云的ApsaraDB for GP在性能方面一定要比其他的分析性的数据库解决方案更高。

在我看来,Greenplum的优势在于这样的几点:首先,Greenplum使用了MPP的架构,除此之外,它还使用了列存和压缩。列存和压缩在现在看来是比较普通的技术,但是其实像IBM的DB2数据库也才在近几年支持了列存和压缩技术,而Greenplum从很早就支持了这些技术,这些技术的在性能上会有很大的优势。而且Greenplum不仅能够支持复杂的SQL,而且它的查询优化器能力也大大超出预期。Greenplum产品性能的定位是在秒级或者小于秒级能够实现对于复杂查询的响应,Greenplum执行器的性能其实是来自多年来Postgre的积淀,要远远超过其他的解决方案。另外Greenplum使用的是本地高效存储和高速网络,当然最好是万兆网络,还有预置稳定资源,不会出现性能的波动,简单而言就是Greenplum可以高效地解决大数据分析的需求。


MPP架构处理举例
举一个例子:Select count(*) from customer group by city
这是一条很简单的SQL语句,比方是在数据库中按照城市分组查询每个城市的用户数量。
对比MySQL的执行过程来看,首先MySQL数据库会对所有的数据记录进行扫描,对用户按照城市进行分组,然后对于每组用户的数量进行统计,最后将结果返回给用户。对于1亿条记录而言,这时即使IO不出现问题,那么机器的CPU也会被占满。对于MySQL而言,这样的一个简单SQL语句就可以使机器的CPU占用率达到100%,而且这样执行的速度也是非常慢的。

而Greenplum则采取多核进行计算处理,比方在扫描数据的时候将会采用多个进程,多个CPU去处理,在Hash的时候也会使用多个CPU,这样速度就会变快。当数据量太大,多到一个机器处理不了的时候,就需要MPP了。所以Greenplum使用MPP架构解决了对于大数据量的问题,对于同样的一条SQL语句,Greenplum将会启动多个实例和进程去做同样的事情,执行同样的流程,但是处理的是不同的数据分片,如此就实现了多机器的查询计算,这也就是Greenplum的最核心能力,也是与传统数据库不同之处。

列存与压缩原理举例
再举一个SQL语句的例子:Select count(*) from customer where status = valid group by city
对于这条语句,DBA在对像MySQL这样的传统的数据库进行优化的时候,可能会选择使用索引。但是其实这种情况下使用索引是不恰当的,使用索引只能够过滤20%左右的数据,而增加的性能开销却是很大的,所以不应该使用索引。

列存方式则将会把status单独存储在一个列存块,经过压缩以后,占用的存储空间也会大大降低,同时也可以单独对status数据取出并进行处理。其实在这种情况下列存近似等于开销极小的索引,而且效率非常高。


Greenplum VS Hadoop
Greenplum的Orca优化器,使得其在响应时间上比Hadoop的离线计算产品性能更加优秀。
Greenplum的 SQL Runtime是从Postgre几十年的沉淀演变来的,并且是由C语言构建的,比Hadoop的SQL Runtime效率高很多。还有Greenplum使用的是本地存储,而Hadoop使用的则是分布式存储。所以总体来看,Greenplum的性能可以达到Hadoop的5-30倍。


ApsaraDB for GP VS AWS Redshift
在亚马逊上有一款卖的非常好的产品,名字叫“Redshift”,它被称为亚马逊“有史以来卖的最好的云服务”,其实ApsaraDB for GP在功能上与Redshift很像,而且ApsaraDB for GP有很多Redshift不具备的特性。

在使用ApsaraDB for GP产品时,推荐使用ECS VPC的架构。架构搭建完成之后的一个问题就是:如何将ECS上的数据导入到ApsaraDB for GP进行分析呢?其实可以通过写程序的方式将数据导入到主节点上,也可以使用EMR图去主动地抓取并分析数据。EMR与OSS结合得非常好,将数据存放在OSS上之后,可以通过执行SQL语句使得所有的子节点并发地拉取数据。当然也可以通过应用服务器直接将数据或者日志上传到OSS上面去,对于其他的阿里云服务可也以通过阿里云CDB服务将数据定向迁移到OSS上面,再通过Greenplum进行数据拉取,进而使用可视化工具对数据进行分析。

二、ApsaraDB for GP 内核定制
接下来分享阿里云在Greenplum上做的一些优化工作。在阿里云ApsaraDB for GP架构设计中,子节点分散地存储在不同的物理机上面,每2个或者是16个子节点为一组。对于子节点组采取了资源限制,但是组内节点之间可以弹性共享资源,这样就降低资源倾斜造成的影响,也便于管理,同时节点之间使用万兆网络进行数据传输。

这样架构的一个优点是支持OSS外部表读写,可以在OSS外部创建一张表,使用简单的SQL语句就可以将数据导入到Greenplum的子节点上,同时也可以很简单地将数据从Greenplum导回到OSS。简而言之,就是让OSS充当数据存储中心,让Greenplum作为数据分析中心。

而且Greenplum支持将一些语法作为插件提供,很多这样插件目前已经提交开源社区,很快大家就可以用到了。而且未来ApsaraDB for GP将会完善对于JSON的支持,如果社区动作较慢,我们会考虑在阿里云自己的产品中优先支持。而对于OOM的很难提前监控的问题,阿里云采取的方法就是利用外部脚本监控cgroup中的内存统计,发生内存水位较高时,将实例移入公共cgroup,同时发出cancel query信号给内核;当水位下降时移回实例的cgroup。

三、未来规划
谈到未来规划,第一点就是必须要满足客户需求。另外还要继续对于列存进行优化,希望在未来能够在某些场景下将性能进一步提高。对于CPU优化方面,我们希望在未来能对GP执行器的静态编译进行进一步优化。最后我们希望与Greenplum厂商、用户和开发者一起为Greenplum社区的发展贡献力量,一起推动Greenplum的发展。

时间: 2024-09-20 14:39:28

Greenplum深度优化技巧的相关文章

旅游网站推广:百度竞价深度优化技巧助您一臂之力

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 您是否遇到过这些疑问:为什么我的关键字价格这么高?花了这么多钱怎么没有效果?帮帮忙提高投资转换率吧!而有的竞争对手却花少量的钱获得了比我们好的收益? 为什么同样做百度竞价.google竞价,有的花钱少,效果花,有的企业日消费几百却只有很小很小的效果,造成了大部多资金的浪费,核心原因有几点:智能匹配和关键字选择.竞价词语的引导.广告着陆页面的选

木子成舟:给力的长尾关键词排名优化技巧

大家好,我是上海网页设计协策网络.很多的站长做优化的出发点都是差不多的,做排名,做流量,做转化,但是真正能做到这些的站长却又不是那么多,如果说做排名是一件很痛苦的事情,那么做流量,做转化更是一座不可逾越的高山.很多的朋友可能会反驳说自己的网站没什么排名,却依然有不少了的流量,那么你出现这样的情况有两种可能:一.微博或者转载收藏链接做的相当棒;二.前期品牌建设效果凸显,后期被百度降权不影响.但是,真正在这两种情况下是非常复杂的,就拿微博来说,要想有高流量可能就会遇到下面的一些问题:你的微博能有足够

实例浅谈电子商务站点着陆页面的优化技巧

在电子商务站点中,着陆页(Landing Page,有时被称为首要捕获用户的页面)就是当我们的潜在用户点击广告或者利用搜索引擎搜索后显示给用户的产品页面.电子商务网站来说,最看重的不是单纯的网络流量而是站点的转化率高低,如果转化率不好,那么即使你的站点流量在怎么高也没多大的作用.那么对于电子商务站点的站长来说,如何为了提高转化率的高低而进行着陆页面的优化是必须的.那么我们要如何优化才能达到最佳的效果呢?今天笔者就分享几点关于着陆页面的优化技巧. 一.在我们的产品图片加上ALT属性 对于电子商务站

实例讲解电子商务网站产品页的优化技巧

电子商务网站而言,最看重的不是流量而是转化率,如果转化率不高,即使流量上万也没什么用.毕竟电子商务类型的网站不可能挂一些类型弹窗.游戏之类的广告吧,这样会影响到用户体验而且对于可信度也没有任何的正面作用.而对电子商务网站的站长来说,针对决定转化率高低的产品页应该如何去优化呢?怎么样优化才能使得产品页不会因为用户体验不好或者其他的因素不全而使得成交单丢失呢?今天笔者以例子来讲解一下电子商务网站产品页的优化技巧. 一.产品图片加上ALT属性 对于大部分的电子商务网站而言,其中产品页主要以图文形式展现

深度优化内容页广告 提高网赚收入

因为现在的广告联盟日益增多,所以各自的联盟产品(http://www.aliyun.com/zixun/aggregation/11939.html">广告业务)不同,性质也不同,虽然都是广告联盟可是因为他们自身在业界里的形象,信誉,声誉,和在对待会员的宣传交易量上的对待方法不同而最后所产生的利益也不同!那么这就是联盟会员要去区别和认识的关键,选择好的联盟商是你资金快速增长的命脉! 站长的核心问题,你投放广告了,每天看着帐户后台返回数据统计,你就在想怎么这么少啊?如何提高他呢?满世界的站长

让SSD速度飞起来 固态硬盘优化技巧大全

  让SSD速度飞起来 固态硬盘优化技巧大全 不过SSD其它方面优势却明显,所以已经成为多数用户装机的必配硬件了.在使用方面,SSD与传统的HDD还是略有不同的,想要让SSD真正发挥出它的性能,必须得经过一系列的设置才行.例如开启AHCI,4K对齐,安装专用驱动,使用原生SATA3.0接口等等,要比传统的HDD复杂一些.从大量的评测的数据不难看出,不当的使用方法,会极大的影响到SSD的性能跟寿命.所以适当了解SSD的一些常用小知识,就可以更好的发挥出SSD的性能. 1:SSD不同接口安装展示 目

不得不知道的网站首页优化技巧

网站首页做为整个网站的权重页面,一般来说是整个网站流量最大的页面.SEOer在进行网站优化的时候,首页也是其重中之重,我们明白首页优化程度直接影响着网站的排名和转化率.但是,作为SEOer你知道如何来做首页优化吗? 无论是日常工作中的site命令还是网站排名的查询,首先要检测的多是首页的位置,这就从另一面说明了首页在网站中的地位.同时也就表明了首页优化在整个网站优化中的重要性.或许你会问,首页优化无非就是网站标题和关键词的设置嘛,了不起再加上一个面包屑导航. 然而,真的是这样吗?我们要知道构成网

LAMP服务器性能优化技巧之加速PHP

目前LAMP (Linux + Apache + MySQL + PHP) 近几年来发展迅速,已经成为Web 服务器的事实标准.本文我们将介绍基于LAMP组合的服务器的性能优化技巧:加速PHP. Apache服务器优化.PHP优化.Mysql优化 1.使用eaccelerator 我们上面的介绍Apache服务器的优化,如果您曾经浏览过 PHP 的网页时,或许会发现:怎么 PHP 的速度慢慢的,这是怎么一回事啊?PHP 不是号称速度上面的反应是很快速的吗?怎么会慢慢的呢?这是由于 PHP 的程序

站长必知网站长尾词的优化技巧!

  网站的优化长尾词可以说是相当的重要,因为我们都知道网站的大部分流量都是来自于长尾关键词,那么对于很多的站长朋友来说,对于长尾词的认识不是非常的透彻,也不知道网站的长尾词该如何进行来整体优化,如何才能够让网站的重要长尾词有好的排名,基于我自己的操作长尾词的优化经验,给大家分享下自己的心得:   第一:对于长尾词的认知 很多的站长朋友的思想应该来说对于长尾词的认知还不够彻底,为什么这样说呢?也经常会和一些站长朋友交流,说网站的长尾词就是我们网站目标关键词的拓展词,其实这种方面是没有错的,但是不够