Oceanbase 索引分区及使用

【产品名称】

Oceanbase

【产品版本】

【问题描述】

OB的数据表(主表)无论是否是分区表,都默认有3个副本,并且主副本根据Primary_zone的定义分布在不同的OBserver上,实现了高可用和负载均衡。

但是对于索引来说也这种副本机制吗? 我的理解是没有的,不知道对不对。如果真的没有的话就会存在一系列的可用性问题,即当一个OBserver宕机后,这个server上的主副本数据可以被通过paxos协议在其他的OBserver重新选出的新主副本替代,但原来的主副本自己的局部索引,或者全局分区索引呢?如果它们没有自己的副本的话怎么保证新选出的主副本有可用的索引呢,新的访问效率如何保障呢?

原文地址:https://open.oceanbase.com/docs/observer-cn/V3.1.2/10000000000016149


OceanBase 数据库主要涉及如下索引类型:

  • 局部分区索引:在创建索引时指定关键字LOCAL的索引为局部索引,局部索引无须指定分区规则,它的分区属性和主表的属性一致,也会跟随主表的分区操作而发生变更。
  • 全局分区索引:在创建索引时指定关键字 GLOBAL的索引为全局索引,全局索引可以按照分区规则进行分表。
  • 唯一索引:索引键值具有唯一性,用关键字 UNIQUE表示。
  • 前缀索引:当分区索引表的分区键是索引列的左前缀时,该索引称为前缀索引。这不同于 MySQL 长字符串的前缀索引。例如,索引表 IDX 建立在 c1 和 c2列上,如果该索引表的分区键为 c1,那么该索引称为前缀索引;如果该索引表的分区键为 c2或者其他列,则称为非前缀索引。
  • 非前缀索引:相对于分区前缀索引而言,如果分区索引不是前缀索引,那么称为非前缀索引。


你好!

    谢谢你的回复!不过你并没有回答我的问题。我并不是不知道OB的索引有哪些类型,而是想知道OB的索引有没有副本机制! 如果没有副本机制的话,在OBserver发生宕机的时候,新选出的主副本虽然可以对外服务,但由于没有对应的索引,原来的访问计划就无法得到正常执行。请问OB针对这种场景是怎么应对的?

对于底层来说索引也是数据,一样有副本。

看一下索引介绍,里边很明确写了全局分区索引,也是一份数据一样,这就是你说的有分区,多副本存储。