注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

风轻扬

活着就是为了追求幸福

 
 
 

日志

 
 
关于我

关注互联网应用架构、分布式与海量数据处理技术、云计算、数据库技术

网易考拉推荐

PostgreSQL 8.3数据存储新特性预览  

2007-06-10 08:03:36|  分类: PostgreSQL |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
同为开源数据库,MySQL几乎从来就不公布下一版本的开发计划,让我们这些关注的人干着急。这方面 PostgreSQL就好得多,不但有长期的TODO List,最近将要发布的版本要做哪些修改和增强也写得清清楚楚。根据PostgreSQL的规划,下一个在的版本更新8.3版将于今年7月中旬发布,其中将包含众多数据存储层的新特性和功能增强,我们且抢先来看。

一、索引组织表
我在《从对数据访问扭曲的适应性评价PostgreSQL与InnoDB》一文中已经提到PostgreSQL的堆文件存储无法实现任何形式的数据聚簇性,对很多应用不利。但8.3版本的PostgreSQL将提供部分索引组织表功能,在一定程度上解决上述问题。索引组织表的实现思路是在插入记录时尽量将新记录插入到与其具有相似主键值的记录所在页面上。为做到这一点,执行器在插入记录之前会要求索引推荐插入位置,并将这一信息传递给堆文件插入过程。堆文件插入时优先考虑将记录插入到指定的位置。

二、GIT
GIT即Grouped Index Tuples,这一功能原来是在基于PostgreSQL的EnterpriseDB中实现的,目前正准备加入到PostgreSQL中。GIT是一种索引压缩技术,其原理是对同一个堆页中物理顺序与索引序相同的一组记录在索引中只记录一条记录的索引。这就是说如果一个堆页是完全按索引序聚簇的,在索引中只有一个索引项而已。有点将堆页用作索引的叶节点的意思。实际中这一技术不知道效果怎么样,作者本身也说在DBT-2基准测试中(也就是TPCW)一开始可以大大减少IO,但随着时间的推移,越来越多的记录更新导致数据的聚簇性最差后效果就逐渐消失了。另外用了这个就别想什么"Coverage Index"优化了。

三、HOT Patch
HOT即Heap Overflow Tuple,这一补丁的目的是减少UPDATE带来的性能问题。我们知道PostgreSQL在执行UPDATE的时候是插入一个新版本,在PostgreSQL原来的实现中,这一新版本存储位置与原版本没有任何关系,这样不利于实现数据的聚簇性来提交性能。HOT Patch的基本思想是使用单独的溢出区域来存储某些UPDATE产生的新版本,当原来的版本无效后将这一新版本移动到原存储位置,使得数据的聚簇性得到保持。还有一些优化,如当被更新记录所在页面有空闲空间时将新版本也存储在这一页面上,此外还加入了一些消除版本链、记录链和行级碎片整理等功能。但当前的实现中进行HOT UPDATE的限制很严格,只有在没有任何索引键被更新,且记录的大小没有发生变化时才可使用这一技术。

四、DSM增强
VACUUM,又是VACUUM,VACUUM总是PostgreSQL中争议最多的技术。虽然这一技术为多版本的实现带来了非常大的简化,但性能问题也很突出。因此在PostgreSQL中为VACUUM所做的优化就从来没有停止过,这次的DSM也是冲着VACUUM来的。DSM即Dead Space Map,即用于记录哪些页面包含无效版本的一个位图。这些位图用于指导VACUUM的执行流程,因此DSM的实现策略对VACUUM的性能有很大影响。作者表示新的DSM管理模块(已经是第三个版本了)能够加快VACUUM的速度。

由于8.3还未发布,因此上面的说的这些特性并不一定会出现在8.3版本中,或者实现上也有可以有所修改。这些功能中索引组织表和HOT Patch无疑是重量级的,目的都是为了解决我以前说过的数据聚簇性的问题。但受PostgreSQL框架所限,这些特性目前仍是相当不完善的。比如索引组织表并不是强制性的实现数据聚簇,尤其是对数据聚簇的程度仍然没有任何保证,因此实际中的效用很大程度上将取决于应用模式。HOT Patch的思路有点类似于Falcon,将新的版本存储在特殊区域,而后再合并到主存储区的,但目前条件限制多多。我估计在以后的版本中应当还会对这些技术加以增强。

顺带再说一下原来曾经计划在8.3中加入的位图索引功能已经被延迟至8.4版本了。

  评论这张
 
阅读(1395)| 评论(4)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017