---
title: "原理介绍 - 数据库代理  V4.3.2 | OceanBase 文档中心"
description: 原理介绍 背景介绍 ODP 为用户提供了数据库接入和路由功能，您直接连接 ODP 就可以正常使用 OceanBase 数据库。在使用数据库功能时，ODP 和 OBServer 节点进行交互，且交互流程透明，连接管理就是该交互过程中的关键点之一。 特性 ODP 的连接管理有如下三个特性： 代理特性：ODP 既是客户端，…
---
切换语言

- 中文站 - 简体中文
- 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/500.connection-management/100.overview-of-connection-management.md)  

## 背景介绍

ODP 为用户提供了数据库接入和路由功能，您直接连接 ODP 就可以正常使用 OceanBase 数据库。在使用数据库功能时，ODP 和 OBServer 节点进行交互，且交互流程透明，连接管理就是该交互过程中的关键点之一。

## 特性

ODP 的连接管理有如下三个特性：

1. 代理特性：ODP 既是客户端，也是服务端，还需要保证交互行为符合 MySQL 协议规范。
 2. 功能特性：ODP 实现了很多的连接功能特性，如访问不同集群、不同租户，再如支持主备库、分布式下的 PS 功能，以及兼容 kill、show processlist 等命令。
 3. 高可用特性：ODP 可以处理超时、机器状态变化、网络状态变化等问题，屏蔽后端异常，让用户无感知。

## 连接映射关系

OceanBase 数据库不同于单机数据库，当通过客户端与单机数据库建立连接时，客户端与数据库之间只有一个物理连接，如下图所示。

![单机数据库](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odp/V4.2.1/zh-CN/500.connection-management/1.jpg)

当通过 ODP 与 OceanBase 数据库建立连接时，客户端与 ODP 之间存在一个物理连接，而 ODP 与 OBServer 节点间可能存在多个物理连接，如下图所示。其中 Client 与 ODP 的连接称为客户端连接，ODP 与 OBServer 节点间的连接称为服务端连接。

![分布式数据库](https://obbusiness-private.oss-cn-shanghai.aliyuncs.com/doc/img/odp/V4.2.1/zh-CN/500.connection-management/2.png)

当客户端所访问的数据存在于不同 OBServer 节点上时，ODP 会与 OceanBase 数据库建立多个物理连接并管理复用这些连接，在客户端视角看来仅存在一个逻辑连接。ODP 基于此可以提供多种功能特性，比如主备库分离、读写分离、分区表数据路由、分布式 PS、屏蔽后端异常等等。

## 连接功能特性

ODP 将连接的映射关系改变为 M:N，因此有些连接功能需要额外处理。举例说明：通过 `show processlist` 命令查看连接数时，希望看到的是客户端和 ODP 之间的连接数，而不是 ODP 与 OceanBase 数据库间的连接数。

下面我们对常见的连接功能展开详细介绍。

- 连接粘性

  ODP 还未实现所有功能的状态同步，如事务状态、临时表状态、cursor 状态等。对于这些功能，ODP 只会将后续请求都发往状态开始的节点，这样就不需要进行状态同步，而缺点是无法充分发挥分布式系统的优势。因此，ODP 将根据功能重要程度，逐步支持相关功能的分布式化。
 - `show processlist` 和 `kill` 命令配套使用

  `show processlist` 命令用于展示客户端和服务端之间的连接，对于 ODP 来说，`show processlist` 命令只展示客户端和 ODP 之间的连接，不展示 ODP 和 OBServer 节点之间的连接。

  `kill` 命令用于断开一个客户端连接，客户端连接关闭后，ODP 也会关闭对应的服务端连接。对于 ODP 的 `kill` 命令，需要先获取对应的 ID（使用 `show processlist` 命令即可获取 ID）。
 - 负载均衡影响

  因为 ODP 对 `show processlist` 和 `kill` 命令做了处理，所以 `show processlist` 和 `kill` 命令只有都发往同一台 ODP 才能正常工作。

  在公有云等环境，ODP 前面有负载均衡，负载均衡后面挂在多个 ODP 上，此时，如果执行 `show prcesslist` 和 `kill` 命令是两个不同的连接，负载均衡组件可能将请求发往不同的 ODP，在这种情况下，建议不要使用相关命令。

 上一篇 下一篇 ![有帮助](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) 咨询热线
