Npgsql .net 版本的PostgreSQL数据库连接字符串及参数
这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战」。
Npgsql 是.net 版本的postgreSQL的连接类库,当我们使用.net 进行PostgreSQL的相关开发时,首先接触的就是Npgsql,如果有兴趣的,可以去看看其源代码是怎么写的。
- 📢欢迎点赞 :👍 收藏 ⭐留言 📝 如有错误敬请指正,赐人玫瑰,手留余香!
- 📢本文作者:由webmote 原创,首发于 【CSDN】
- 📢作者格言: 生活在于折腾,当你不折腾生活时,生活就开始折腾你,让我们一起加油!💪💪💪
1 连接字符串
PostgreSQL的精简版本连接字符串如下:
"Host=xxxx;Port=5432;Database=postgres;Username=postgres;Password=xxxxx;"
连接字符串的格式是 keyword1=value;keyword2=value;
, Key不区分大小写,每组keyvalue,均使用英文分号分割开。
注意:Npgsql实现的链接库仅支持下列章节列出的关键字。
2 基本参数说明
范围 | 描述 | 默认 |
---|---|---|
Host | 指定运行 PostgreSQL 的主机名。可以指定多个主机,(逗号分隔多主机). 如果该值以斜杠开头,则将其用作 Unix 域套接字的目录 | 必需的 |
Port | PostgreSQL 服务的 TCP 端口。 | 默认: 5432 |
Database | 要连接的 PostgreSQL 数据库。 | 默认:与用户名相同 |
Username | 要连接的用户名。如果使用 IntegratedSecurity,则不需要。 | PGUSER |
Password | 要连接的密码。如果使用 IntegratedSecurity,则不需要。 | PGPASSWORD |
Passfile | PostgreSQL 密码文件 (PGPASSFILE) 的路径,从中获取密码。 | PGPASS文件 |
3. 安全和加密参数
参数 | 描述 | 默认 | |
---|---|---|---|
SSL Mode | 控制 SSL 是否开启, | 6.0+推荐 | |
Trust Server Certificate | 是否信任服务证书而不用验证它. | false | |
Client Certificate | 客户端证书路径 | PGSSLCERT | |
Client Certificate Key | 证书的Key | PGSSLKEY | |
Root Certificate | 验证服务器证书的根证书路径 | PGSSLROOTCERT | |
Check Certificate Revocation | 授权后是否检查证书是否撤销 | 6.0+ 为true | |
Integrated Security | 是否混合验证 (GSS/SSPI). | false | |
Persist Security Info | 是否设置连接密码为敏感信息,如果是,则获取连接字符串时不返回密码 | false | |
Kerberos Service Name | Kerberos 服务器名称 | postgres | |
Include Realm | 授权使用的Kerberos realm | ||
Include Error Detail | 当激活时,PostgreSQL错误和通知详情包含在 PostgresException.Detail 和 PostgresNotice.Detail内. | false | |
Log Parameters | 如果激活, 命令中的参数值被记录到日志 | false |
4.链接池参数
重要章节:
参数 | 描述 | 默认 |
---|---|---|
Pooling | 是否激活链接池. | true ,默认激活 |
Minimum Pool Size | 最小链接池数目. | 0 |
Maximum Pool Size | 最大链接池数目. | 3.1+版本是100 ,以前版本是 20 |
Connection Idle Lifetime | 单位:秒。如果链接数超过了最小链接数字限定,那么在关闭池子中的空闲链接时等待的时间 | 300 |
Connection Pruning Interval | 链接修剪间隔(多长时间去处理池子中的空闲链接们) | 10 |
ConnectionLifetime | 链接的生命周期有多长,在从池子中返回链接时判断,如果超过了则关闭销毁该链接. 这在故障转移和负载均衡上非常有效 | 0 (disabled) |
5 超时和心跳保持参数
极重要章节:
参数 | 描述 | 默认 |
---|---|---|
Timeout | 单位秒,链接的建立链接的超时时间 | 15 |
Command Timeout | 单位秒,链接的命令执行超时时间,如果设置为0,则表示不超时 | 30 |
Internal Command Timeout | 执行一个内部命令时的超时时间. -1 用 CommandTimeout, 0 不超时. | -1 |
Cancellation Timeout | 取消一个查询时的超时时间 ,-1 跳过等待, 0 无限等待. | 2000 |
Keepalive | 心跳时间,保活链接. | 0 (disabled) |
Tcp Keepalive | 是否用系统默认的tcp keepalive 作为心跳参数 | false |
Tcp Keepalive Time | 单位毫秒,tcp保活时间. 仅支持 Windows. | 0 (disabled) |
Tcp Keepalive Interval | 单位毫秒,没有ACK收到时,连续心跳包的间隔时间 仅支持Windows. | Tcp Keepalive Time 值 |
6 性能参数
参数 | 描述 | 默认值 |
---|---|---|
Max Auto Prepare | 在任何给定点可以自动准备的最大 SQL 语句数。超过这个数字,最近最少使用的语句将被回收。0禁用自动准备。 | 0 |
Auto Prepare Min Usages | SQL 语句在自动准备之前使用的最少使用次数。 | 5 |
Use Perf Counters | 使 Npgsql 将有关连接使用的性能信息写入 Windows 性能计数器。 在 5.0 + 版本后删除。 | false |
Read Buffer Size | 确定 Npgsql 在读取时使用的内部缓冲区的大小。如果从数据库传输大字节流值,增加会提高性能。 | 8192 |
Write Buffer Size | 确定 Npgsql 在写入时使用的内部缓冲区的大小。如果将大字节流值传输到数据库,增加会提高性能。 | 8192 |
Socket Receive Buffer Size | 确定套接字接收缓冲区的大小。 | System-dependent |
Socket Send Buffer Size | 确定套接字发送缓冲区的大小。 | System-dependent |
No Reset On Close | 在某些情况下,通过在返回池时不重置连接状态来提高性能,但以泄漏状态为代价。仅在基准测试显示性能改进时使用 | false |
7 故障转移和负载平衡参数
参数 | 描述 | 默认 |
---|---|---|
Target Session Attributes | 确定首选的 PostgreSQL 目标服务器类型。 | PGTARGETSESSIONATTRS, Any |
Load Balance Hosts | 通过负载在多个主机之间实现平衡。 | false |
Host Recheck Seconds | 控制主机的缓存状态将被视为有效的时间。 | 10 |
8 一些小甜点的参数
参数 | 描述 | 默认 |
---|---|---|
Options | 指定任何有效 PostgreSQL 连接选项, 被单个刻度包围。在 5.0 中引入。 | PGOPTIONS |
Application Name | 要在连接启动期间发送到后端的可选应用程序名称参数。 | |
Enlist | 是否在环境 TransactionScope 中登记。 | true |
Search Path | 设置Schema搜索路径。 | |
Client Encoding | 获取或设置 client_encoding 参数。 | PGCLIENTENCODING |
Encoding | 获取或设置将用于编码/解码 PostgreSQL 字符串数据的 .NET 编码。 | UTF8 |
Timezone | 获取或设置会话时区。 | PGTZ |
EF Template Database | 在实体框架中创建数据库时指定的数据库模板。 | template1 |
EF Admin Database | 在实体框架中创建和删除数据库时要指定的数据库管理员。 | template1 |
Load Table Composites | 加载表复合类型定义,而不仅仅是独立的复合类型。 | 错误的 |
Array Nullability Mode | 配置作为对象实例请求时返回值类型数组的方式。可能的值为:Never(值类型的数组总是作为不可空数组返回)、Always(值类型的数组总是作为可空数组返回)和 PerInstance(返回的数组类型在运行时确定)。 | Never |
9 兼容模式
参数 | 描述 | 默认 |
---|---|---|
Server Compatibility Mode | 特殊 PostgreSQL 服务器类型的兼容模式。目前支持“Redshift”,以及“NoTypeLoading”,它将绕过来自 PostgreSQL 目录表的正常类型加载机制并支持基本类型的硬编码列表。 | none |
10 环境变量
除了链接字符串参数外,Npgsql还能识别环境变量。
环境变量 | 描述 |
---|---|
PGUSER | 行为同 链接参数 User |
PGPASSWORD | 行为同 链接参password |
PGPASSFILE | 行为同 链接参数passfile |
PGSSLCERT | 行为同 链接参数 sslcert |
PGSSLKEY | 行为同 链接参数 sslkey |
PGSSLROOTCERT | 行为同 链接参数 sslrootcert |
PGCLIENTENCODING | 行为同 链接参数 client_encoding |
PGTZ | 行为同 链接参数 default time zone. |
PGOPTIONS | 行为同 链接参数 options |
11. 小结
介绍这些参数很枯燥,有啥意义呢,不就时链接个数据库吗,搞这么复杂?
哎,谁遇到问题谁知道,这些参数个个救命,改天我再和你聊聊怎么解救了我的。
👓都看到这了,还在乎点个赞吗?
👓都点赞了,还在乎一个收藏吗?
👓都收藏了,还在乎一个评论吗?
转载自:https://juejin.cn/post/7028952585121824804