---
title: "数据库连接池配置 - OceanBase 数据库 V4.3.0 | OceanBase 文档中心"
description: 数据库连接池配置 数据库连接池配置是确保系统与数据库高效、稳定连接的重要步骤。合理的连接池设置不仅可以有效管理数据库连接数量，避免由于高并发导致的连接耗尽问题，还可以通过合理的超时设置，及时清理无效连接，确保系统性能。 本文将介绍连接池参数的建议设置以及 JDBC 配置的重要参数，以帮助开发者优化数据库访问。 连接池…
---
切换语言

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

文档反馈![](https://mdn.alipayobjects.com/huamei_22khvb/afts/img/A*P8CuR4UJ_FkAAAAAAAAAAAAADiGDAQ/original) OceanBase 数据库分布式版 - V 4.3.0

# 数据库连接池配置

更新时间：2026-04-10 11:58:35

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.0/zh-CN/300.develop/100.application-development-of-mysql-mode/100.connect-to-oceanbase-database-of-mysql-mode/1400.use-the-database-connection-pool-of-mysql-mode/100.database-connection-pool-configuration-of-mysql-mode.md)  

数据库连接池配置是确保系统与数据库高效、稳定连接的重要步骤。合理的连接池设置不仅可以有效管理数据库连接数量，避免由于高并发导致的连接耗尽问题，还可以通过合理的超时设置，及时清理无效连接，确保系统性能。

本文将介绍连接池参数的建议设置以及 JDBC 配置的重要参数，以帮助开发者优化数据库访问。

## 连接池参数

## 连接池设置建议

- 管控台日常 min 保持两个连接即可，具体根据业务并发及事务时间来调整。
 - 设置连接空闲超时时间，推荐 30 分钟。

  MySQL 默认 8 小时连接主动断开，客户端无法感知，导致存在脏连接。连接池可以通过心跳、testOnBorrow 等机制来校验连接是否存活，当超过这个时间连接没有使用直接断开。

## JDBC 配置参数

JDBC 重要的几个参数，一定需要设置。均可以设置到连接池的 ConnectionProperties 中，或者 JdbcUrl 上。具体参数及其说明如下表所示。

| 参数 | 说明 |
| --- | --- |
| socketTimeout | 定义了网络 Socket 超时，以毫秒为单位。值为 0 时，表示没有超时限制。也可以通过设置系统变量 `max_statement_time` 来限制查询时间。默认值：0（标准配置）。 |
| connectTimeout | 连接超时值，以毫秒为单位。值为 0 时，表示没有超时限制。默认值：30000。 |

### JDBC 配置示例

本文介绍 JDBC 配置示例。

在使用 JDBC 进行数据库连接的时候，需要配置相关参数来获得数据库使用的最佳性能。这里推荐一些相关参数的配置。

JDBC 连接示例如下：

```java
conn=jdbc:oceanbase://xxx.xxx.xxx.xxx:3306/test?rewriteBatchedStatements=TRUE&allowMultiQueries=TRUE&useLocalSessionState=TRUE&useUnicode=TRUE&characterEncoding=utf-8&socketTimeout=10000&connectTimeout=30000

```

在此连接中，涉及到的配置参数如下：

- `rewriteBatchedStatements`：建议设置为 TRUE。

     - OceanBase 的JDBC 驱动在默认情况下会无视 executeBatch() 语句，把批量执行的一组 SQL 语句拆散，一条一条地发给数据库，此时批量插入实际上是单条插入，直接造成较低的性能。要想实际执行批量插入，需要将该参数置为 TRUE， 驱动才会批量执行 SQL。即使用 addBatch 方法把同一张表上的多条 insert 语句合在一起，做成一条 insert 语句里的多个 values 值的形式，提高 batch insert 的性能。
     - 必须使用 prepareStatement 方式来把每条 insert 做 prepare，然后再 addBatch，否则不能合并执行。
 - `allowMultiQueries`：建议设置为 TRUE。

  JDBC 驱动允许应用代码把多个 SQL 用分号（;）拼接在一起，作为一个 SQL 发给 server 端。
 - `useLocalSessionState`：建议设置为 TRUE，避免交易频繁向 OB 数据库发送 session 变量查询 SQL。

  session变量主要为：autocommit，read_only 和 transaction isolation。
 - `socketTimeout`：执行 SQL 时，socket 等待 SQL 返回的时间。
 - `connectTimeout`：建立连接时，等待连接的时间。
 - `useCursorFetch`：建议设置为 `TRUE`。

  对于大数据量的查询语句，数据库 Server 会建立 Cursor 并根据 FetchSize 的大小向 Client 分发数据。这个属性设为 `TRUE`，会自动连带设置 `useServerPrepStms=TRUE`。
 - `useServerPrepStms`：控制是否使用 PS 协议来把 SQL 发送给数据库 server。

  设置为 `TRUE` 时，SQL 在数据库内会分为两步执行：

     - 把包含 `？`的 SQL 文本发送到数据库 Server 做 Prepare（`SQL_audit: request_type=5`）；
     - 用真实 Value 在数据库内做 Execute（`SQL_audit: request_type=6`）。
 - `cachePrepStmts`：控制 JDBC driver 是否开启 PS cache 来缓存 PreparedStatment，避免重复执行 prepare（client 端和 server 端）。`cachePrepStmts=TRUE` 对使用 `useServerPrepStms=TRUE` 并重复对同一条 SQL 做 batch execute 的场景有帮助。每一次 batch excecute 都会包含 preare 和 `executecachePrepStmts=TRUE` 可以避免重复的 prepare 操作。
 - `prepStmtCacheSQLLimit`：可以放入 PS cache 的 SQL 的长度限制，超长 SQL 不可放入缓存。prepStmtCacheSize：PS cache 可以保存的SQL数量。
 - `maxBatchTotalParamsNum`：针对 batch 操作，一条 SQL 最多能支持多少个参数（即 batch 中 `?` 的个数）。如果参数个数大于限制，batch SQL 将会被拆分。

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