pub struct GraphPool { /* private fields */ }Expand description
图数据库连接池
v3.1.0 改进:从 Arc<Mutex<Vec<GraphConnection>>> 改为
Arc<ArrayQueue<GraphConnection>> + AtomicU32 + Notify,
使用无锁 MPMC 队列消除锁竞争,与 sz-orm-core 连接池设计一致。
Implementations§
Source§impl GraphPool
impl GraphPool
pub fn new(config: GraphConfig) -> Self
pub fn config(&self) -> &GraphConfig
Sourcepub async fn acquire(&self) -> Result<GraphConnection, GraphError>
pub async fn acquire(&self) -> Result<GraphConnection, GraphError>
获取连接
优先从空闲队列取;若空且未超 max_pool_size 则新建; 若已满则等待 release 唤醒。
Sourcepub async fn acquire_timeout(
&self,
timeout: Duration,
) -> Result<GraphConnection, GraphError>
pub async fn acquire_timeout( &self, timeout: Duration, ) -> Result<GraphConnection, GraphError>
带超时的 acquire
Sourcepub async fn release(&self, conn: GraphConnection)
pub async fn release(&self, conn: GraphConnection)
归还连接到空闲队列
Sourcepub fn idle_count(&self) -> usize
pub fn idle_count(&self) -> usize
空闲连接数
Sourcepub fn total_count(&self) -> u32
pub fn total_count(&self) -> u32
总连接数(idle + borrowed)
Sourcepub fn waiters_count(&self) -> u32
pub fn waiters_count(&self) -> u32
等待者数
Sourcepub fn close(&self)
pub fn close(&self)
关闭连接池
设置 closed 标志,后续 acquire 返回错误,release 直接丢弃。 已借出的连接不受影响(调用方自行 disconnect)。
Sourcepub fn status(&self) -> GraphPoolStatus
pub fn status(&self) -> GraphPoolStatus
获取池状态快照
Trait Implementations§
Auto Trait Implementations§
impl !Freeze for GraphPool
impl RefUnwindSafe for GraphPool
impl Send for GraphPool
impl Sync for GraphPool
impl Unpin for GraphPool
impl UnsafeUnpin for GraphPool
impl UnwindSafe for GraphPool
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