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

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

Oceanbase系列之–索引&分区索引测试

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

本文链接地址: Oceanbase系列之–索引&分区索引测试

前面2篇文章重点测试了oceanbase 2.2版本对于分区的支持情况。这里重点测试一下索引和分区索引相关的内容。

首先来看下官方文档(2.1版本) 对于index 相关语法的介绍:

不得不说官方文档写的太过于简洁。。。。下面开始测试。

++测试local索引

我这里表实际上是有重复数据;看上去没有明显的提示。下面重建一个表定义好主键列再试试:

从上述测试来看,定义了主键列的话,可以成功创建local 分区索引。对于全局索引的话,默认都是全局非分区索引。那么ob支持全局分区索引吗?

从上面测试来看,对于全局分区索引,oceanbase几乎跟Oracle一致,首先你也指定分区键,同时引用的分区键必须是前导列。

我们都知道对于local index索引,Oracle 在表进行DDL时会进行自动维护,而global index 是需要收工维护的或者使用using update global indexes关键字。

那么oceanbase 是否也是这样呢 ?

我们可以看到oceanbase目前暂时不支持truncate partition。同时如果分区表存在全局index的话,也不允许进行drop partition操作

当我们drop global index之后,可以成功drop partition。同时也可以看到,ob能够自动维护local 分区索引,其状态仍然是valid.

听说oceanbase 还支持invisible index(不可见索引),我知道这是Oracle 11g版本才引入的新特性。这里我们继续测试一下ob对于你invisible index的支持情况。

可以看到,手工将index 设置为visible之后;优化器可以识别到index。不过大家可以可以看到,ob这个讲index设置为visible的操作非常别扭呀。。。

最后再次测试了unique index local,发现是支持的,可能是之前测试的表违反了唯一性条件,而ob的报错提示几乎没有,就提示依据failed。

可见,创建空表的情况下,unique local index是没任何问题的,因此此时没有重复数据。

+++函数索引支持测试

从上面的执行计划来看似乎并没用到这个索引,仍然走了filter. 看来ob对于函数索引的支持还有一定缺陷

+++是否支持位图索引

从上面的测试来看,似乎语法都还不支持,因此应该是不支持bitmap index的。

最后我们来总结一下Oceanbase 2.2版本对于索引相关的支持情况:

1. 支持local 分区索引(包括local unique index)
2. 支持global 分区索引和非分区索引,但索引列必须是主键列或者包含分区前导列;
3. 不支持对分区表进行truncate操作;
4. 支持分区表的drop 操作.
5. 当分区表上存在global partition index时,不允许进行drop 分区操作;这一点跟oracle差别很大;
6. 对分区进行drop操作后,local 分区索引会自动维护,这一点跟oracle类似。
7. 支持函数索引,从执行计划看似乎无法使用,可能只是语法上支持,实质功能还有欠缺。
8. 不支持bitmap index。
9. 支持invisible index,对于index的visible操作语法跟Oracle有很大区别,比较别扭。
10. 从测试来看ob对于相关error提示非常不明确,比如前面测试的数据重复,创建unique index失败,没有太明显的提示,这方面有待加强。

Leave a Reply

You must be logged in to post a comment.