基于teradata的sql性能调优

基于teradata的sql性能调优

ID:9852947

大小:403.90 KB

页数:4页

时间:2018-05-12

基于teradata的sql性能调优_第1页
基于teradata的sql性能调优_第2页
基于teradata的sql性能调优_第3页
基于teradata的sql性能调优_第4页
资源描述:

《基于teradata的sql性能调优》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、基于的性能调优TeradataSQL宋轶(上海交通大学信息安全学院,上海200030)摘要:对Teradata数据仓库的系统架构做简单介绍,尤其是针对影响Teradata性能的底层因素进行必要的分析,并对实践过程中的遇到的常见问题进行总结和归纳,希望能给读者一些启发和帮助。关键词:Teradata;数据仓库;性能调节;数据倾斜引言Teradata作为数据仓库解决方案的领导者,给我们提供一个处理海量数据的平台。在拥有选择好一个良好的数据仓库平台后,从前期的咨询、实施,到后期的升级维护,都是极其重要的。需要强调的是,数据仓Teradata的数据存储及分布Teradata的数

2、据分布是整个系统范围内的数据分布,是跨AMP的数据分布,是针对每一个实体表的数据分布。AMP是Teradata数据库系统中具体数据的持有者和直接操作者,整个Teradata数据库系统中的每一条数据都唯一关联到某一个AMP上。同时,对于系统中的每个表,其数据都会依照哈希算法分布在系统中的全部AMP上,也就是说,在整个系统范围内容的所有AMP上,都有系统中的所有的实体表,只是同一个表在不同的AMP上实际存储的数据并不相同。在进行Teradata数据库的逻辑设计时,对于每一02库的维护,并不是单一靠硬件的升级来实现。容易忽略的是,随着数据的不断积累,日常的ETL过程和数据查询

3、都对数据仓库的性能产生很大的影响,因此也存在很大的优化空间。Teradata系统构架简介TeradataTeradata在整体上是按SharedNothing1架构体系进行组织的,能够高效并发操作。主要组件如图1所示。其系统的个表,都要指定一个“主索引”(PrimaryIndex,简称PI),Teradata数据库引擎会根据这个主索引的实际值,同时根据系统的配置情况(主要是AMP的个数),通过一种哈希算法,为每个表的每一条数据都生成一个“行哈希值”(RowHashValue),Teradata会根据这个行哈希值把数据分布到某一个确定的AMP上。根据哈希算法,对于不同的P

4、rimaryIndex值,可能会计算出相同的行哈希值,这些具有相同的行哈希值的数据行就会被分布在同一个AMP上。这样,如果哈希算法选择得当,则可以基本保证,同一个表中的数据在整个Teradata并行系统的多个AMP上的分布是趋于均匀的(参见图2)。Teradata}fi!"#$fi%"-.图1Teradata系统功能组件收稿日期:2009-05-25修稿日期:2009-07-26作者简介:宋轶(1982-),男,湖南人,工程硕士,研究方向为数据仓库1++234567,!/0fi%’()*Teradata&}AMPAMPAMPAMPBTNETMTDPMO‘IØfl¼fi³

5、LI³LITDPØfl¼fi计算方法:Eff=Sum(CPU)/(Sum(IO)/1000)该等式给出了每1000单位IO时CPU的消耗比,数值越小,表示性能越好。例如:查询一:1283CPUseconds,1.09mIOs–rationof6查询二:2568CPUseconds,2.09mIOs–rationof123.3并发度(ParallelEfficiency):是指某查询对整个系统的影响计算方法:PE=(TotalCPUTime/EffectiveCPUTime)*100%系统花在执行该查询语句上的TotalCPUTime:CPU时间总和。EffectiveC

6、PUTime:系统中最忙的一个AMP执行该语句所花的时间乘以系统AMP总数。实际上,并发度和倾斜度密切相关。一般来说,倾斜度越高,并发度就越低。反之亦然。图2Teradata的数据分布机制对于一个Teradata系统,其哈希算法是确定的,而且是运行时不可变的,在系统的硬件不变的前提下(AMP数不变),这就保证了对于同一个PrimaryIndex值,所生成的行哈希值也是相同的。因此,对于不同的表,尤其是有主-外键关联关系的表,通过慎重地定义PrimaryIndex,可以做到那些经常要进行关联(往往是主-外键关联)的行会被分布到同一个AMP上,这大大缩短了数据库进行数据关联

7、的时间,提高了Ter-adata系统的性能。反之,由于PI选择不当导致数据在各AMP上分布不均,就会影响系统性能。影响TeradataSQL性能的原因及解决方案在实践中,我们对影响Teradata系统性能的原因和解决方法,做了如下总结和归类。(1)表连接和子查询(TableJoinversusSubQuery)一般来说,使用表连接和子查询都能得到预期的数据结果,但是有些情况下,比如说要把相对较少的一部分数据从一个大的数据集中排除掉时,使用左外连接会有更好的性能。所以当SQL语句中有(Notin)/in/(Notexists)这样的语句时,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。