ITPub博客

首页 > Linux操作系统 > Linux操作系统 > db2的表分区的一点资料zz

db2的表分区的一点资料zz

原创 Linux操作系统 作者:wangchenfeng 时间:2009-01-10 11:44:01 0 删除 编辑
1.在定义好的节点组上创建表空间;
2.在DB2的表空间中的表的数据不能指定存放在节点组的特定节点上。它是根据分区键的HASH算法来分布到各个组上的。
3.DB2 SQL的执行方式是,当一个SQL请求来了之后,DB2分析SQL请求的分区键条件是位于那些分区上的,然后将该SQL请求拆分成多个SQL发送到各自的节点上去。而在每个节点上执行SQL请求的时候使用的是节点自身存储的索引,对一个SQL查询来说索引的搜索效率与性能是最有关系的,在每个节点的索引只包括了本节点包含的表数据的索引,因此其索引量比未分区前要少的多。在各个子SQL执行完毕后,DB2将结果集拼装起来返回给用户。
4.可以看到在DB2中分区键的存放方式是以HASH算法来分布的,一般来说建议使用高基数的字段(拥有多个不同值)来作为分区键,这样可以使数据被平均分布,容易利用节点组中所有的节点资源来执行查询操作。
5.至于要达到你说的目的,在查询的时候只去访问一个节点来进行查询,当然也是可以的。我们来看一个例子:如果一个节点组上拥有10个节点,而作为分区键的字段MIXINT只有5个不同值的话,那么根据HASH算法,只有五个节点上会被分布到数据,这样可以得出一个结论,当节点组中节点的数目大于或等于分区键中的不同值的数目的时候,在各个节点上不会出现不同的分区键,即每个节点上至多只有一个分区键的数据。但是这样的数据分布对查询的性能的帮助并不是最大,应该说有一个好处就是便于进行数据的维护。那么你可以指定多个字段做为分区键,一个高基数,一个低基数,这样既能够达到数据的分布的合理化,又能够使性能提升。
6.你想要达到的目的,可能是由于使用Oracle的时候的理解,在DB2中,使用将一个SQL分发到多个节点上进行查询以提高效率,而不是去限制查询数据的范围来提高性能。应该说这是达到性能提高的两个方面,个人认为分区中平均分配数据的方式比在分区中存储单键值的分区方式在对抗数据分布情况比较恶劣的情况下要好,例如假如数据数目对于你的分区键值按照正态分布的时候,指定多个分区键来平均分配数据将获得一个平稳的性能。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/117819/viewspace-536275/,如需转载,请注明出处,否则将追究法律责任。

上一篇: db2查看执行计划
请登录后发表评论 登录
全部评论

注册时间:2008-12-21

  • 博文量
    6
  • 访问量
    46746