比如int, char, varchar之类能够被散列的数据类型就是分区兼容性得,其他类似LOB, LF等类型不能被散列的就不是
对于并置,比如我有两个表A,B,其中A包含列c1 int, c2 char,B包含c1 varchar, c2 int
然后表A按照c1分区,表B按照c2分区,也就是说,当用户插入一行数据到表A,首先会对A.c1进行散列,然后模分区数量,把新的数据插入相应的分区,而对于表B则是对B.c2进行相同算法散列。
这样当查询select * from c1,c2 where A.c1=B.c2的时候,由于A.c1和B.c2的数据类型相同,使用相同的散列算法,如果A.c1与B.c2相等,那么他们肯定在同一分区,这样的话进行join的时候就不需要再分区间移动数据,只需要在本分区join完后向coord partition返回数据
|