zoukankan      html  css  js  c++  java
  • 连接池 druid(阿里巴巴的框架)

     
    引用自:http://blog.163.com/hongwei_benbear/blog/static/1183952912013518405588/
    说的是现在最好的连接池
     
    注:
    • 属性跟 dbcp 连接池的差不多.
    • 加入了 filters 监控(value 值要有 stat)   在web.xml里加入下面的Servlet  就可查看  例: http://localhost:8080/BenbearGame_test/druid
    • 跟spring 一起用时( 只要配置  initialSize      maxActive   就可以),加入其实配置性能不好,官方文档里也不没加其它属性
     
    <!-- 数据源 org.apache.commons.dbcp.BasicDataSource com.alibaba.druid.pool.DruidDataSource -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost/mybatis" />
    <property name="username" value="root" />
    <property name="password" value="admin" />


    <!-- druid 连接池的 -->
    <property name="filters" value="stat" />

    <!-- 下面druid 和 dbcp 连接池通用的 ↓↓↓↓↓↓↓↓↓↓↓↓ -->
    <!--maxActive: 最大连接数量 -->
    <property name="maxActive" value="20" />
    <!--initialSize: 初始化连接 -->
    <property name="initialSize" value="5" />

    </bean> 
     
     
    filters 监控 Servlet
    <servlet>
    <servlet-name>DruidStatView<rvlet-name>
    <servlet-class>com.alibaba.druid.support.http.StatViewServlet<rvlet-class>
    <rvlet>
    <servlet-mapping>
    <servlet-name>DruidStatView<rvlet-name>
    <url-pattern>/druid/*</url-pattern>
    <rvlet-mapping> 
     
     
     
     

    ExecuteCount

    当前sql已执行次数

     

    ExecTime

    当前sql已执行时间

     

    ExecMax

    当前sql最大执行时间

     

    Txn

    当前运行的事务数量

     

    Error

    当前sql执行出错的数目

     

    Update

    当前sql更新或者删除操作中已经影响的行数

     

    FetchRow

    当前sql操作中已经读取的行数

     

    Running

    当前sql正在运行的数目

     

    Concurrent

    当前sql最大并发执行数 

     

    ExecHisto 

    当前sql做execute操作的时间分布数组

    分为0-1,1-10,10-100,100-1000,>1000,5个时间分布区域,单位为ms

    ExecRsHisto 

    当前sql做execute操作和resultSet

    打开至关闭的时间总和分布数组

    同上

    FetchRowHisto

    当前sql查询时间分布数组

    同上

    UpdateHisto 

    当前sql更新、删除时间分布数组

    同上

     
     
     
    配置 缺省值 说明
    name   配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通过名字来区分开来。
    如果没有配置,将会生成一个名字,格式是:"DataSource-" + System.identityHashCode(this)
    jdbcUrl   连接数据库的url,不同数据库不一样。例如:
    mysql : jdbc:mysql://10.20.153.104:3306/druid2 
    oracle : jdbc:oracle:thin:@10.20.149.85:1521:ocnauto
    username   连接数据库的用户名
    password   连接数据库的密码。如果你不希望密码直接写在配置文件中,可以使用ConfigFilter。详细看这里:https://github.com/alibaba/druid/wiki/%E4%BD%BF%E7%94%A8ConfigFilter
    driverClassName 根据url自动识别 这一项可配可不配,如果不配置druid会根据url自动识别dbType,然后选择相应的driverClassName
    initialSize 0 初始化时建立物理连接的个数。初始化发生在显示调用init方法,或者第一次getConnection时
    maxActive 8 最大连接池数量
    maxIdle 8 已经不再使用,配置了也没效果
    minIdle   最小连接池数量
    maxWait   获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
    poolPreparedStatements false 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。在mysql下建议关闭。
    maxOpenPreparedStatements -1 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100
    validationQuery   用来检测连接是否有效的sql,要求是一个查询语句。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会其作用。
    testOnBorrow true 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
    testOnReturn false 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能
    testWhileIdle false 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
    timeBetweenEvictionRunsMillis   有两个含义:
    1) Destroy线程会检测连接的间隔时间 2) testWhileIdle的判断依据,详细看testWhileIdle属性的说明
    numTestsPerEvictionRun   不再使用,一个DruidDataSource只支持一个EvictionRun
    minEvictableIdleTimeMillis    
    connectionInitSqls   物理连接初始化的时候执行的sql
    exceptionSorter 根据dbType自动识别 当数据库抛出一些不可恢复的异常时,抛弃连接
    filters   属性类型是字符串,通过别名的方式配置扩展插件,常用的插件有:
    监控统计用的filter:stat 日志用的filter:log4j 防御sql注入的filter:wall
    proxyFilters   类型是List<com.alibaba.druid.filter.Filter>,如果同时配置了filters和proxyFilters,是组合关系,并非替换关系
  • 相关阅读:
    界面控件DevExpress WPF入门 表达式编辑器功能
    Telerik UI for WPF全新版本——拥有Office2019高对比度主题
    DevExpress报表控件v21.2 全新的Visual Studio报表设计器
    报告生成器FastReport .NET入门指南 在Linux中启动应用程序
    文档控件DevExpress Office File API v21.2 自定义字体加载引擎
    UI组件库Kendo UI for Angular入门 如何开始使用图表功能
    WPF界面工具Telerik UI for WPF入门级教程 设置一个主题(二)
    DevExtreme初级入门教程(React篇) TypeScript支持
    报表开发利器FastReport .NET v2022.1 添加关键对象和属性
    python项目打包(一) setup.py、Python源代码项目结构
  • 原文地址:https://www.cnblogs.com/jym-sunshine/p/4726327.html
Copyright © 2011-2022 走看看