当前位置: 首页 > news >正文

PostgreSQL JDBC 连接参数大全

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

jdbc:postgresql://host:port/database?param1=value1&param2=value2&...

或者通过 Properties 对象设置。

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


一、 基础连接参数

参数名描述示例值默认值
user连接数据库的用户名myuser-
password连接数据库的密码mypass-
database要连接的数据库名(也可以在 URL 路径中指定)mydb与用户名相同
host数据库服务器地址(也可以在 URL 主机部分指定)localhostlocalhost
port数据库服务器端口(也可以在 URL 端口部分指定)54325432
sslmodeSSL 连接模式,控制安全级别disable, require, verify-ca, verify-fullprefer
ssl已废弃,建议使用 sslmodetrue, falsefalse

二、 连接池与超时控制

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

三、 性能与网络相关

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

四、 日志与调试

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

五、 SSL/TLS 安全相关

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

六、 认证与 Kerberos

参数名描述示例值默认值
gsslib使用 GSSAPI 认证时,选择使用原生实现还是纯 Java 实现auto, sspi(Windows), gssapi(Unix)auto
jaasApplicationNameJAAS 配置的登录模块名pgjdbcpgjdbc
jaasLogin是否使用 JAAS 登录true, falsetrue
kerberosServerNameKerberos 服务主体名称postgrespostgres
useSpnego是否使用 SPNEGO 进行 GSSAPI 认证true, falsefalse

七、 其他高级参数

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

使用示例

1. URL 方式
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 方式
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、的环境进行测试。

http://www.dtcms.com/a/473519.html

相关文章:

  • 【SpringBoot从初学者到专家的成长11】Spring Boot中的application.properties与application.yml详解
  • 简述你对于网站建设的认识h5微网站开发
  • OpenHarmony IMF输入法框架全解析:从原理到自定义输入法开发实战指南
  • LabVIEW的PID控制器带报警仿真系统
  • WordPress--代码块添加折叠和展开功能
  • 爱站网能不能挖掘关键词做网站Linux
  • 在单台电脑上管理多个 GitHub 账户并解决推送问题
  • 计算机毕设选题推荐:基于Hadoop和Python的游戏销售大数据可视化分析系统
  • kanass入门到实战(17) - 如何进行工时管理,有效度量项目资源
  • 汽车角雷达波形设计与速度模糊解决方法研究——论文阅读
  • Node.js+Prisma性能优化:分页查询与事务处理实战
  • 网站建站授权模板下载wordpress爬虫ca
  • 做的网站怎么联网长春制作网站软件
  • FPGA 中的 AXI 总线介绍
  • 指针和动态分配
  • 【OPENGL ES 3.0 学习笔记】第一天:什么是EGL
  • 【第十七周】自然语言处理的学习笔记02
  • 解锁LangChain:Python构建大语言模型应用全攻略
  • Android 事件分发学习心得
  • TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 使用Keras实现分类问题
  • Happens-Before原则
  • 自己设置网站怎么做永远网站建设
  • 做网站的软件景宁县建设局网站
  • react多文件分片上传——支持拖拽与进度展示
  • Excel如何合并单元格?【图文详解】Excel合并单元格技巧?单元格合并高阶操作?
  • Fabric.js 完全指南:从入门到实战的Canvas绘图引擎详解
  • 学网站建设要多少钱遵义网站建设网站
  • 数据分析:Python懂车帝汽车数据分析可视化系统 爬虫(Django+Vue+销量分析 源码+文档)✅
  • 从Java集合到云原生现代数据管理的演进之路
  • 03_pod详解