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 连接模式,控制安全级别 disable, require, verify-ca, verify-full prefer
ssl 已废弃,建议使用 sslmode true, false false

二、 连接池与超时控制

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

三、 性能与网络相关

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

四、 日志与调试

参数名 描述 示例值 默认值
loggerLevel 设置 JDBC 驱动的日志级别 OFF, DEBUG, TRACE OFF
loggerFile 指定日志输出文件 /tmp/pgjdbc.log -
logUnclosedConnections 当连接未被关闭而被垃圾回收时,是否记录警告 true, false false
allowEncodingChanges 是否允许在连接过程中改变客户端编码 true, false 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 实现 auto, sspi(Windows), gssapi(Unix) auto
jaasApplicationName JAAS 配置的登录模块名 pgjdbc pgjdbc
jaasLogin 是否使用 JAAS 登录 true, false true
kerberosServerName Kerberos 服务主体名称 postgres postgres
useSpnego 是否使用 SPNEGO 进行 GSSAPI 认证 true, false false

七、 其他高级参数

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

相关推荐
小小龙学IT7 小时前
Python SQLAlchemy 2.0 深度解析:从 Core 到 ORM 的数据访问双引擎
开发语言·数据库·python
DongQiShanRen7 小时前
裁决台账双向互校(上):名册与实物的第一道对账
java·linux·运维·数据库·人工智能·自然语言处理·数据挖掘
ShineWinsu8 小时前
对于Redis:AOF持久化的解析
linux·数据库·redis·缓存·面试·持久化·aof
仍然.8 小时前
Redis---集群
数据库·redis·缓存
Allstar_438 小时前
DV/PV 验证管理:为量产放行提供完整证据链——全星研发项目管理 APQP 软件系统汽车电子行业专业级研发项目管理平台
数据库·汽车
小范的技术工坊8 小时前
向量数据库解决了什么问题?
数据库
小蒜学长8 小时前
在线保险服务与管理平台的设计与实现(代码+数据库+LW)
java·数据库·spring boot·后端·服务平台·在线保险
做运维的阿瑞9 小时前
SQL 面试高频:用户、商品、订单三表查询全解析
数据库·sql·mysql
CJi0NG10 小时前
【自用】MySQL - 语法:DDL、DML、DQL、DCL
数据库·mysql
姜鱼问生10 小时前
数据库备份 + 灾难恢复演练:从 dump 恢复全库
运维·数据库