OceanBase
  • 产品
  • 解决方案
  • 客户
  • 合作伙伴
  • 资源与服务
  • 文档
  • 社区
云控制台登录 / 注册
  • 免费试用
本地部署
OceanBase 分布式数据库

首批通过分布式安全可靠测评,为关键业务系统打造

OceanBase 集中式数据库

集中式架构,兼具性能与成本优势的集中式数据库

OceanBase 社区版

兼容 MySQL 的单机分布式一体化开源数据库

OceanBase seekdb

为现代 AI 应用打造的开源混合搜索数据库

云上部署
OB Cloud

一体化云数据库,打造面向多云的一致性体验

一体机
OceanBase 数据库一体机

软硬一体,提供极致性能与高可靠性保障

OceanBase AI 一体机

基于 OceanBase AI Stack 的智能一体机

工具
迁移评估工具(OMA)
数据迁移工具(OMS)
开发者工具(ODC)
运维管理工具(OCP)
自治服务工具(OAS)
一体化关键能力
TP 事务处理

面向关键业务负载的事务处理能力,保障大规模业务稳定运行与数据零丢失

AP 实时分析

原生支持事务与分析融合,低延迟洞察业务数据,驱动智能决策与敏捷运营

AI 现代负载

湖库一体管理多模态数据离在线处理,AI 原生支撑 Agent 规模化应用

oceanbase白皮书

OceanBase 一体化分布式数据库

通用场景
全场景业务系统 OLTP
实时分析混合负载
异地多活
多基础设施部署
一站式传统数据库升级
混合云部署
一库多芯软硬件混合部署
分布式数据库单机部署
大存储类数据库降本
冷数据归档降本
多实例资源整合
分库分表一体化升级
高并发场景
数据中台
行业解决方案
国有大行和股份制银行核心系统解决方案
区域性银行核心系统解决方案
寿险核心系统解决方案
产险核心系统解决方案
资管交易类系统解决方案
资管 TA 清算类系统解决方案
运营商核心系统解决方案
人社核心系统解决方案
电力核心系统解决方案
行业专区
银行专区

助力银行完成各类核心业务系统升级

保险专区

寿险、产险核心系统升级的更佳选择

零售专区

助力200+零售行业客户规模化落地

DB 大咖说
oceanbase爱奇艺

百亿级卡券业务的“单库双擎”架构升级

oceanbase四川银行

800个测试用例选定分布式数据库

oceanbase太平洋保险

先难后易,核心系统数据库升级复盘

行业案例
oceanbase交通银行

核心数据库的“分布式革命”

oceanbase中国移动

B域核心CRM&BOSS近乎零改造分布式升级

oceanbase理想

打造领先的智能制造系统和自动驾驶体验

演讲实录
oceanbase中国联通

集团应用分布式数据库覆盖B/O/M域

oceanbase国泰海通

智能推送系统稳定支撑单日亿级消息处理量

oceanbase中国联合航空

中国首款机票盲盒背后的数据库力量

用户实践
oceanbase北京银行

最快速度完成40余套系统国产数据库升级

oceanbase维沃移动通信有限公司

替换 MySQL 分库分表,探索成本效益最优

oceanbase滴滴

数据库大规模运维体系建设及落地实践

合作伙伴
合作伙伴类型
联合解决方案
产业生态伙伴
经销商伙伴
技术服务伙伴
培训认证伙伴
生态联合解决方案
神州信息 x OceanBase 银行核心系统
长亮科技 x OceanBase 新核心系统
中电金信 x OceanBase 金融分布式核心系统
天阳科技 x OceanBase 贷记卡方案
易诚互动 x OceanBase 手机银行方案
恒生 x OceanBase UF3.0/O45/TA/估值方案
商业发行版
云树®数据库软件 ActionDB
服务
支持与服务
提交工单
软件下载
OceanBase 企业版
OceanBase 社区版
OB Cloud
学习
培训与认证
在线课堂
在线体验
开发者
开发者中心
资料
行业报告与白皮书
官方博客
年度发布会资料
开发者大会资料
oceanbase白皮书

金融核心系统数据库升级路径与场景实践

oceanbase白皮书

人社关键业务数据库一体化升级实践

产品文档
oceanbaseOceanBase 数据库
驱动和中间件
oceanbaseOB Cloud 云数据库
工具与组件
oceanbaseOceanBase 数据库一体机
生态商业产品
快速上手
OceanBase 数据库
OB Cloud 云数据库
知识库
汇聚常见产品使用问题案例
在线体验

Demo与实验,感受 OceanBase 的核心能力与应用场景

OceanBase 最佳实践
了解 OceanBase 分布式数据库的架构与系统原理
技术博客

技术解析 | 用户实践 | 社区月报

在线课堂

电子书 |视频课程|在线培训

Developer Hub
应用开发Demo | 数据开发与集成工具
问答论坛

快速答疑 | 常见问题 | 技术交流

社区活动

Meetup | 技术公开课

GitHub

查看源码 | 贡献代码 | 建议反馈

加入社区

社区组织 | 社区用户贡献 |开发者贡献

进入社区首页
oceanbase数据库大赛

第五届OceanBase数据库大赛

oceanbase免费课程
从故障处理到性能调优:OceanBase资深DBA进阶培训
切换语言
  • 中文站 - 简体中文
  • International - English
  • 日本站 - 日本語
文档反馈
  1. 文档中心
  2. OceanBase 数据库
  3. 分布式版
  4. V4.2.5
  5. 参考指南
  6. 系统原理
  7. 数据链路
  8. 数据库代理
  9. SQL 路由
分布式版-V4.2.5LTS
  • V4.2.5 文档更新记录
  • What's New
  • 简介
  • 快速上手
  • 应用开发
  • 部署
  • 升级
  • 数据迁移
  • 管理数据库
  • 参考指南
    • 系统原理
      • 数据库整体架构
      • 数据库的发展历程
      • 多租户架构
      • 数据库对象
      • 分布式数据库对象
      • 数据链路
        • 数据链路概述
        • 数据库代理
          • 代理概述
          • SQL 路由
          • 连接管理
          • ODP 配置管理
          • 日志与监控
        • 数据库驱动
      • 用户接口和查询语言
      • 事务管理
      • 存储架构
      • 数据可靠性和高可用
      • 数据库安全
      • OBServer 节点架构
    • 系统管理
    • 数据库对象管理
    • 数据库设计规范和约束
    • SQL 参考
    • 系统视图
    • 配置项和系统变量
    • 错误码
    • 性能调优
    • 性能测试
    • 数据库代理
    • 驱动
    • 平台产品
    • 组件 & 工具
  • 常见问题
  • 版本发布记录
  • 术语
  1. 文档中心
  2. OceanBase 数据库
  3. 分布式版
  4. V4.2.5
  5. 参考指南
  6. 系统原理
  7. 数据链路
  8. 数据库代理
  9. SQL 路由

SQL 路由

更新时间:2026-04-15 17:16:59

github-fill编辑
编组分享

ODP 会充分考虑用户请求涉及的副本位置、用户配置的读写分离路由策略、OceanBase 数据库多地部署的最优链路,以及 OceanBase 数据库各机器的状态及负载情况,将用户的请求路由到最佳的 OBServer 节点,最大程度的保证了 OceanBase 数据库整体的高性能运转。

开始阅读本节内容之前,您可以先了解一些路由相关的概念,便于您更好的了解下面的内容。

  • Zone

  • Region

  • Server List

  • RS List

  • Location Cache

  • 副本

  • 合并

  • 强一致性读/弱一致性读

  • 读写 Zone

  • 分区表

  • 分区键

OceanBase 数据库执行计划

执行计划分为三种:Local 、Remote 、Distribute。ODP 的作用主要是尽量避免 Remote 计划(效率低,性能差),将路由尽可能准确变为 Local 计划。

ODP 路由作用

理解了上述 可用区/Region/分区/副本的基本概念和物理含义后,就能理解 ODP 的路由思路了。从分区的设计到其物理分布,以及本地执行计划的高效性考虑,ODP 需要尽可能对 SQL 进行准确路由,主要过程将经历:SQL 解析、分区计算、分区信息获取、副本策略选择等。

非分区表路由

非分区表可以直接利用 Location Cache 中的副本信息。ODP 保存了分区和 OBServer 节点地址的映射,通过解析 SQL 中的表名,根据表名查询 ODP 缓存中的分区对应的机器 IP。缓存的有效性,有以下三种情况:

  • 缓存中找不到,此时需要访问 OBServer 节点查询最新映射并缓存。

  • 缓存中存在但不可用,此时需要重新去 OBServer 节点查询并更新。

  • 缓存中存在且可用,此时可以直接使用。

分区表路由

分区表的路由相比非分区表而言,增加了分区 ID 及其相关的计算和查询过程。在获取了 Location Cache 后,分区表需要继续判定表的一级/二级分区,根据不同分区键类型和计算方式,计算分区 ID 并获取对应主备副本信息。

做分区计算时,通过表结构可以得知分区键及其类型,之后通过解析 SQL 语句获取对应分区键的值,并根据表结构和分区键类型做分区计算,从而能转发到对应分区所在的机器。

正常情况下,通过分区计算,ODP 可以将 SQL 路由到分区对应的机器上,从而避免 Remote 执行,提升效率。在 ODP V3.2.0 版本,已针对分区表且无法计算分区路由的场景进行优化,由随机选择租户的机器路由,优化成随机从分布了分区的机器中随机路由,提升命中率,尽可能减少 Remote 执行。

副本路由选择(常规部署)

对于强一致性读,且 SQL 指定了表名,将路由到该表对应分区的 Leader 的 OBServer 节点;对于弱一致性读、登录认证请求、强一致性读但没有指定表名等情况,存在主备均衡路由(默认)、备优先路由、不合并备优先路由这三种路由策略。

主备均衡路由(默认)

将按照以下优先级进行路由选择:

  1. 相同 Region,相同 IDC(同一个数据中心),不在合并状态的节点。

  2. 相同 Region,不同 IDC(不同的数据中心),不在合并状态的节点。

  3. 相同 Region,相同 IDC(同一个数据中心),正在合并状态的节点。

  4. 相同 Region,不同 IDC(不同的数据中心),正在合并状态的节点。

  5. 不同 Region,不在合并状态的节点。

  6. 不同 Region,正在合并状态的节点。

备优先路由

常规部署下,支持备优先读策略。通过用户级别的系统变量 proxy_route_policy 控制,仅在常规部署和弱一致性读的情况下生效,优先读 Follower 而非主备均衡路由。

在常规模式部署和弱一致性读时,设置 set @proxy_route_policy='follower_first';,路由将优先发往备节点,即使 OBServer 节点处于正在合并状态。将按照以下优先级进行路由选择:

  1. 相同 Region,相同 IDC,不在合并状态的备节点。

  2. 相同 Region,不同 IDC,不在合并状态的备节点。

  3. 相同 Region,相同 IDC,正在合并状态的备节点。

  4. 相同 Region,不同 IDC,正在合并状态的备节点。

  5. 相同 Region,相同 IDC,不在合并状态的主节点。

  6. 相同 Region,不同 IDC,不在合并状态的主节点。

  7. 不同 Region,不在合并状态的备节点。

  8. 不同 Region,正在合并状态的备节点。

  9. 不同 Region,不在合并状态的主节点。

  10. 不同 Region,正在合并状态的主节点。

不在合并的备优先路由

常规部署下,弱一致性读,设置 set @proxy_route_policy='unmerge_follower_first'; 时,路由将优先发往不在合并的备节点。将按照以下优先级进行路由选择:

  1. 相同 Region,相同 IDC,不在合并状态的备节点。

  2. 相同 Region,不同 IDC,不在合并状态的备节点。

  3. 相同 Region,相同 IDC,不在合并状态的主节点。

  4. 相同 Region,不同 IDC,不在合并状态的主节点。

  5. 相同 Region,相同 IDC,正在合并状态的备节点。

  6. 相同 Region,不同 IDC,正在合并状态的备节点。

  7. 不同 Region,不在合并状态的备节点。

  8. 不同 Region,不在合并状态的主节点。

  9. 不同 Region,正在合并状态的备节点。

  10. 不同 Region,正在合并状态的主节点。

强制发送到只读副本的路由

常规部署下,弱一致性读,设置 set @proxy_route_policy='FORCE_READONLY_ZONE'; 时,路由将所有的只读请求不会转发到非只读副本。其规则如下:

  • 弱读请求:路由到只读副本中的节点。
  • 非弱读请求:报错 4007,该路由规则下不允许非只读请求,如果业务确实需要发送非只读请求,请将变量 ob_route_policy 的值设置为其他的规则。

其他

常规部署下,弱一致性读,当 proxy_route_policy 变量取其他值时,路由选择将退化为普通的弱一致性读主备均衡路由策略,即主备均衡路由(默认)。

副本路由选择(读写分离部署)

即使用了只读副本的部署模式。读写分离部署时,不存在备优先读的路由策略,路由依赖系统变量 ob_route_policy。主要存在以下几种情况:

  1. 对于强一致性读语句,且 SQL 指定了表名,那么直接路由到该表涉及的分区的 Leader 的 OBServer 节点执行。

  2. 对于强一致性读语句,SQL 为"select 不指定表名/use database/set session 级别系统变量"时,忽略 Zone 属性,此时等同于常规部署下的主备均衡路由(默认)。

  3. 对于强一致性读语句,不包含登录认证请求,且去除 1 & 2 场景的请求,将按照以下策略进行路由:

    1. 相同 Region,相同 IDC,不在合并状态的读写 Zone 中的节点。

    2. 相同 Region,不同 IDC,不在合并状态的读写 Zone 中的节点。

    3. 相同 Region,相同 IDC,正在合并状态的读写 Zone 中的节点。

    4. 相同 Region,不同 IDC,正在合并状态的读写 Zone 中的节点。

    5. 不同 Region,不在合并状态的读写 Zone 中的节点。

    6. 不同 Region,正在合并状态的读写 Zone 中的节点。

本文目录

OceanBase 数据库执行计划ODP 路由作用非分区表路由分区表路由副本路由选择(常规部署)主备均衡路由(默认)备优先路由不在合并的备优先路由强制发送到只读副本的路由其他副本路由选择(读写分离部署)
有帮助
无帮助
反馈
AI

OceanBase

OceanBase 海扬数据库始创于 2010 年,是完全自主研发的数据库公司。2020年开始独立商业化运作,历经15年大规模核心场景验证,目前是中国数据库的领军企业之一。从分布式数据库到 AI 数据库,为企业提供安全、稳定、可扩展的数据底座,推动数据基础设施全面拥抱 AI 时代。

关于我们

关于 OceanBase最新动态资质荣誉客户专家委员会招贤纳士合作伙伴年度发布会开发者大会

资源与服务

支持与服务文档知识库软件与工具下载培训与认证在线体验数据库专题视频

社区

快速上手开发者中心博客活动学习问答GitHub

数据库百科

分布式数据库国产数据库OLTP 数据库OLAP 数据库HTAP 数据库数据库向量数据库向量检索

联系我们

服务热线:
400-109-0633
商务咨询
培训认证技术支持媒体合作
京公网安备11010802047223号京公网安备11010802047223号
京ICP备20024574号-1
合字B1.B2-20250395
网站服务协议隐私协议安全响应协议
OceanBase 版权所有 © 2026 基础资源和备案服务由阿里云提供