---
title: "数据路由影响因素 - 数据库代理  V4.3.2 | OceanBase 文档中心"
description: 数据路由影响因素 在介绍 ODP 的路由原理前，首先讨论下路由需要考虑的影响因素，方便更好地理解后面的内容，以及评价一个路由功能的好坏。本文将从功能、性能和高可用三个因素展开介绍。 功能因素 本节以 Prepared Statements 功能为例说明功能对路由的影响。Prepared Statements 执行主要…
---
切换语言

- 中文站 - 简体中文
- International - English
- 日本站 - 日本語

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*nSAhQbrBXKwAAAAAAAAAAAAADiGDAQ/original) 数据库代理 V 4.3.2

# 数据路由影响因素

更新时间：2026-04-14 17:41:09

[编辑](https://github.com/oceanbase/oceanbase-proxy-doc/edit/V4.3.2/zh-CN/600.data-routing/100.influence-factor.md)  

在介绍 ODP 的路由原理前，首先讨论下路由需要考虑的影响因素，方便更好地理解后面的内容，以及评价一个路由功能的好坏。本文将从功能、性能和高可用三个因素展开介绍。

## 功能因素

本节以 Prepared Statements 功能为例说明功能对路由的影响。Prepared Statements 执行主要有以下两个步骤：

1. 执行 PREPARE 操作，如发送 SQL `select * from t1 where c1 = ?`
 2. 执行 EXECUTE 操作，传递 select 语句使用的数据，并执行 select

步骤 2 是依赖于步骤 1 的，假设执行情况如下图所示，当 OBServer2 节点收到步骤 2（ EXECUTE）的请求后，并不知道步骤 1（PREPARE）请求的内容，这时，OBServer2 节点就会报错（优雅做法）或断连接（粗暴做法）。

![PS执行图](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odp/V4.2.1/zh-CN/600.data-routing/1.png)

对于这种问题，常见的解决办法有两种。

- 方法一：记录 PREPARE 路由到的节点 OBServer1，EXECUTE 请求继续路由到 OBServer1 节点；该方法实现简单，但无法发挥分布式系统的优势。
 - 方法二：在执行 EXECUTE 前，将 PREPARE 的状态同步给 OBServer2 节点，参考 [会话状态同步](https://www.oceanbase.com/docs/common-odp-doc-cn-1000000001600970)；该方法需要 ODP 同步连接状态，实现复杂，但可以利用分布式系统的优势，目前 ODP 正是采用该方法。

![解决办法](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odp/V4.2.1/zh-CN/600.data-routing/2.png)

## 性能因素

高性能是 OceanBase 数据库的重要特性，路由对性能的影响主要是延迟，即网络通信开销。ODP 通过感知数据分布和机器地理位置降低网络通信开销，提高整体性能。

- 数据分布

  数据分布主要影响执行链路的跳数，最佳情况是 ODP 路由时直接命中数据所在的节点。此处以 SQL 语句 `select c1 from test` 为例说明数据分布对性能的影响。如下图所示，t1 表的数据分布在 OBServer1 节点上面，路由方式 1 直接路由到 OBServer1 节点，效率最高；路由方式 2 将 SQL 语句发给了无 t1 表数据的 OBServer2 节点，OBServer2 节点再进行路由转发给 OBServer1 节点，相比方式 1 而言性能变差。为了实现路由方式 1 的路由，ODP 需要感知 SQL 和表数据分布。

  ![路由方式](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odp/V4.2.1/zh-CN/600.data-routing/3.png)
 - 机器地理位置

  机器地理位置主要影响网络延迟，当选择了一个远端节点后，SQL 执行会变慢，有时网络延迟的时间比数据库执行时间要大很多。因此，对于不同地理位置的机器，ODP 选择优先级是：同机房 > 同城不同机房 > 不同城市。

## 高可用因素

高可用因素是指 OceanBase 数据库对机器故障有容忍能力，让故障对应用透明无感知。高可用涉及故障探测、黑名单机制、重试逻辑等内容。ODP 发现 OBServer 节点故障后，路由时会排除故障节点，选择健康节点，对于正在执行的 SQL 也有一定的重试能力。

有关高可用的内容请参考 [高可用机制](https://www.oceanbase.com/docs/common-odp-doc-cn-1000000001601003)。

 上一篇 下一篇 ![有帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*y6ocSqN8cqsAAAAAAAAAAAAAARQnAQ)![无帮助](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*BG9IQJyLHF8AAAAAAAAAAAAAARQnAQ)![反馈](https://gw.alipayobjects.com/mdn/ob_asset/afts/img/A*eTWdQKCRKHwAAAAAAAAAAAAAARQnAQ)[AI](https://www.oceanbase.com/obi) 咨询热线
