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、的环境进行测试。

相关推荐
Roye_ack3 小时前
【黑马点评 - 实战篇01】Redis项目实战(Windows安装Redis6.2.6 + 发送验证码 + 短信验证码登录注册 + 拦截器链 - 登录校验)
数据库·spring boot·redis·缓存·mybatisplus·session·黑马点评
野犬寒鸦4 小时前
从零起步学习MySQL || 第一章:初识MySQL及深入理解内部数据类型
java·服务器·数据库·后端·mysql
华军4 小时前
数据库事务的并发
数据库
.YYY4 小时前
My SQL--创建数据库、表
数据库·sql
橙狮科技4 小时前
大厂MongoDB开发运维规范
运维·数据库·mongodb
技术砖家爱分享5 小时前
达梦守护集群部署安装
数据库·database
APItesterCris5 小时前
Node.js/Python 实战:编写一个淘宝商品数据采集器
大数据·开发语言·数据库·node.js
九河云5 小时前
传统数据安全措施与云计算数据安全的区别
运维·服务器·数据库·云计算
初听于你5 小时前
MySQL数据库面试高频问题及解析
数据库·sql·mysql·oracle·面试