• 数据库连接池的最小连接为什么是Idle语义


    druid 的 minIdle -》 maxActive 和 hikariCP 的 minimumIdle -》 maximumPoolSize, 他们都是为了维护连接池内有足够的连接可用, 并且应对一定的流量突增; 这一点和线程池的 corePoolSize =》maxPoolSize 语义类似

    执行逻辑

    当前总连接数 = 池内连接数(空闲) + 活跃连接数

    在总连接不超过 max 的前提下,如果池内空闲连接数 < minIdle , 则会去创建连接

    线程池 ThreadPoolExecutor 里边的线程其实 worker角色, corePoolSize 这些线程是一直处于工作状态的,
    而db连接池只是连接资源的容器,归还到db连接池内的连接就是空闲的,所以是 minIdle

    一般建议 minimumIdle 和 maximumPoolSize 设置成一样大,因为db连接建立非常耗时;

    比如hikariCP就直接建议不单独设置 minimumIdle,默认和max一样大
    for maximum performance and responsiveness to spike demands, we recommend not setting this value and instead allowing HikariCP to act as a fixed size connection pool. Default: same as maximumPoolSize

    可以把 minIdle 概念换成 minSize最小连接数(空闲+活跃)吗?

    那么当前连接数小于 minSize 就直接判断需要创建新的连接; 当前连接数 == minSize后,如果再次申请连接,这个时候要去判断空闲状态的是否够用,不够用才去继续创建连接 直到 max; 从这个角度看是可以的

    空闲超时检测,minSize 内和 min ~ max之间的时长区别,逻辑上也是可以

    区别是,当较繁忙的时候 (active连接较多),minIdle 的判断逻辑会比minSize更早就去填充连接池 性能更优

    总之,代码逻辑要和语义匹配

    本文来自博客园,作者:mushishi,转载请注明原文链接:https://www.cnblogs.com/mushishi/p/14665218.html

  • 相关阅读:
    锚点anchorPoint
    核心动画2
    核心动画1
    CALayer()CoreAnimation 核心动画 简称 CA
    storyBoard
    本地通知UILocalNotification
    CoreImage 可以用滤镜来处理图片,比如修改饱和度,亮度,对比度等
    GCD(2)
    NSOperation(多线程)2
    给你个图片的网络地址url,如何获取该图片的尺寸
  • 原文地址:https://www.cnblogs.com/mushishi/p/14665218.html
Copyright © 2020-2023  润新知