love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

Phone:18180207355 提供专业Oracle/MySQL/PostgreSQL数据恢复、性能优化、迁移升级、紧急救援等服务

OceanBase系列之–分区表

本站文章除注明转载外,均为本站原创: 转载自love wife love life —Roger的Oracle/MySQL/PostgreSQL数据恢复博客

本文链接地址: OceanBase系列之–分区表

这是Oceanbase学习系列第2篇文章;重点测试一下ob对于分区表的支持情况(注意我这里测试均为ob的oracle模式);供大家参考。

首先我们来看下对于分区的支持有哪些:

从文档来看,OB目前支持hash,range,key 3种分区方式(其中key就类似list分区);同时也支持复合分区(即二级子分区);我们今天先来测试一下普通分区的情况。

1)key分区(list)测试

我们可以发现ob能够很好支持list分区,同时也支持分区的drop操作;但是不支持truncate分区操作。同时如何存在default 分区的情况下,也无法进行add partition操作.另外对于分区的drop,默认是不会存放到回收站的。也就是说ob的flashback table功能无法支持分区表(至于flashback database行不行,稍后再测试).

另外可以看到,sql语句条件指定分区键,执行计划会进行分区裁剪;需要注意的是分区编号默认从p0开始。

2) range分区测试

可以看到,目前ob2.2版本还不支持max分区。那么是否支持global或者local 索引呢?

这里不知道为什么,居然查不到 ?看来ob的oracle模式数据字典方面兼容性还不够好。

那么对于global index的支持呢?

发现ob居然不支持add 主键约束,当然是分区情况下。最后查看官方文档发现语法有差异:

可以看到不支持add primary key,但是可以add unique index。另外从命令上来看也不支持move partition操作。不过总的来说功能也还算完善了。而且还在支持invisable index呢? 这可是Oracle 11g才有的新功能。

3) hash分区测试

从SQL语法上来讲,几乎跟Oracle partition一致,这一点很赞。这下Oracle dba可以无缝切换了。 在进行数据insert时,我strace了一下observer进程,我们来看看情况。

不难看出ob这里使用了异步IO;但是每一笔交易都必须刷日志落盘到clog. clog即commit log.  OB这里的写模式看起来很特殊,后面再研究一下。 最后我们来看看ob 的oracle兼容模式下,hash分区的数据是否均衡.

下看起来每个hash分区的数据分布并不够均匀。怀疑是测试方式不太对,我再次进行了测试。

从第二次测试来看数据分布仍然非常不均衡,不知道为什么?知道的朋友请指正一下,谢谢!

这里针对前面的简单测试总结一下:

1)  ob能够较好的支持list,key,hash分区模式;

2)  对于分区的drop操作,回收站是不起作用的;另外不支持truncate partition和move partition操作;

3)  部分兼容Oracle的dba视图看上去数据不太对,说明兼容性还需要提高;

4)  SQL条件带分区键,SQL执行时会直接进行分区裁剪,这是标准的分区支持功能;

5)  hash分区的数据分布不太均衡,不知道是我的测试方式不对还是是单副本的缘故?

总的来说对oracle的兼容说还不错,还支持了不少的dba_xxx视图,而且ob也有00600错误,???? ~~~~Oracle dba们可以无缝切换啦!

 

Leave a Reply

You must be logged in to post a comment.