PostgreSQL JDBC 连接参数大全

PostgreSQL JDBC 驱动提供了非常丰富的连接参数,允许你精细地控制连接行为、性能和安全设置。这些参数通常以 URL 参数的形式传递,格式为:

sql 复制代码
jdbc:postgresql://host:port/database?param1=value1&param2=value2&...

或者通过 Properties 对象设置。

下面是一个分类整理的参数大全,包含常用参数和许多高级参数。


一、 基础连接参数

参数名 描述 示例值 默认值
user 连接数据库的用户名 myuser -
password 连接数据库的密码 mypass -
database 要连接的数据库名(也可以在 URL 路径中指定) mydb 与用户名相同
host 数据库服务器地址(也可以在 URL 主机部分指定) localhost localhost
port 数据库服务器端口(也可以在 URL 端口部分指定) 5432 5432
sslmode SSL 连接模式,控制安全级别 disablerequireverify-caverify-full prefer
ssl 已废弃,建议使用 sslmode truefalse false

二、 连接池与超时控制

参数名 描述 示例值 默认值
loginTimeout 建立连接的超时时间(秒) 10 0(无限)
connectTimeout 建立 TCP 连接的超时时间(秒) 10 0(无限)
socketTimeout Socket 读操作的超时时间(秒)。0 表示禁用。 60 0(无限)
tcpKeepAlive 是否启用 TCP Keep-Alive truefalse false
cancelSignalTimeout 取消命令的超时时间(秒) 10 10
loadBalanceHosts 在多个主机间随机选择连接,而不是按顺序。 truefalse false
targetServerType 指定希望连接到哪种类型的服务器。 anymasterslavepreferSlave any

三、 性能与网络相关

参数名 描述 示例值 默认值
application_name 设置客户端应用名称,在 pg_stat_activity 中可见 MyApp -
readOnly 将连接设置为只读模式 truefalse false
prepareThreshold 一个语句被执行多少次后会被服务器端预处理 5 5
preparedStatementCacheQueries 每个连接预编译语句缓存的大小 256 256
preparedStatementCacheSizeMiB 预编译语句缓存的最大内存(MB) 5 5
defaultRowFetchSize 设置从游标中一次获取的行数,影响 ResultSet 性能 100 0(一次性获取所有)
receiveBufferSize TCP 接收缓冲区大小(字节) -1(使用系统默认) -1
sendBufferSize TCP 发送缓冲区大小(字节) -1(使用系统默认) -1
binaryTransfer 是否使用二进制格式传输数据(某些类型) truefalse true
binaryTransferEnable 为指定数据类型启用二进制传输 oid1,oid2,... -
binaryTransferDisable 为指定数据类型禁用二进制传输 oid1,oid2,... -
stringtype 当设置 PreparedStatementsetString 方法时,如何对待参数。 unspecifiedvarchar unspecified

四、 日志与调试

参数名 描述 示例值 默认值
loggerLevel 设置 JDBC 驱动的日志级别 OFFDEBUGTRACE OFF
loggerFile 指定日志输出文件 /tmp/pgjdbc.log -
logUnclosedConnections 当连接未被关闭而被垃圾回收时,是否记录警告 truefalse false
allowEncodingChanges 是否允许在连接过程中改变客户端编码 truefalse false
debugLevel 已废弃,请使用 loggerLevel - -

五、 SSL/TLS 安全相关

参数名 描述 示例值 默认值
sslcert 客户端 SSL 证书文件路径 /path/to/client.crt -
sslkey 客户端 SSL 私钥文件路径 /path/to/client.pk8 -
sslpassword 客户端 SSL 私钥的密码(如果有) keypassword -
sslpasswordcallback 用于获取私钥密码的类名(实现 PGPropertyPasswordCallback com.myapp.CustomPasswordCallback -
sslrootcert SSL CA 证书文件路径,用于验证服务器证书 /path/to/root.crt -
sslfactory 自定义 SSLSocketFactory 类名 com.myapp.CustomSSLSocketFactory -
sslfactoryarg 传递给自定义 SSLSocketFactory 的参数 arg -
sslhostnameverifier 自定义 HostnameVerifier 类名 com.myapp.CustomVerifier -
sslmode (再次强调) 控制 SSL 行为的安全级别 verify-full prefer

六、 认证与 Kerberos

参数名 描述 示例值 默认值
gsslib 使用 GSSAPI 认证时,选择使用原生实现还是纯 Java 实现 autosspi(Windows), gssapi(Unix) auto
jaasApplicationName JAAS 配置的登录模块名 pgjdbc pgjdbc
jaasLogin 是否使用 JAAS 登录 truefalse true
kerberosServerName Kerberos 服务主体名称 postgres postgres
useSpnego 是否使用 SPNEGO 进行 GSSAPI 认证 truefalse false

七、 其他高级参数

参数名 描述 示例值 默认值
currentSchema 设置连接后的默认模式(schema) my_schema public
options 在连接启动时发送给后端的命令行选项 -c statement_timeout=10000 -
assumeMinServerVersion 假定服务器至少是这个版本,绕过某些版本检测 9.010.5 -
protocolVersion 强制使用特定的前后端协议版本 23 0(自动)
readOnlyMode 已废弃,使用 readOnly - -
disableColumnSanitiser 禁用列名的大小写转换(转为小写) truefalse false
autosave 当语句执行失败时(如 "cached plan must not change result type"),自动重试的策略。 conservativeneveralways never
cleanupSavepoints 在事务提交/回滚后是否自动释放保存点 truefalse false
reWriteBatchedInserts 将批量插入 insert into foo values(1),(2),(3)... 重写为更高效的 insert into foo values (1),(2),(3)... truefalse false

使用示例

1. URL 方式
java 复制代码
String url = "jdbc:postgresql://localhost:5432/mydb?"
    + "user=myuser&password=mypass"
    + "&sslmode=verify-full"
    + "&sslrootcert=/path/to/ca.crt"
    + "&defaultRowFetchSize=100"
    + "&application_name=MyApp"
    + "&connectTimeout=10"
    + "&socketTimeout=60";
Connection conn = DriverManager.getConnection(url);
2. Properties 方式
java 复制代码
String url = "jdbc:postgresql://localhost:5432/mydb";
Properties props = new Properties();
props.setProperty("user", "myuser");
props.setProperty("password", "mypass");
props.setProperty("sslmode", "verify-full");
props.setProperty("sslrootcert", "/path/to/ca.crt");
props.setProperty("application_name", "MyApp");
Connection conn = DriverManager.getConnection(url, props);

重要提示

  • 官方文档是获取最新、最准确参数列表的最佳来源:PostgreSQL JDBC 连接参数官方文档

  • 参数名称是大小写敏感的。

  • 并非所有参数都适用于所有版本的服务器和驱动,请根据1、的环境进行测试。

相关推荐
这个DBA有点耶29 分钟前
AI Agent操作数据库的安全边界:只读沙箱、操作预演与自动回滚如何落地?
数据库·sql·程序人生·aigc·数据库架构·dba
ss2731 小时前
Java全栈实战 | 1.3-03 索引原理:联合索引 (a,b,c) 只查 b 走不了索引?B+ 树一图讲透所有索引玄学
java·数据库
聚美智数1 小时前
车辆合格证OCR识别-机动车合格证识别-车辆合格证OCR‑机动车出厂证解析‑整车参数提取 API 接口介绍
数据库·经验分享
DBA_G1 小时前
南大通用技术分享:GBase 8a数据库执行计划架构原理解析
数据库
QQ_21696290961 小时前
基于SpringBoot+Vue的小生活平台的设计与实现
java·数据库·vue.js·spring boot·spring·微信小程序·生活
考虑考虑9 小时前
数据库中的EXISTS
运维·数据库·后端
Wang's Blog10 小时前
Java框架快速入门: Spring Security+OAuth2之数据库和实体类的RBAC改造
java·数据库·spring
梦想平凡11 小时前
百游棋牌源代码开发搭建教程(十):隔离部署、备份恢复与双端验收
java·前端·javascript·数据库·源代码管理
xcLeigh11 小时前
让大模型长出手脚,自己写SQL查数据库(Function Calling初探)
数据库·人工智能·sql·时序数据库·timechoai
yume_sibai12 小时前
06-Rust Web 开发实战(Axum 框架 + 数据库 + JWT 认证 + 中间件 + 部署)
前端·数据库·rust