pub struct PoolConfig {Show 13 fields
pub max_size: u32,
pub min_idle: u32,
pub acquire_timeout: Duration,
pub idle_timeout: Duration,
pub max_lifetime: Duration,
pub connection_timeout: Duration,
pub tls: Option<TlsConfig>,
pub query_timeout: Option<Duration>,
pub max_rows: Option<usize>,
pub memory_limit: Option<usize>,
pub on_event: Option<PoolEventCallback>,
pub test_before_acquire: bool,
pub prewarm: bool,
}Expand description
连接池配置
Fields§
§max_size: u32最大连接数
min_idle: u32最小空闲连接数
acquire_timeout: Duration获取连接超时时间
idle_timeout: Duration空闲连接超时时间
max_lifetime: Duration连接最大存活时间
connection_timeout: Duration连接建立超时时间
tls: Option<TlsConfig>TLS 配置
query_timeout: Option<Duration>SQL 执行超时(默认 30 秒)
max_rows: Option<usize>单次查询最大返回行数(默认无限制)
memory_limit: Option<usize>内存使用上限(字节,默认无限制)
on_event: Option<PoolEventCallback>连接池事件回调
test_before_acquire: boolacquire 时是否执行 ping 验证连接存活(默认 false)。
开启后,从空闲队列取出的连接会先执行 ping() 验证网络连通性,
ping 失败的连接会被丢弃并重新 acquire。
注意:开启此选项会增加每次 acquire 的延迟(一次额外的网络 RTT)。 适用于 DB 可能重启且不能容忍首次查询失败的场景。
prewarm: bool连接池预热:启用后池创建时立即建立 min_idle 个连接(默认 false)。
预热后首次 acquire 延迟 < 10ms(对比冷启动 < 100ms)。
§示例
ⓘ
let config = PoolConfig::default().with_prewarm(true);
let pool = Pool::new(config, factory).await?;
// 此时池中已有 min_idle 个连接Implementations§
Trait Implementations§
Source§impl Clone for PoolConfig
impl Clone for PoolConfig
Auto Trait Implementations§
impl !RefUnwindSafe for PoolConfig
impl !UnwindSafe for PoolConfig
impl Freeze for PoolConfig
impl Send for PoolConfig
impl Sync for PoolConfig
impl Unpin for PoolConfig
impl UnsafeUnpin for PoolConfig
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
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more