---
title: "JDBC 配置示例 - OceanBase 数据库 V4.3.4 | OceanBase 文档中心"
description: JDBC 配置示例 本文介绍 JDBC 配置示例。 在使用 JDBC 进行数据库连接的时候，需要配置相关参数来获得数据库使用的最佳性能。这里推荐一些相关参数的配置。 JDBC 连接示例如下： conn=jdbc:oceanbase://xxx.xxx.xxx.xxx:3306/test?rewriteBatchedS…
---
切换语言

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

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

# JDBC 配置示例

更新时间：2024-11-18 20:26:46

[编辑](https://github.com/oceanbase/oceanbase-doc/edit/V4.3.4/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/900.jdbc-connection-pool-configuration-example-of-mysql-mode.md)  

本文介绍 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) 咨询热线
