如何配置Npgsql连接PostgreSQL集群读写与只读节点?
Npgsql连接Stackres集群的连接字符串配置及连接池混用问题
一、连接字符串的正确性
你给出的连接字符串格式是正确的:
"Host=db-read-write-server, db-read-only-server;Username=test;Password=test;Target Session Attributes=prefer-standby"
Host参数通过逗号分隔多个节点地址,Npgsql会自动识别所有提供的节点Target Session Attributes=prefer-standby表示优先选择只读节点建立连接,当所有只读节点不可用时,才会 fallback 到主节点,完全适配Stackres集群主从架构的只读负载需求- 节点的排列顺序不影响最终的节点选择逻辑,Npgsql会根据会话属性筛选符合条件的节点
二、负载分发与连接池的兼容性
负载分发配置和连接池可以完全混合使用,你给出的示例连接字符串是合法且有效的:
"Host=db-read-write-server, db-read-only-server;Username=test;Password=test;Target Session Attributes=prefer-standby;Pooling=true;Maximum Pool Size=4"
- 连接池(
Pooling=true)会正常维护数据库连接的复用,避免频繁创建销毁连接的开销 - Npgsql在从连接池获取连接时,依然会遵循
Target Session Attributes的规则,选择匹配的节点 - 注意根据WebAPI的并发量合理调整
Maximum Pool Size,过小可能导致连接等待,过大则可能占用过多数据库资源
内容的提问来源于stack exchange,提问作者Waldo
相关产品推荐
相关产品推荐

