关于 OceanBase 的位置缓存(Location Cache)机制,以下描述正确的是?

A. Location Cache 仅缓存分区副本所在的 OBServer 节点信息,不缓存 Leader 的位置,Leader 信息通过每次请求实时获取。

B. 当 ODP 或 OBServer 收到 SQL 请求时,首先查询本地 Location Cache 获取目标分区的 Leader 位置;如果缓存缺失或失效,则会向 Root Service 发起远程请求获取最新位置信息并更新缓存。

C. Location Cache 的更新是实时的,一旦集群中发生 Leader 切换或副本迁移,所有节点的 Location Cache 会在毫秒级内自动同步,无需主动失效。

D. 用户可以通过 ALTER SYSTEM FLUSH LOCATION CACHE 命令手动清空指定租户的 Location Cache,该操作会短暂阻塞该租户的所有请求。

3 个赞

解析
OceanBase 中,ODP 和 OBServer 都维护了 Location Cache,用于缓存分区的副本分布及 Leader 位置。当需要路由请求时,首先查找本地缓存;如果缓存未命中或缓存条目已过期(如心跳发现节点异常),系统会向 Root Service 发送 GET_LOCATION 请求拉取最新的位置信息,并更新到本地缓存中。这种设计减少了对 Root Service 的频繁访问,提升了路由效率。

  • A 错误 :Location Cache 既缓存副本分布,也缓存 Leader 位置 ,两者都是路由的关键信息。
  • B 正确 :描述符合 Location Cache 的工作流程。
  • C 错误 :Location Cache 的更新是被动且最终一致 的。Leader 切换后,需要通过查询失败(如收到 not master 错误)或定期心跳来触发刷新,并非毫秒级实时自动同步。
  • D 错误ALTER SYSTEM FLUSH LOCATION CACHE 确实可以手动清空缓存,但不会阻塞租户请求 。清空后,后续请求会重新从 Root Service 获取位置,可能短暂增加延迟,但不会阻塞。
6 个赞

正确答案:B

4 个赞

very good

3 个赞

加油加油

3 个赞

不错不错

1 个赞

支持一下

so good