学习·创造·超越·共享Greenplum数据库开发基础12014年10月ChinaConstructionBank.|2目录Greenplum概述和数据分布数据加载和外部表客户端工具Greenplum数据库基础Greenplum与Oracle优化策略其他要点及示例ChinaConstructionBank.|3MPP架构共享磁盘例如:InformixXPSOracleRACDB2pureScaleDBSAN/共享磁盘DBDBDB网络SAN/FC完全共享例如:SMP服务器DB磁盘无共享例如:GreenplumDBDBDBDB网络磁盘磁盘磁盘磁盘Master注:蓝灰色表示共享资源MPPMPP(MassivelyParallelProcessing)Shared-NothingArchitectureChinaConstructionBank.|4MPP无共享架构的优势InterconnectLoading•数据分布在所有的并行节点上–每个节点只处理其中一部分数据•最优化的I/O处理–所有的节点同时进行并行处理–节点之间完全无共享,无I/O冲突•自动化的并行处理机制–内部处理自动化并行,无需人工分区或优化–加载与访问方式与一般数据库相同•最易于扩展的架构–BI和数据分析的最佳选择•增加节点实现线性扩展–增加节点可线性增加存储、查询和加载性能ChinaConstructionBank.|5Greenplum基本架构MPP(MassivelyParallelProcessing)Shared-NothingArchitectureNetworkInterconnect............MasterSeversQueryplanning&dispatchSegmentSeversQueryprocessing&datastorageSQLMapReduceExternalSourcesLoading,streaming,etc.ChinaConstructionBank.|6Greenplum的并行处理特性并行处理由系统自动完成,无需人工干预所有数据均匀分布到所有节点,每个节点都计算自己的部分数据,所以并行处理无需人工干预,系统自动完成。无需复杂的调优需求,只需要加载数据和查询DBA工作量极少,无需复杂的调优工作和维护工作。扩展性可线性扩展到10,000个节点每增加一个节点,查询、加载性能都成线性增长客户端访问及第三方工具支持完全支持数据库技术接口标准,例如:SQL,ODBC,JDBC,OLEDB等。同时,广泛地支持各个BI和ETL软件工具。ChinaConstructionBank.|7Greenplum基本体系架构SegmentHostSegmentHostSegmentHostSegmentHostClientMasterHostLANInterconnect—千兆以太网交换机ChinaConstructionBank.|8客户端接口和程序psqlpgAdminIIIODBC/DatadirectJDBCPerlDBIPythonlibpqOLEDBClientChinaConstructionBank.|9MasterHost访问系统的入口建立与客户端的连接和管理SQL的解析并形成执行计划执行计划向Segment的分发收集Segment的执行结果协调工作处理过程Master不存储业务数据,只存储系统目录表和元数据(数据字典)MasterHostChinaConstructionBank.|10Segment每段(Segment)存放一部分用户数据一个系统可以有多段用户不能直接存取访问所有对段的访问都经过Master用户查询SQL的执行SegmentHostSegmentHostSegmentHostSegmentHostChinaConstructionBank.|11InterconnectGreenplum数据库之间的连接层进程间协调和管理基于千兆以太网架构属于系统内部私网配置支持两种协议:TCPorUDPLANInterconnect-GigabitEthernetSwitchChinaConstructionBank.|12Greenplum高可用性体系架构(privateLAN)segmenthostprimarysegmentsegmenthostprimarysegmentsegmenthostprimarysegmentclientmasterhostmasterinstancegigabitethernetmirrorsegmentmirrorsegmentmirrorsegmentstandbymasterhostsynchprocessstandbymasterChinaConstructionBank.|13Master/Standby镜像保护primarymasterhoststandbymasterhostTransactionLogsTransactionLogssynchronizationprocessSystemCatalogsSystemCatalogsStandby实时与Master节点的Catalog和事务日志保持同步Standby节点用于当PrimaryMaster节点损坏时提供Master服务ChinaConstructionBank.|14数据冗余-Segment镜像保护segmenthostnsegmenthost1segmenthost2masterhostGreenplumMasterglobalcatalogSegment1(mirror)Segment1(primary)Segment2(mirror)Segment2(primary)Segmentn(primary)Segmentn(mirror)每个Segment的数据冗余存放在另一个Segment上,数据实时同步当PrimarySegment失败时,MirrorSegment将自动提供服务PrimarySegment恢复正常后,使用gprecoverseg–F同步数据。ChinaConstructionBank.|15表分布的策略-并行计算的基础Hash分布CREATETABLE…DISTRIBUTEDBY(column[,…])同样数值的内容被分配到同一个Segment上循环分布CREATETABLE…DISTRIBUTEDRANDOMLY具有同样数值的行内容并不一定在同一个Segment上S1S2S3hashassignAACCBBinputrowssegmentsmasterABCCABACACS1S2S3assignnextinputrowssegmentsmasterABCCABACCAACCBABChinaConstructionBank.|16分布键(DistributionKeys)用于将数据平均分布到Segments之中的一个或者多个字段用表的主键作分布键可以使数据分布均匀建表时使用DISTRIBUTEDBY子句定义表的分布键CREATETABLEsales(dtdate,prcfloat,qtyint,cust_idint,prod_idint,vend_idint)DISTRIBUTEDBY(dt,cust_id,prod_id);如果表没有主键,或者没有合适的字段作为分布键,可以使用随机分布键(DISTRIBUTEDRANDOMLY)如果没有明确定义分布键,系统会把第一个字段作为表的分布键ChinaConstructionBank.|17分布存储salecnintegervnintegerpnintegerdtdateqtyintegerprcfloatcustomercnintegercnametextvendorvnintegervnametextloctextproductpnintegerpnametextmasterglobalcatalogsalepart3segment3customerpart3productpart3vendorpart3salepart1segment1customerpart1productpart1vendorpart1salepart2segment2customerpart2productpart2vendorpart2ChinaConstructionBank.|18数据均匀分布-并行处理的关键43Oct2020051264Oct2020051145Oct2020054246Oct2020056477Oct2020053248Oct20200512OrderOrder#OrderDateCustomerID50Oct2020053456Oct2020052163Oct2020051544Oct2020051053Oct2020058255Oct20200555策略:数据尽可能的均匀分布到每个节点ChinaConstructionBank.|19查询命令的执行MasterqueryplanClientSegmentsSegmentsSegmentsSegmentsChinaConstructionBank.|20SQL查询处理机制mastersegment1segment2QDprocessslice3QEprocessslice1QEprocessslice2QEprocessslice1QEprocessslice2gangganggangChinaConstructionBank.|21并行查询计划SLICE1SLICE2SLICE3SELECTcustomer,amountFROMsalesJOINcustomerUSING(cust_id)WHEREdate=04302008;TableScanRedistributeMotionTableScanHashHashJoinGatherMotionTableScanRedistributeMotionTableScanHashHashJoinGatherMotionSLICE3SLICE1SLICE2SEGMENT2SEGMENT1ChinaConstructionBank.|22压缩存储和行列存储压缩存储支持ZLIB和QUICKLZ方式的压缩,压缩比可到10:1压缩表只能是AppendOnly方式压缩数据不一定会带来性能的下降,压缩表将消耗CPU资源,而减少I/O资源占用语法CREATETABLEfoo(aint,btext)WITH(appendonly=true,compresstype=zlib,compresslevel=5);行或列存储模式列模式目前只支持AppendOnly如果常用的查询只取表中少量字段,则列模式效率更高,如查询需要取表中的大量字段,行模式效率更高语法:CREATETABLEsales2(LIKEsales)WITH(appendonly=true,orientation=column);ChinaConstructionBank.|23锁ChinaConstructionBank.|24停止活动的SQL查询查看要停止的SQL查询的进程ID执行select*frompg_stat_activity查看到当前数据库连接的IP地址,用户名,提交的查询等。(另外也可以在master主机上查看进程,对每个客户端连接,master都会创建一个进程。ps-ef|grep-ipostgres|grep-icon)##查询表是否被锁selectprocpid,t.*frompg_stat_activitytwhereusename=‘lds_betl’anddatname=‘ldsdb’andwaiting=‘t’;停止SQL:执行Selectpg_cancel_backend(procpid)或者Selectpg_terminate_b