OceanBase 数据库中每一个租户都拥有独立的 GTS 服务,GTS 也是一个多副本的高可用架构。
当分区 Leader 和租户 GTS 服务不在同一节点上, 一条多表查询 SQL 执行时 3ms 左右,其中访问 GTS 服务耗时约 500us 左右,那么什么情况下 SQL 会走 GTS?
在 OceanBase 数据库 V3.x、V4.x 版本下,对于执行 SQL 查询时需要访问 GTS 服务的条件有所不同。
- V3.x 版本,单分区读以外的 SQL 请求,均要访问 GTS。
- V4.x 版本,除 SQL 涉及了 1 个分区,或者涉及的多个分区均在在同一个日志流上之外,其他情况需要访问 GTS。
如何确认租户的 GTS 的 Leader 位置,可参考文档 如何确认每个租户的 GTS 的 Leader 位置。
规避方法
为了优化性能,建议将表 Leader 和 GTS Leader 绑到同机房,这样可以减少跨节点访问的延迟,提高 SQL 查询的效率和响应速度。
适用版本
OceanBase 数据库 V3.x、V4.x 版本。
适用的租户
OceanBase 数据库的 SYS 租户、MySQL 租户、Oracle 租户。