备集群各个分区的全功能型副本或者只读副本会实时回放 REDO 日志,并且能够承载读服务。OceanBase 数据库支持单分区读和跨分区一致性读,始终保证读取结果是一个快照,从而保证事务的一致性。

由于不同分区以及不同副本的回放进度不同,默认情况下,可能导致先后两次读取的数据版本出现回退的情况。因此,OceanBase 数据库提供了单调读开关。开启单调读开关后,内部会维护租户级别单调递增的可读版本号,每次读取时都会获取全局最新的可读版本号作为快照版本,保证读取的数据越来越新,不会回退。

同时,OceanBase 数据库支持有界旧(Bounded Staleness)一致性读,保证读取的数据不会落后于主集群最新数据的特定时间,默认为 5 秒。如果备集群落后超过阈值,则读操作会重试等待,直到超时或者备集群追上。

备集群的普通租户仅支持弱一致性读,如果发起强一致性读、写或者 DDL 操作,则会报错。

可以通过以下两种方式来指定备集群的弱一致性读:

  • 在 SQL 语句中指定 Hint

    如下所示,指定 WEAK Consistency,优先级高于 。

  • enable_monotonic_weak_read:单调读开关,默认为 False。

设置方法如下:

登录备集群的系统租户,调整特定租户或者所有租户的配置项。

  • 为所有租户或者特定租户开启单调读