




已阅读5页,还剩98页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Greenplum数据库开发基础 2014年10月 目录 Greenplum概述和数据分布 数据加载和外部表 客户端工具 Greenplum数据库基础 Greenplum与Oracle 优化策略 其他要点及示例 MPP架构 MPP MassivelyParallelProcessing Shared NothingArchitecture MPP无共享架构的优势 数据分布在所有的并行节点上每个节点只处理其中一部分数据最优化的I O处理所有的节点同时进行并行处理节点之间完全无共享 无I O冲突自动化的并行处理机制内部处理自动化并行 无需人工分区或优化加载与访问方式与一般数据库相同最易于扩展的架构BI和数据分析的最佳选择增加节点实现线性扩展增加节点可线性增加存储 查询和加载性能 Greenplum基本架构 MPP MassivelyParallelProcessing Shared NothingArchitecture NetworkInterconnect MasterSeversQueryplanning dispatch SegmentSeversQueryprocessing datastorage SQLMapReduce ExternalSourcesLoading streaming etc Greenplum的并行处理特性 并行处理由系统自动完成 无需人工干预所有数据均匀分布到所有节点 每个节点都计算自己的部分数据 所以并行处理无需人工干预 系统自动完成 无需复杂的调优需求 只需要加载数据和查询DBA工作量极少 无需复杂的调优工作和维护工作 扩展性可线性扩展到10 000个节点每增加一个节点 查询 加载性能都成线性增长客户端访问及第三方工具支持完全支持数据库技术接口标准 例如 SQL ODBC JDBC OLEDB等 同时 广泛地支持各个BI和ETL软件工具 Greenplum基本体系架构 客户端接口和程序 psqlpgAdminIIIODBC DatadirectJDBCPerlDBIPythonlibpqOLEDB MasterHost 访问系统的入口建立与客户端的连接和管理SQL的解析并形成执行计划执行计划向Segment的分发收集Segment的执行结果协调工作处理过程Master不存储业务数据 只存储系统目录表和元数据 数据字典 Segment 每段 Segment 存放一部分用户数据一个系统可以有多段用户不能直接存取访问所有对段的访问都经过Master用户查询SQL的执行 Interconnect Greenplum数据库之间的连接层进程间协调和管理基于千兆以太网架构属于系统内部私网配置支持两种协议 TCPorUDP Greenplum高可用性体系架构 Master Standby镜像保护 Standby实时与Master节点的Catalog和事务日志保持同步Standby节点用于当PrimaryMaster节点损坏时提供Master服务 数据冗余 Segment镜像保护 每个Segment的数据冗余存放在另一个Segment上 数据实时同步当PrimarySegment失败时 MirrorSegment将自动提供服务PrimarySegment恢复正常后 使用gprecoverseg F同步数据 表分布的策略 并行计算的基础 Hash分布CREATETABLE DISTRIBUTEDBY column 同样数值的内容被分配到同一个Segment上循环分布CREATETABLE DISTRIBUTEDRANDOMLY具有同样数值的行内容并不一定在同一个Segment上 分布键 DistributionKeys 用于将数据平均分布到Segments之中的一个或者多个字段用表的主键作分布键可以使数据分布均匀建表时使用DISTRIBUTEDBY子句定义表的分布键CREATETABLEsales dtdate prcfloat qtyint cust idint prod idint vend idint DISTRIBUTEDBY dt cust id prod id 如果表没有主键 或者没有合适的字段作为分布键 可以使用随机分布键 DISTRIBUTEDRANDOMLY 如果没有明确定义分布键 系统会把第一个字段作为表的分布键 分布存储 数据均匀分布 并行处理的关键 Order 策略 数据尽可能的均匀分布到每个节点 查询命令的执行 SQL查询处理机制 并行查询计划 SELECTcustomer amountFROMsalesJOINcustomerUSING cust id WHEREdate 04302008 压缩存储和行列存储 压缩存储支持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 锁 停止活动的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 backend procpid 或者在MASTEROS killprocpid注 极端情况下 kill不能停止SQL时 采用kill 11停止进程千万不要使用kill 9 该操作导致数据库崩溃 生产系统请不要采用kill操作 表分区的概念 将一张大表逻辑性地分成多个部分 如按照分区条件进行查询 将减少数据的扫描范围 提高系统性能 提高对于特定类型数据的查询速度和性能也可以更方便数据库的维护和更新两种类型 Range分区 日期范围或数字范围 如日期 价格等List分区 例如地区 产品等Greenplum中的表分区在使用中具有总表的继承性 并通过Check参数指定相应的子表分区的子表依然根据分布策略分布在各segment上分区是一种非常有用的优化措施 例如一年的交易按交易日期分区后 查询一天的交易性能将提高365倍 DataDistribution Partitioning Segment1A Segment1B Segment1C Segment1D Segment2A Segment2B Segment2C Segment2D Segment3A Segment3B Segment3C Segment3D Jan2005 Feb2005 Mar2005 Apr2005 May2005 Jun2005 Jul2005 Aug2005 Sep2005 Oct2005 Nov2005 Dec2005 每个分区表的数据平均分布到各个节点 表分区可减少数据的搜索范围 提高查询性能 FullTableScanVS PartitionPruning SELECTCOUNT FROMordersWHEREorder date Oct202005 ANDorder date Oct272005 VS HashDistribution HashDistribution TablePartitioning 表分区示意图 Range分区 CREATETABLEorders order idBIGINT order dateTIMESTAMP order modeVARCHAR 8 customer idNUMERIC 6 order statusNUMERIC 2 order totalNUMERIC 8 2 sales rep idNUMERIC 6 promotion idNUMERIC 6 DISTRIBUTEDBY customer id PARTITIONBYRANGE order date START 2005 12 01 END 2007 12 01 EVERY interval 1year START 2007 12 01 END 2008 12 01 EVERY interval 1month START 2008 12 01 END 2008 12 08 EVERY interval 1day START 2008 12 08 END 2008 12 09 EVERY interval 1hour List分区 CREATETABLErank idint rankint yearint genderchar 1 countint DISTRIBUTEDBY id PARTITIONBYLIST gender PARTITIONgirlsVALUES F PARTITIONboysVALUES M DEFAULTPARTITIONother Multi level分区 CREATETABLEsales trans idint datedate amountdecimal 9 2 regiontext DISTRIBUTEDBY trans id PARTITIONBYRANGE date SUBPARTITIONBYLIST region SUBPARTITIONTEMPLATE SUBPARTITIONusaVALUES usa SUBPARTITIONasiaVALUES asia SUBPARTITIONeuropeVALUES europe START date 2008 01 01 INCLUSIVEEND date 2009 01 01 EXCLUSIVEEVERY INTERVAL 1month DEFAULTPARTITIONoutlying dates 修改表分区 ALTERTABLE ALTERPARTITION DROPPARTITION TRUNCATEPARTITION RENAMEPARTITION ADDPARTITION EXCHANGEPARTITION SPLITPARTITION SETSUBPARTITIONTEMPLATEEg ALTERTABLEfooEXCHANGEPARTITIONFOR RANK 1 WITHTABLEbar Querythecatalog SELECTpartitiontablename partitionlevel partitionrank partitionrangestart partitionrangeend partitioneveryclauseFROMpg partitions 目录 Greenplum概述和数据分布 数据加载和外部表 客户端工具 Greenplum数据库基础 Greenplum与Oracle 优化策略 其他要点及示例 外部表加载 外部表的特征Read only数据存放在数据库外可执行SELECT JOIN SORT等命令 类似正规表的操作外部表的优点并行方式加载ETL的灵活性格式错误行的容错处理支持多种数据源两种方式ExternalTables 基于文件WebTables 基于URL或指令 基于外部表的高速数据加载 利用并行数据流引擎 Greenplum可以直接用SQL操作外部表数据加载完全并行 外部表加载的特征 并行数据加载提供最好的性能能够处理远程存储的文件采用HTTP协议每个gpfdist可达到200MB s数据分布率gpfdist文件分发守护进程启动 gpfdist d var load p8080 l home gpadmin log 外部表加载异常处理 加载正常数据并捕获格式异常的数据 比如 缺少某些属性的行属性数据类型错误无效的字符集编码不符合约束PRIMARYKEY NOTNULL CHECKorUNIQUEconstraints外部表错误处理可选子句 LOGERRORSINTOerror table SEGMENTREJECTLIMITcount ROWS PERCENT PERCENTbasedongp reject percent thresholdparameter 例子CREATEEXTERNALTABLEext customer idint nametext sponsortext LOCATION gpfdist txt FORMAT TEXT DELIMITER NULL LOGERRORSINTOerr customerSEGMENTREJECTLIMIT5ROWS COPYSQL命令 PostgreSQL命令支持数据加载和数据卸载加载大量数据的最佳方法串行加载所有行 非并行 从文件或者标准输入读取加载数据和外部表一样支持错误处理EXAMPLECOPYmytableFROM data my WITHCSVHEADER 文件生成在Master COPYmytableFROM data my WITHCSVHEADER 文件生成在本地 COPYcountryFROM data gpdb country data WITHDELIMITER LOGERRORSINTOerr countrySEGMENTREJECTLIMIT10ROWS 数据加载性能优化提示 删除索引 加载完成后再重建加载完成后执行ANALYZE加载出错 DELETE UPDATE等操作之后执行VACUUM不要使用ODBCINSERT加载大量数据 目录 Greenplum概述和数据分布 数据加载和外部表 客户端工具 Greenplum数据库基础 Greenplum与Oracle 优化策略 其他要点及示例 客户端工具 pgAdmin3图形化管理和SQL执行 分析 监控工具psql行命令操作和管理工具 pgAdmin3forGPDB pgAdmin3是一款重要的PostgreSQL图形化管理和开发的开源管理工具 pgAdmin3forGPDB pgAdmin3forGPDB 监控活动session 同SQL select frompg stat activity 监控锁 从pg lock中获取信息可以停止正在运行的SQL PSQL 通过master建立连接连接选项databasename d PGDATABASE masterhostname h PGHOST masterport p PGPORT username U PGUSER ConnectToGPDBpsql hdb ip pport Udbusr vON ERROR STOP 1 ddatabaseeg psql h128 16 64 91 p5432 Ugpadmin vON ERROR STOP 1 dsordb 常用PSQL命令 helponpsqlmeta commands h helponSQLcommandsyntax dt showtables dtS showsystemtables dgor du showroles l showdatabases cdb name connecttothisdatabase q quitpsql Enterintoshellmode df showfunction dn showschema Setsearch path timing 目录 Greenplum概述和数据分布 数据加载和外部表 客户端工具 Greenplum数据库基础 Greenplum与Oracle 优化策略 其他要点及示例 数据库 ToCreate CREATEDATABASEorcreatedbToDrop DROPDATABASEordropdbToEdit ALTERDATABASEChangenameAssignnewownerSetconfigurationparametersPSQLTipsPSQL显示所连接的数据库EXAMPLE template1 superuser names non superuser Toshowalistofalldatabases lToconnecttoanotherdatabase cdb nameUsePGDATABASEenvironmentvariabletosetthedefaultdatabase Schema ToCreate CREATESCHEMAToDrop DROPSCHEMAToEdit ALTERSCHEMAChangenameAssignnewownerPSQLTipsToseethecurrentschema SELECTcurrent schema Toseealistofallschemasinthedatabase dnToseetheschemasearchpath SHOWsearch path Tosetthesearchpathforadatabase ALTERDATABASESETsearch pathTOmyschema public pg catalog 表 ToCreate CREATETABLEAdditionalDISTRIBUTEDBYorDISTRIBUTEDRANDOMLYclauseSomesyntaxnotsupportedToEdit ALTERTABLECannotalterdistributionkeycolumnsToDrop DROPTABLEPSQLTipsTolisttablesinthedatabase dtToseestructureofatable d table nameTolistsystemcatalogtables dtSTolistexternaltablesonly dxToseethedistributionkeycolumnsofatable dtable name 表和字段约束 CHECKtableorcolumnconstraintsNOTNULLcolumnconstraintsUNIQUEcolumnconstraintsOneallowedpertableUniquecolumnsmustalsobeindistributionkeyNotallowediftablealsohasaprimarykeyPRIMARYKEYtableconstraintsUsedasdistributionkeybydefaultFOREIGNKEYconstraintsdefinitionsaresupportedbutnotenforcedForeignkeyrelationshipsareutilizedbythequeryplannertoimprovequeryplans 视图 ViewSQLCommands CREATEVIEWDROPVIEWPSQLTips Tolistallviewswhileinpsql dvToseeaviewdefinition d view nameEXAMPLE CREATEVIEWtoptenASSELECTname rank gender yearFROMnames rankWHERErank 11 ANDnames id rank id SELECT FROMtoptenORDERBYyear rank 索引 在Greenplum数据库中应谨慎创建索引索引不一定都能优化查询应测试索引是否真正提升了性能删除没用的索引PRIMARYKEY索引会自动创建唯一性索引只能在分布键字段创建 索引 续 索引类型 B treeBitmap索引相关SQL命令 CREATEINDEXALTERINDEXDROPINDEXREINDEXPSQLTips 在PSQL显示所有索引 di显示索引定义 d index name大批量ETL加工最好不建索引 对性能提升作用不大B TREE适用每次通过单一字段筛选查询少量数据B MAP适用每次通过多个字段筛选查询大量数据 其他数据库对象 FunctionsandoperatorsSequencesTriggersTablespaces 数据类型 常用数据类型CHAR VARCHAR TEXTSmallint integer bigintNumeric real doubleprecisionTimestamp date timeBooleanArray类型 如integer 其它数据类型请参考 常用系统表及视图 所有系统表在pg catalogschema标准PostgreSQL系统表 pg 常用系统表 pg stat activitypg tablespg classpg attributepg namespace在psql显示所有系统表 dtSPsql显示所有系统视图 dvS其它catalog参考 函数 日期函数Extract day month year Fromdate Selectdate 1day interval date 1month intervalSELECTdate part day TIMESTAMP 2001 02 1620 38 40 Result 16SELECTdate trunc hour TIMESTAMP 2001 02 1620 38 40 Result 2001 02 1620 00 00pg sleep seconds 系统日期变量Current dateCurrent timeCurrent timestampNow Timeofday 在事务中发生变化 以上函数在事务中不变 函数 字符串处理函数Substr length lower upper trim replace positionrPad lpadTo char 字符串连接 substringlike simillarto 模式匹配 其它杂类Case When Coalescenullifgenerate seriesIn notin exists any all Built InFunctions SELECT MathematicalFunctions MathematicalFunctions Continued StringFunctions StringFunctions Continued DateFunctions 存储过程 Greenplum支持SQL PYTHON PERL C语言构建函数 以下着重介绍SQL存储过程 一个存储过程就是一个事务 包括对子过程的调用都在一个事务内存储过程结构 CREATEFUNCTIONsomefunc RETURNSintegerAS DECLAREquantityinteger 30 BEGINRETURN END LANGUAGEplpgsql 赋值给一个变量或行 记录赋值用下面方法 identifier expression例子 user id 20 执行一个没有结果的查询 PERFORMquery 一个例子 PERFORMcreate mv cs session page requests mv my query 存储过程请参考 存储过程 动态SQLEXECUTEcommand string INTO STRICT target SELECTINTOExample SELECTIDINTOVAR IDFROMTABLEA获取结果状态GETDIAGNOSTICSvariable item 一个例子 GETDIAGNOSTICSinteger var ROW COUNT SQL返回变量SQLERRM SQL出错信息 SQLSTATE SQL执行返回状态编码 控制结构IF THEN ELSEIF THEN ELSELOOP EXIT CONTINUE WHILE FOR从函数返回有两个命令可以用来从函数中返回数据 RETURN和RETURNNEXT Syntax RETURNexpression 设置回调EXECSQLWHENEVERconditionaction condition可以是下列之一 SQLERROR SQLWARNING NOTFOUND 存储过程 异常处理EXCEPTIONWHENunique violationTHEN donothingEND 忽略错误 EXCEPTIONWHENOTHERSTHENRAISENOTICE anEXCEPTIONisabouttoberaised RAISEEXCEPTION NUM DETAILS SQLSTATE SQLERRM END 错误和消息RAISElevel format expression Level Info 信息输入Notice 信息提示Exception 产生一个例外 将退出存储过程Example RAISENOTICE Callingcs create job v job id OVER PARTITIONBY Example SELECT row number OVER FROMsaleORDERBYcn SELECT row number OVER PARTITIONBYcn FROMsaleORDERBYcn OVER ORDERBY Example SELECTvn sum prc qty FROMsaleGROUPBYvnORDERBY2DESC SELECTvn sum prc qty rank OVER ORDERBYsum prc qty DESC FROMsaleGROUPBYvnORDERBY2DESC vn sum rank 40 2640002 130 180 250 0 320 0 310 0 3 5rows vn sum 40 264000230 18050 020 010 0 5rows 事务 事务将多个语句捆绑为 all or nothing 操作事务相关命令BEGINorSTARTTRANSACTIONENDorCOMMITROLLBACKSAVEPOINTandROLLBACKTOSAVEPOINTPsql中设置自动提交模式 setautocommiton off 目录 Greenplum概述和数据分布 数据加载和外部表 客户端工具 Greenplum数据库基础 Greenplum与Oracle 优化策略 其他要点及示例 数据类型 Greenplum与Oracle比较 1 Greenplum与Oracle比较 2 Greenplum与Oracle比较 3 Greenplum与Oracle比较 4 Greenplum与Oracle比较 5 Greenplum与Oracle比较 6 目录 Greenplum概述和数据分布 数据加载和外部表 客户端工具 Greenplum数据库基础 Greenplum与Oracle 优化策略 其他要点及示例 查看执行计划 查看sql执行计划的命令 EXPLAINEXPLAINANALYZE查看执行计划 一般从最后面往上查看以下命令可能会包含Gather Redistribute Broadcast等操作JoinsSortsAggregations 每步操作给出如下度量 cost unitsofdiskpagefetches rows rowsoutputbythisnode width bytecountofthewidestrowproducedbythisnode 执行计划 EXPLAIN 执行计划 EXPLAINANALYZE 优化策略 1 1 数据分布 选用合适字段作为DistributionKey DK 尽量做到平均分布Selectgp segment id count fromtablenamegroupby1 例1 优化策略 2 2 尽量选择常用连接条件或Groupby列作为DistributionKey 最好只用一个字段作为DK 并且DK列的distinct值越多越好 例2 insertintotablec auction id select fromtablealeftjointalbebontablea selid tablec id 优化前耗时120秒优化方式 将tablea的DistributionKey改为selid tableb的改为id tablec的DistributionKey改为auction id优化后耗时88秒 提升了32秒修改DK的语法 ALTERTABLEnameSETDISTRIBUTEDBY column ALTERTABLEnameSETWITH REORGANIZE true 3 采用Createtable代替Insertinto 尽量对中间过程使用临时表 数据库内有很多表都是全量更新的 因此可以用Createtable来代替Insertinto 性能能够大幅提高 例2中的SQL 改成Createtabletablecas select fromtablealeftjointablebontablea selid tablec id distributedby auction id 优化后耗时为65秒 提升了13秒 优化策略 3 4 定期收集统计信息和执行Vacuum定期收集统计信息 可以优化SQL执行路径 sytax analyzetable 数据加载后执行Vacuum 或者采用重创建表的方式来释放垃圾数据 可以提高SQL效率 对系统的数据字典也需要定期做vacuum由于GPDB使用的是MVCC事务并发模型 被删除或更新的数据行依然占据着物理磁盘空间 即便它们对于新的事务已经不可见 如果数据库有大量的更新和删除 会产生大量过期记录 VACUMM命令还会收集表级别的统计信息 如行数和页面数 ANALYZE命令收集查询规划器需要用到的列统计信息 VACUUM和ANALYZE操作可以在同一个命令中一起运行 例 VACUUMANALYZEmytable 5 SQL合并在Greenplum中 建议将多个表的join和嵌套子查询SQL适当合并为一个SQL实现 可以减少IO 达到提高性能的目的 6 列存储和数据压缩 可以提高SQL查询效率 7 尽量避免用exists和notin语法 可以改成join和leftjoin方法实现尽量避免在用where条件中使用or语法 可以用Union带代替 8 高并发查询下 可以用分区和索引来加快速度 可以用setenable seq scan off来强制使用索引 索引不宜太多 会增加explain的时间 另外 对于join的表 可以用明确的方式减少explain时间 避免因为多表关联plan时间 优化策略 4 9 尽量避免创建索引一般来说 在Greenplum中索引对于多表的join是没有性能提升的 优化方法 删除这类索引 可以提高数据加载的性能 10 使用索引对值比较类型的SQL进行优化 Select fromaccess loga ip tablebwherea ip b min ipanda ip b max ipA表 千万级B表 几万行在A表上建立IP的b tree索引可以提高系统效率11 表分区提高查询效率12 Truncate代替deleteall 避免Vacuum处理 优化策略 5 例12 Demo1 Vacuumanalyze优化Table1 100万条数据createtabletable1 t1integer t2varchar distributedrandomly Table1 1千条数据createtabletable2 t1integer t2varchar distributedrandomly 执行SQL selecta b fromtable1a table2bwherea t1 b t1 优化策略 6 未作vacuumanalyze前 Vacuumanalyze后 说明 对小表做Broadcast到所有节点 比对大表做redistribution更好性能知识点 greenplum中有三种数据的移动操作 A BroadcastMotion N N 即广播数据 每个节点向其他节点广播需要发送的数据 B RedistributeMotion N N 重新分布数据 利用join的列值hash不同 将筛选后的数据在其他segment重新分布 C GatherMotion N 1 聚合汇总数据 每个节点将join后的数据发到一个单节点上 通常是发到主节点master 优化策略 7 13 DK优化 相同DK表关联性能更高createtabletable1 t1integer t2varchar distributedby t1 createtabletable2 t1integer t2varchar distributedby t1 t2 执行SQL selecta b fromtable1a table2bwherea t1 b t1 优化策略 8 修改table2的DK createtabletable2 t1integer t2varchar distributedby t1 说明 两个表的DK相同 节省了做Redistribution的消耗 优化策略 9 需要说明的是 DK需要顺序相同 类型相同 才能避免redistribution 例如 CREATETABLEtest t1integer t2charactervarying 10 DISTRIBUTEDBY t1 CREATETABLEtest1 t1integer t2charactervarying 10 DISTRIBUTEDBY t2 select fromtesta test1bwherea t1 b t2两个表都要做重分布 优化策略 10 14 批量数据处理后 无论成功与否 都应该进行vaccumanalyze analyze prefixion tar table key list analyze prefixion tar table 15 对于大表的UNION操作 请用UNIONALL加groupby进行改写16 嵌套查询操作 尽量改写成连接查询操作17 大表更新操作 尽量通过外连接 插入 truncate进行替代18 大表删除操作 尽量通过外连接 插入 truncate进行替代19 尽量避免进行存储过程函数嵌套导致锁冲突 考虑使用其它语言进行总体调度 比如shell java c等 20 尽量避免在数据库中使用序列 游标 循环 考虑对数据进行整体操作 21 避免高度频繁的建表删表操作 容易造成字典破碎和字典锁的问题 因此可以通过临时表和其它语言方式替代 22 检查大表的hash键定义是否可以保证每个segment存储均匀 数据处理均匀 以及大表连接操作过程中可以尽量避免motion操作 优化策略 11 23 运行较大操作时 不建议使用pgadmin客户端完成操作 建议写成shell脚本在后台进行测试 避免频繁不正常中断操作 对整个开发产生影响24 尽量避免不正常中断操作 如需不正常中断操作 请使用函数pg cancel backend函数 并耐心等待3 5分钟 再继续相关操作 避免造成数据字典破坏 目录 Greenplum概述和数据分布 数据加载和外部表 客户端工具 Greenplum数据库基础 Greenplum与Oracle 优化策略 其他要点及示例 注意事项 新一代数据仓库GP数据库字符集 UTF8关于NULL 不等于NULL表级授权尽量选择常用连接条件作为DistributionKey大批量ETL加工最好不建索引 对性能提升作用不大Truncate代替deleteall 避免Vacuum处理尽量避免在数据库中使用游标 循环避免高度频繁的建表删表操作要特别注意Greenplum数据库设计开发运行规范检查点中的强制条款 Exercise distribution Createtemptabletestas select1 integer generate series 1 100 t2 没有设置DKselectgp segment id count fromtestgroupby1orderby1 分布不均匀Createtemptabletest1as select1 integer generate series 1 100 t2 distributedby t2 设置DKselectgp segment id count fromtest1groupby1orderby1 分布均匀Createtemptabletest2as select1 integer generate series 1 100 t2 distributedrandomly 随机分布selectgp segment id count fromtest2groupby1orderby1 分布均匀 Exercise redistribution Createtemptabletest1as select1 integert1 generate series 5000 15000 t2 distributedby t2 Createtemptabletest2as select1 integert1 generate series 1 10000 t2 distributedby t2 ExplainSelectcount fromtest1ainnerjointest2bona t2 b t2 no用DK做关联条件 不会重
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46000-2025节水型企业木材加工及其制品行业
- 青岛邮政考试题库及答案
- 电信资源考试题库及答案
- 森林防火业务知识培训
- 森林灭火水泵培训知识课件
- 2025年无机化学反应生产高级专业技能面试题解析
- 2025年教育行业教师招聘面试技巧及模拟题解答手册
- 《机械员》考试题库附完整答案(典优)
- 2025江苏省安全员《B证》考试题库及答案
- 2025年公共经济理论与实践能力测试模拟题集及答案详解
- 勉县一中小升初数学试卷
- 2025一建《建设工程经济》计算、时间、数字考点笔记
- 校园基孔肯雅热防控措施课件
- 生猪屠宰兽医卫生检验人员理论考试题库及答案
- 实测实量测量表格优质资料
- 读书笔记 -《提高利润的78个方法》
- GB/T 14273-1993旋转轴唇形密封圈性能试验方法
- GB/T 12247-2015蒸汽疏水阀分类
- 期权风险管理课件
- 《护理伦理学》教学大纲(本科)
- 板带轧机刚度对热轧板形的影响
评论
0/150
提交评论