《Greenplum走进济南》技术研讨会于7月3日成功举办,我们已经为大家整理了两篇演讲内容(《基于fdw的跨Greenplum集群数据库查询实现》,《基于Greenplum构建下一代数据分析平台》),今天,第三篇演讲内容是由Greenplum中文社区成员阿福带来的Greenplum问题定位与性能调优,相关PPT已上传中文社区网站的下载页面cn.greenplum.org/download,欢迎大家下载获取。
《Greenplum走进全国》系列技术研讨会还在进行中,7月22日,我们将前往星城长沙,欢迎大家报名参加!
作为一名DBA,在实操的过程中,我也积累了一些运维的经验,今天通过这篇文章与大家分享一下,如果大家有任何问题,也欢迎加入我们文章底部的技术讨论群和我们交流。
本文将从两个方面为大家进行介绍,第一个方面是为大家介绍一些应用开发技巧,第二个从DBA的角度来进行一些问题定位和性能调优的经验分享。
一、
应用开发技巧
01
Greenplum架构
首先为大家介绍一下Greenplum数据库的架构。之前也有很多文章专门介绍过Greenplum数据库的架构,具体大家可以参考这篇文章。Greenplum可以被认为是一个完整的黑盒子,提供统一的访问出入口:
- Greenplum数据库是一款MPP架构的集群,整个集群对应用程序提供统一的访问入库,访问永远只能通过Master节点接入,对客户/应用方来说,Greenplum集群是一个完整的黑盒子,只提供唯一入口;
- 基于这个概念,应用在做迁移适配时,也不需要做多节点改造,只需要将原来的Oracle/DB2访问串修改为Greenplum Master节点的访问串即可;
02
查询计划与数据分布概览
查询计划相对于物理架构图是一个更加逻辑的层面了。这里主要展示了三个概念。
执行计划
在做应用开发或者做数据库调优时,首先大家必须要看下图中间的查询计划。它的使用,如果大家对PostgreSQL比较了解会知道会用到explain [analyze]。执行完会看到查询计划的每一步。
数据分布
第二个概念就是数据分布。下图中有个简单的例子。这里有两张表,一个是t1表,一个是t2表。每个表都有6条数据,在做数据入库时,由于Greenplum是分布式架构,因此数据会被打散到各个节点均匀分布。下图以3个节点作为例子,如果都以c1列作为分布键的话,数据会均匀分布到3个节点上,每个节点会有2条数据。均匀打散的数据有利于并行查询,例如本地hash join,由于节点间并行执行,会大大提高join的效率。