pub struct Pools {
pub config: Config,
pub pool_opts: PoolOpts,
/* private fields */
}Expand description
每个 Pools 实例使用独立的连接池,避免不同实例之间的锁竞争 参考 mysql crate 的 Pool 设计
Fields§
§config: Config配置
pool_opts: PoolOpts连接池选项
Implementations§
Source§impl Pools
impl Pools
Sourcepub fn get_guard(&mut self) -> Result<ConnectionGuard<'_>, String>
pub fn get_guard(&mut self) -> Result<ConnectionGuard<'_>, String>
获取连接守卫(自动管理连接生命周期)
Sourcepub fn new(config: Config, pool_opts: PoolOpts) -> Result<Self, String>
pub fn new(config: Config, pool_opts: PoolOpts) -> Result<Self, String>
创建新的连接池(参考 mysql 的 Pool::new 方式)
§参数
config- 数据库配置pool_opts- 连接池选项(可选,默认使用 PoolOpts::default())
§示例
use br_pgsql::pools::Pools;
use br_pgsql::config::{Config, PoolConstraints, PoolOpts};
let config = Config::new(&json::object! {
hostname: "localhost",
hostport: 5432,
// ...
})?;
let constraints = PoolConstraints::new(0, 400)?;
let pool_opts = PoolOpts::default()
.with_constraints(constraints);
let pools = Pools::new(config, pool_opts)?;Sourcepub fn get_connect(&mut self) -> Result<PgsqlConnect, String>
pub fn get_connect(&mut self) -> Result<PgsqlConnect, String>
获取连接 —— 优化:减少锁持有时间,优先复用有效连接,改进等待策略
Sourcepub fn release_conn(&self, conn: PgsqlConnect)
pub fn release_conn(&self, conn: PgsqlConnect)
把连接放回池子(显式归还),如果连接无效或池子已满则丢弃 优化:使用快速检查,减少锁持有时间,优化池满处理
Sourcepub fn idle_pool_size(&self) -> usize
pub fn idle_pool_size(&self) -> usize
获取当前连接池中的空闲连接数量
Sourcepub fn total_connections(&self) -> usize
pub fn total_connections(&self) -> usize
获取总连接数量(包括已借出的)
Sourcepub fn borrowed_connections(&self) -> usize
pub fn borrowed_connections(&self) -> usize
获取已借出的连接数量
Sourcepub fn usage_rate(&self) -> f64
pub fn usage_rate(&self) -> f64
获取连接池使用率(0.0 - 1.0)
Sourcepub fn health_status(&self) -> String
pub fn health_status(&self) -> String
获取连接池健康状态
Sourcepub fn new_with_size(config: Config, size: usize) -> Result<Self, String>
pub fn new_with_size(config: Config, size: usize) -> Result<Self, String>
兼容旧版本的 new 方法(使用 size 参数) 推荐使用 new(config, pool_opts) 方法
Sourcepub fn cleanup_idle_connections(&self) -> usize
pub fn cleanup_idle_connections(&self) -> usize
清除无效连接的方法 返回清理的连接数量 优化:使用快速检查,减少开销
Trait Implementations§
Auto Trait Implementations§
impl Freeze for Pools
impl RefUnwindSafe for Pools
impl Send for Pools
impl Sync for Pools
impl Unpin for Pools
impl UnwindSafe for Pools
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more